K8s 版本升级(1.25→1.28):kubeadm 升级过程中的证书续期与插件兼容处理
·
Kubernetes 版本升级(1.25→1.28):kubeadm 证书续期与插件兼容处理指南
一、证书续期核心步骤
-
检查证书有效期
升级前执行:kubeadm certs check-expiration重点关注输出中的
RESIDUAL TIME列,若剩余时间 < 180 天需续期 -
手动续期证书(推荐在升级前完成)
kubeadm certs renew all # 续期所有证书 systemctl restart kubelet -
升级过程中的自动续期
kubeadm 在upgrade apply时会自动处理:- 若证书剩余有效期 > 180 天:保留原证书
- 若证书即将过期:自动生成新证书(有效期 1 年)
- 验证命令:
openssl x509 -noout -dates -in /etc/kubernetes/pki/apiserver.crt
二、kubeadm 升级流程
graph TD
A[备份集群] --> B[升级控制平面]
B --> C[升级工作节点]
C --> D[验证集群状态]
-
控制平面升级
# 升级 kubeadm 工具 apt-get update && apt-get install kubeadm=1.28.0-00 # 检查升级计划 kubeadm upgrade plan # 执行升级(自动处理证书) kubeadm upgrade apply v1.28.0 # 升级节点组件 apt-get install kubelet=1.28.0-00 kubectl=1.28.0-00 systemctl daemon-reload systemctl restart kubelet -
工作节点升级
kubectl drain <node-name> --ignore-daemonsets apt-get install kubeadm=1.28.0-00 kubelet=1.28.0-00 kubeadm upgrade node systemctl restart kubelet kubectl uncordon <node-name>
三、插件兼容性处理
-
关键插件检查清单
插件类型 1.28 兼容要求 验证方法 CNI 网络 Calico ≥ v3.25 calicoctl versionCSI 存储 需支持 v1.28 API 供应商文档 CoreDNS ≥ 1.10.1 kubectl get deployment coredns -n kube-system -o yamlkube-proxy 需匹配 k8s 版本 DaemonSet 镜像版本 -
常见问题处理
-
Docker 弃用问题:
1.28 默认使用 containerd,若需兼容 Docker:# 在所有节点安装 cri-dockerd git clone https://github.com/Mirantis/cri-dockerd.git cd cri-dockerd && make -
API 版本废弃:
检查已废弃 API:kubectl convert --list-versions | grep deprecated
-
四、升级后验证
-
集群状态检查
kubectl get nodes -o wide # 所有节点 Ready kubectl get pods -n kube-system # 核心组件 Running -
证书状态复查
kubeadm certs check-expiration | grep -v 'never' -
网络验证
kubectl run test --image=nginx --restart=Never kubectl exec test -- curl -I http://google.com
关键注意事项:
- 始终在升级前备份
/etc/kubernetes和/var/lib/etcd- 生产环境建议先升级测试集群
- 关注 kubelet 与 API Server 的版本差(不超过 2 个 minor 版本)
- 使用
kubectl convert处理废弃 API 资源
更多推荐
所有评论(0)