我这里是想把集群1.20.0升级到1.20.4
升级master节点
查看可升级的最新稳定版本
sudo kubeadm upgrade plan
查看所有kubelet可安装版本
sudo apt-cache policy kubelet
通过上面命令可查到,详细的kubelet1.20.4版本是1.20.4-00
安装kubelet
sudo apt-get install kubeadm=1.20.4-00 kubectl=1.20.4-00 kubelet=1.20.4-00 -y
从上图可看出,安装完kubelet等组件之后,会自动升级
查看状态
现在知识kubelet升级完成,但是kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy未升级
全面升级
升级集群控制平面,升级kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy
sudo kubeadm upgrade apply v1.20.4
至此,服务端已经升级完成,需要注意的是,使用kubectl get node
查看的版本号是kubelet的版本号
升级node节点
升级该node节点之前我这里需要修改成不被调度,并驱散该node节点上的pod
sudo kubectl cordon k8s-node1.lab.example.com
sudo kubectl drain k8s-node1.lab.example.com --ignore-daemonsets
下面开始升级节点kubelet版本号
我这里只升级node1节点,所以写的1..1
sudo for x in {1..1};do ssh k8s-node$x sudo apt-get \ install kubelet=1.20.4-00 -y;done
使用kubectl get node
查看已经升级完成
升级完成后,恢复该节点可以被调度
sudo kubectl uncordon k8s-node1.lab.example.com
升级完成.