使用 CoreDNS 进行服务发现

本页介绍了 CoreDNS 升级过程以及如何安装 CoreDNS 而不是 kube-dns。

开始之前

你需要一个 Kubernetes 集群,并且必须配置 kubectl 命令行工具才能与你的集群通信。建议在至少有两个节点且不充当控制平面主机的集群上运行本教程。如果你还没有集群,可以使用 minikube 创建一个,或者可以使用以下 Kubernetes playground 之一。

你的 Kubernetes 服务器必须是 v1.9 或更高版本。要检查版本,请输入 kubectl version

关于 CoreDNS

CoreDNS 是一个灵活、可扩展的 DNS 服务器,可以用作 Kubernetes 集群 DNS。与 Kubernetes 一样,CoreDNS 项目由 CNCF 主办。

你可以通过在现有部署中替换 kube-dns,或者使用诸如 kubeadm 之类的工具来部署和升级集群,从而在集群中使用 CoreDNS 而不是 kube-dns。

安装 CoreDNS

对于手动部署或替换 kube-dns,请参阅 CoreDNS 网站上的文档。

迁移到 CoreDNS

使用 kubeadm 升级现有集群

在 Kubernetes 1.21 版本中,kubeadm 移除了对 kube-dns 作为 DNS 应用程序的支持。 对于 kubeadm v1.32,唯一支持的集群 DNS 应用程序是 CoreDNS。

当使用 kubeadm 升级正在使用 kube-dns 的集群时,可以迁移到 CoreDNS。 在这种情况下,kubeadm 会根据 kube-dns ConfigMap 生成 CoreDNS 配置 ("Corefile"),保留存根域和上游名称服务器的配置。

升级 CoreDNS

你可以在页面 Kubernetes 中的 CoreDNS 版本 中查看 kubeadm 为每个 Kubernetes 版本安装的 CoreDNS 版本。

如果你只想升级 CoreDNS 或使用你自己的自定义镜像,可以手动升级 CoreDNS。 有一个有用的 指南和演练 可用,以确保顺利升级。升级集群时,请确保保留现有的 CoreDNS 配置 ("Corefile")。

如果你使用 kubeadm 工具升级集群,kubeadm 可以自动处理保留现有 CoreDNS 配置的问题。

调整 CoreDNS

当资源利用率成为问题时,调整 CoreDNS 的配置可能会很有用。有关更多详细信息,请查看 关于扩展 CoreDNS 的文档

下一步

你可以通过修改 CoreDNS 配置 ("Corefile") 来配置 CoreDNS,以支持比 kube-dns 更多的用例。有关更多信息,请参阅 kubernetes CoreDNS 插件的 文档,或阅读 CoreDNS 博客中的 Kubernetes 的自定义 DNS 条目

上次修改时间:2024 年 1 月 14 日下午 8:29 PST:更新 CoreDNS 安装文档 (0f9ab60a3c)