如何升级kubectl服务端版本至v1.21以适配客户端解决Selflink问题
Kubernetes服务端版本升级操作指南
当前你客户端版本为v1.21.2,服务端版本为v1.20.7,将服务端升级至v1.21.2即可和客户端版本对齐,同时解决v1.21版本后SelfLink弃用的相关问题。操作前请先完成etcd全量备份,优先在测试集群验证流程后再操作生产集群。
操作步骤(kubeadm搭建集群适用)
1. 所有节点升级kubeadm工具
- Debian/Ubuntu系操作系统执行:
apt remove -y kubeadm apt install -y kubeadm=1.21.2-00
- CentOS/RHEL系操作系统执行:
yum remove -y kubeadm yum install -y kubeadm-1.21.2-0
- 验证版本正确:
kubeadm version
2. 控制平面节点升级
单master集群/多master集群首个master节点操作
- 执行预检查确认升级可行性:
kubeadm upgrade plan - 执行升级命令,交互阶段输入y确认:
kubeadm upgrade apply v1.21.2 - 升级当前节点的kubelet和kubectl:
Debian/Ubuntu:apt install -y kubelet=1.21.2-00 kubectl=1.21.2-00
CentOS/RHEL:yum install -y kubelet-1.21.2-0 kubectl-1.21.2-0 - 重启kubelet服务生效:
systemctl daemon-reload && systemctl restart kubelet
多master集群其余master节点操作
- 执行升级命令:
kubeadm upgrade node - 同上述步骤升级kubelet、kubectl并重启kubelet服务
3. 工作节点升级(逐个操作,避免业务中断)
- 在master节点执行命令驱逐当前待升级节点的Pod,替换
<节点名>为实际节点名称:kubectl drain <节点名> --ignore-daemonsets - 登录待升级worker节点,按照第一步操作安装v1.21.2版本kubeadm
- 执行节点升级命令:
kubeadm upgrade node - 升级当前节点kubelet:
Debian/Ubuntu:apt install -y kubelet=1.21.2-00
CentOS/RHEL:yum install -y kubelet-1.21.2-0 - 重启kubelet服务生效:
systemctl daemon-reload && systemctl restart kubelet - 回到master节点取消节点驱逐:
kubectl uncordon <节点名> - 重复上述流程完成所有工作节点升级
4. 结果验证
- 执行
kubectl version,确认Server Version输出为v1.21.2,和客户端版本一致 - 执行
kubectl get nodes,确认所有节点状态为Ready,版本均显示为v1.21.2 - 验证原有业务运行正常,SelfLink相关弃用警告/报错消失
其他集群部署方式说明
- 二进制部署集群:直接替换各节点kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kubectl等核心组件二进制文件为v1.21.2版本,逐节点重启服务即可
- 云厂商托管集群:直接在对应云平台控制台选择集群版本升级到v1.21.2即可,无需手动操作节点
内容的提问来源于stack exchange,提问作者yunlee
相关产品推荐
相关产品推荐

