k8s集群升级只能逐次要版本进行,比如,如果需要从1.32.9升级到1.34.2,需要先升级到1.33.6,再升级到1.34.2
首先要升级控制平面。
清空或备份原有配置,然后只添加 1.33 源
echo ‘deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /‘ | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新
sudo apt-get update
使用下面语句查看可升级的版本:
apt-cache madison kubeadm
sudo apt-mark unhold kubeadm &&
sudo apt-get update && sudo apt-get install -y kubeadm=’1.33.6-1.1’ &&
sudo apt-mark hold kubeadm
查看版本是否正确
kubeadm version
升级计划
sudo kubeadm upgrade plan
执行升级
sudo kubeadm upgrade apply v1.33.6
出现下面信息说明升级成功:
[upgrade] SUCCESS! A control plane node of your cluster was upgraded to “v1.33.6”.
[upgrade] Now please proceed with upgrading the rest of the nodes by following the right order.
腾空(Drain)主节点:
kubectl drain
例如
kubectl drain k8s-c1-main –ignore-daemonsets –delete-emptydir-data
升级 kubelet 和 kubectl:
sudo apt-mark unhold kubelet kubectl
sudo apt-get update
sudo apt-get install kubelet=1.33.6-1.1 kubectl=1.33.6-1.1
sudo apt-mark hold kubelet kubectl
重启kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
取消隔离(Uncordon)节点
kubectl uncordon
例如:kubectl uncordon k8s-c1-main
升级工作节点
1、腾空节点:控制平面执行:
kubectl drain
2、升级 kubeadm(同上)。
3、升级节点配置:
sudo kubeadm upgrade node
4、升级 kubelet 和 kubectl 并重启 kubelet(同上)。
5、取消隔离节点(控制平面执行):
kubectl uncordon
升级到1.34.2
清空或备份原有配置,然后只添加 1.34 源
echo ‘deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /‘ | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
获取版本号
apt-cache madison kubeadm
kubeadm | 1.34.2-1.1 | https://pkgs.k8s.io/core:/stable:/v1.34/deb Packages
kubeadm | 1.34.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.34/deb Packages
kubeadm | 1.34.0-1.1 | https://pkgs.k8s.io/core:/stable:/v1.34/deb Packages
升级主控节点:
sudo apt-mark unhold kubeadm &&
sudo apt-get update && sudo apt-get install -y kubeadm=’1.34.2-1.1’ &&
sudo apt-mark hold kubeadm
查看版本是否正确
kubeadm version
升级计划
sudo kubeadm upgrade plan
执行升级
sudo kubeadm upgrade apply v1.34.2
kubectl drain k8s-c1-main –ignore-daemonsets –delete-emptydir-data
升级 kubelet 和 kubectl:
sudo apt-mark unhold kubelet kubectl
sudo apt-get update
sudo apt-get install kubelet=1.34.2-1.1 kubectl=1.34.2-1.1
sudo apt-mark hold kubelet kubectl
重启kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
取消隔离(Uncordon)节点
kubectl uncordon
例如:kubectl uncordon k8s-c1-main