CoreDNS 组件手动升级指南
更新时间:2024-06-11
CoreDNS 和 K8S 版本的兼容性
CoreDNS 镜像版本 | 支持的 K8S 版本 |
---|---|
1.7.1 | 1.18 |
1.9.4-baidu | 1.20,1.24,1.26,1.28 |
⚠️ 注意:升级 CoreDNS 会导致全集群断网 5 分钟,请做好评估后再进行升级。
升级过程
- 检查集群当前 CoreDNS 镜像版本,命令如下:
kubectl -n kube-system get deployment coredns -o yaml | grep "image:"
示例输出如下:
image: registry.baidubce.com/cce-plugin-pro/coredns:1.7.1
- 修改可能存在的插件名称变更。
如果 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 权限
通过如下命令:
kubectl -n kube-system get clusterrole system:coredns -o yaml
如果看结果中缺少 endpointslices 权限,则通过:
kubectl -n kube-system edit clusterrole system:coredns
增加权限,修改后的 clusterrole 内容如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: system:coredns
rules:
- apiGroups:
- ""
resources:
- endpoints
- services
- pods
- namespaces
verbs:
- list
- watch
- apiGroups:
- discovery.k8s.io
resources:
- endpointslices
verbs:
- list
- watch
- 修改镜像版本
将 coredns 镜像版本升级到希望的版本,如 1.9.4-baidu,命令如下:
kubectl -n kube-system edit deployment coredns
修改后的示例如下:
- 检查升级结果
通过命令:
kubectl -n kube-system get pod -o wide | grep coredns
观察是否所有 pod 都启动成功 通过命令:
kubectl -n kube-system logs <coredns-pod-name> | less -N
检查 coredns pod 是否有错误日志
如上述流程有异常,可发工单处理;如都正常,则升级完成。