升级k8s集群

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 –ignore-daemonsets –delete-emptydir-data
例如
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 –ignore-daemonsets –delete-emptydir-data
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