使用 CoreDNS 进行服务发现

本页描述了 CoreDNS 升级过程以及如何安装 CoreDNS 来替代 kube-dns。

在开始之前

你需要拥有一个 Kubernetes 集群,并且 kubectl 命令行工具已被配置为与你的集群通信。建议你在至少有两个非控制平面主机的节点组成的集群上运行本教程。如果还没有集群,你可以使用 minikube 创建一个,或者使用以下 Kubernetes 演练场之一。

你的 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.33,唯一支持的集群 DNS 应用是 CoreDNS。

使用 kubeadm 升级使用 kube-dns 的集群时,你可以迁移到 CoreDNS。在这种情况下,kubeadm 会根据 kube-dns 的 ConfigMap 生成 CoreDNS 配置 ("Corefile"),保留 stub domains 和 upstream name server 的配置。

升级 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:更新 CoreDNS 安装文档 (0f9ab60a3c)