Skip to content

升级 k8s 集群(1.28 -> 1.29)

参考官方文档:https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

更新软件包管理器

bash
# This overwrites any existing configuration in /etc/yum.repos.d/kubernetes.repo
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

升级 kubeadm 版本

bash
# 查看可用版本
sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 安装
sudo yum install -y kubeadm --disableexcludes=kubernetes
# 验证
kubeadm version

使用 kubeadm 升级组件

第一个 control plane 节点:

bash
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply 1.29.4

其他节点:

bash
sudo kubeadm upgrade node

下线节点

bash
kubectl drain <node-name> --ignore-daemonsets

升级 kubelet

bash
sudo yum install -y kubelet --disableexcludes=kubernetes
sudo systemctl daemon-reload && sudo systemctl restart kubelet

kubelet --version

(可选)升级 kubectl

bash
sudo yum install -y kubectl --disableexcludes=kubernetes

重新上线节点

bash
kubectl uncordon <node-name>