K8S集群 1.31 升级 1.32

Kubernetes   2026-01-20 16:22   6   0  

备份资源

kubectl get all --all-namespaces -o yaml > /root/k8s-backup-$(date +%Y%m%d).yaml

更改 pause 版本

[root@node02 ~]# cat /etc/containerd/config.toml 
······
[plugins]

 [plugins."io.containerd.gc.v1.scheduler"]
   ······

 [plugins."io.containerd.grpc.v1.cri"]
   ······
   sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.10"
   # 这里之前是 pause:3.8 版本,升级到 1.32 需要改成 pause:3.10 版本
   ······

步骤1:在所有节点上安装新版 kubeadm

# 1. 添加K8s仓库并安装新版本(Rocky Linux使用yum/dnf)
sudo dnf remove -y kubeadm

# 2. 添加新版仓库 设置Kubernetes版本为1.32.11
[root@node00 ~]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni

# 3. 安装指定版本的kubeadm
sudo dnf install -y kubeadm-1.32.11 --disableexcludes=kubernetes

# 4. 验证版本
kubeadm version

重要提示:必须逐个次版本升级,不能跳版本(如1.31→1.33需要先升到1.32)。

步骤2:升级第一个控制平面节点

# 1. 检查升级计划(在第一个控制节点执行)
sudo kubeadm upgrade plan

# 2. 应用升级(假设从1.31升级到1.32)
sudo kubeadm upgrade apply v1.32.11

# 3. 排空节点(驱逐Pod到其他节点)
kubectl drain node00 --ignore-daemonsets

# 4. 升级kubelet和kubectl
sudo dnf install -y kubelet-1.32.11 kubectl-1.32.11 --disableexcludes=kubernetes

# 5. 重启并验证kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo systemctl status kubelet

# 6. 恢复节点调度
kubectl uncordon node00

步骤3:升级其他控制平面节点

# 在每个其他控制节点上执行:
# 1. 安装新版kubeadm(同步骤1)
# 2. 执行节点升级(不是apply!)
sudo kubeadm upgrade node

# 3. 排空节点
kubectl drain node01 --ignore-daemonsets
kubectl drain node02 --ignore-daemonsets

# 4. 升级kubelet和kubectl(同步骤2.4)
# 5. 重启kubelet并恢复节点(同步骤2.5-2.6)

步骤4:升级工作节点

# 在每个工作节点上执行:
# 1. 安装新版kubeadm(同步骤1)
# 2. 排空节点(在控制平面执行或在节点有kubectl时执行)
kubectl drain node03 --ignore-daemonsets

# 3. 升级节点配置
sudo kubeadm upgrade node

# 4. 升级kubelet
sudo dnf install -y kubelet-1.32.11 --disableexcludes=kubernetes

# 5. 重启kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet

# 6. 恢复节点
kubectl uncordon node03

🧪 验证升级结果

# 1. 验证节点状态和版本
kubectl get nodes

# 2. 验证核心组件
kubectl get pods -n kube-system
kubectl get cs

# 3. 验证网络插件(以Calico为例)
kubectl get pods -n calico-system

# 4. 验证工作负载
kubectl get pods --all-namespaces


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。