kubectl get all --all-namespaces -o yaml > /root/k8s-backup-$(date +%Y%m%d).yaml
[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. 添加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)。
# 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
# 在每个其他控制节点上执行:
# 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)
# 在每个工作节点上执行:
# 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