在Kubernetes集群中,CoreDNS负责域名和IP解析,可以作为内网的DNS解析服务器。升级CoreDNS版本可以解决一些bug和漏洞,从而稳定系统的性能。本篇教程介绍了 CoreDNS 升级过程。
一、准备
必须拥有一个 Kubernetes 的集群,同时必须配置 kubectl 命令行工具与集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果还没有集群,可以通过 Minikube 构建一个自己的集群,或者可以使用下面的 Kubernetes 练习环境之一:
- Killercoda
- 玩转 Kubernetes
Kubernetes 服务器版本必须不低于版本 v1.9. 要获知版本信息,请输入 kubectl version.
二、关于CoreDNS
CoreDNS 是一个灵活可扩展的 DNS 服务器,可以作为 Kubernetes 集群 DNS。 与 Kubernetes 一样,CoreDNS 项目由 CNCF 托管。
通过替换现有集群部署中的 kube-dns,或者使用 kubeadm 等工具来为部署和升级集群, 可以在集群中使用 CoreDNS 而非 kube-dns。
三、迁移到CoreDNS
使用 kubeadm 升级现有集群:
在 Kubernetes 1.21 版本中,kubeadm 移除了对将 kube-dns 作为 DNS 应用的支持。 对于 kubeadm v1.29,所支持的唯一的集群 DNS 应用是 CoreDNS。当使用 kubeadm 升级使用 kube-dns 的集群时,还可以执行到 CoreDNS 的迁移。 在这种场景中,kubeadm 将基于 kube-dns ConfigMap 生成 CoreDNS 配置(”Corefile”), 保存存根域和上游名称服务器的配置。
四、升级CoreDNS
可以在 CoreDNS version in Kubernetes 页面查看 kubeadm 为不同版本 Kubernetes 所安装的 CoreDNS 版本。如果只想升级 CoreDNS 或使用自己的定制镜像,也可以手动升级 CoreDNS。 在升级集群过程中,请确保现有 CoreDNS 的配置(”Corefile”)被保留下来。如果使用 kubeadm 工具来升级集群,则 kubeadm 可以自动处理保留现有 CoreDNS 配置这一事项。
五、CoreDNS调优
当资源利用方面有问题时,优化 CoreDNS 的配置可能是有用的。