CoreDNS 组件手动升级指南
更新时间:2026-03-20
CoreDNS 和 K8S 版本的兼容性
| CoreDNS 镜像版本 | 支持的 K8S 版本 |
|---|---|
1.7.1 |
1.18 |
1.9.4-baidu |
1.20、1.24、1.26、1.28 |
注意: 升级 CoreDNS 会导致全集群断网 5 分钟,请做好评估后再进行升级。
升级过程
以下步骤适用于已获取目标 CCE 集群 kubeconfig,且具备 kube-system 命名空间读写权限的终端环境。1. 检查集群当前 CoreDNS 镜像版本。
在已连接目标集群的终端中执行以下命令,确认当前 CoreDNS 镜像版本:
- 修改可能存在的插件名称变更。
如果 CoreDNS 镜像版本很低(低于 1.6.2,forward 插件旧名称为 proxy),通过如下命令:
kubectl -n kube-system get cm coredns -o yaml
看到所示插件名称不为 forward,而是 proxy,则通过如下命令将其修改为 forward
kubectl -n kube-system get cm coredns -o yaml -
增加
endpointslices权限。执行以下命令检查
system:corednsClusterRole 是否已包含endpointslices权限:Bash1kubectl get clusterrole system:coredns -o yaml如果结果中缺少
endpointslices权限,则执行以下命令编辑 ClusterRole:Bash1kubectl edit clusterrole system:coredns修改后的
ClusterRole内容如下:YAML1apiVersion: rbac.authorization.k8s.io/v1 2kind: ClusterRole 3metadata: 4 labels: 5 kubernetes.io/bootstrapping: rbac-defaults 6 name: system:coredns 7rules: 8 - apiGroups: 9 - "" 10 resources: 11 - endpoints 12 - services 13 - pods 14 - namespaces 15 verbs: 16 - list 17 - watch 18 - apiGroups: 19 - discovery.k8s.io 20 resources: 21 - endpointslices 22 verbs: 23 - list 24 - watch -
修改镜像版本。
执行以下命令编辑
corednsDeployment:Bash1kubectl -n kube-system edit deployment coredns将
image字段中的版本号修改为与当前 K8S 版本兼容的目标 CoreDNS 镜像版本。 -
检查升级结果。
执行以下命令查看 CoreDNS Pod 是否全部启动成功:
Bash1kubectl -n kube-system get pod -o wide | grep coredns执行以下命令检查 CoreDNS Pod 是否存在错误日志:
Bash1kubectl -n kube-system logs <coredns-pod-name> | less -N如上述流程存在异常,可提交工单处理;如检查结果正常,则升级完成。
评价此篇文章
