
k8s集群版本升级
1.升级策略
• 始终保持最新
• 每半年升级一次,这样会落后社区1~2个小版本
• 一年升级一次,或者更长,落后版本太多
2.升级策略
升级管理节点 --》升级其他管理节点 --》升级工作节点
注意事项:
- 升级前必须备份所有组件及数据,例如etcd
- 千万不要跨多个版本进行升级,例如1.16升级到1.19
- 驱逐升级节点上的pod,且不可调度
3.进行版本升级
升级管理节点:
有第四个版本号:
kubeadm-1.21.7-0,例如yum install -y kubeadm-1.21.7-00、查看当前集群信息 #kubectl get node NAME STATUS ROLES AGE VERSION cka-master Ready control-plane,master 41d v1.21.7 cka-node1 Ready,SchedulingDisabled <none> 41d v1.21.7 cka-node2 Ready <none> 41d v1.21.7 1、查找最新版本号 #yum list --showduplicates kubeadm kubeadm.x86_64 1.22.4-0 kubernetes 2、升级kubeadm #yum install kubeadm-1.22.4-0 -y --nogpgcheck 3、驱逐node上的pod,且不可调度 #kubectl drain cka-master --ignore-daemonsets #kubectl drain cka-master --ignore-daemonsets --delete-emptydir-data 4、检查集群是否可以升级,并获取可以升级的版本,预检查 #kubeadm upgrade plan 5、执行升级k8s版本,但是不升级etcd #kubeadm upgrade apply v1.22.4 --etcd-upgrade=false 6、升级kubelet和kubectl #yum install -y kubelet-1.22.4-0 kubectl-1.22.4-0 --nogpgcheck 7、重启kubelet #systemctl daemon-reload #systemctl restart kubelet 8、取消不可调度 #kubectl uncordon cka-master升级工作节点:
第一个节点:
1、升级kubeadm #yum install kubeadm-1.22.4-0 -y --nogpgcheck 2、驱逐node上的pod,且不可调度 #kubectl drain cka-node1 --ignore-daemonsets 3、升级kubelet配置 #kubeadm upgrade node 4、升级kubelet和kubectl #yum install -y kubelet-1.21.0-0 kubectl-1.21.0-0 5、重启kubelet #systemctl daemon-reload #systemctl restart kubelet 6、取消不可调度,节点重新上线 #kubectl uncordon cka-node1检查:
#kubectl get node NAME STATUS ROLES AGE VERSION cka-master Ready control-plane,master 41d v1.22.4 cka-node1 Ready <none> 41d v1.22.4 cka-node2 Ready <none> 41d v1.22.4第二个节点。。。
# 存在静态POD kubectl drain cka-node2 --ignore-daemonsets --delete-emptydir-data --force.