使用 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.36,唯一支持的集群 DNS 应用程序是 CoreDNS。

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

升级 CoreDNS

你可以在 Kubernetes 中的 CoreDNS 版本页面查看每个 Kubernetes 版本中 kubeadm 安装的 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)