1、升级前的版本确认(相同的大版本号下的小版本升级还是跨版本升级)
例如:Kubernetes 集群从 1.29.x 版本 升级到 1.30.x 版本以及从 1.30.x 升级到 1.30.y(其中 y > x)
2、配置kubernetes安装源(已配置kubernetes源,此处跳过)
Debian / Ubuntu
apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/ /" |
tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
CentOS / RHEL / Fedora
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
3、升级控制平面节点
注意:如果需要安装特定版本,请参照如下方式
# 在列表中查找最新的 1.30 版本
# 它看起来应该是 1.30.x-*,其中 x 是最新的补丁版本
sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes
升级kubeadm
# 用最新的补丁版本号替换 1.30.x-* 中的 x
sudo yum install -y kubeadm-'1.30.x-*' --disableexcludes=kubernetes
验证版本
kubeadm version
验证升级计划
sudo kubeadm upgrade plan
升级到目标版本
# 将 x 替换为你为此次升级所选择的补丁版本号
sudo kubeadm upgrade apply v1.30.x
手动升级你的 CNI 驱动插件
4、升级其他控制平面节点
sudo kubeadm upgrade node
5、腾空节点
# 将 <node-to-drain> 替换为你要腾空的控制面节点名称
kubectl drain <node-to-drain> --ignore-daemonsets
6、升级 kubelet 和 kubectl
# 用最新的补丁版本号替换 1.30.x-* 中的 x
sudo yum install -y kubelet-'1.30.x-*' kubectl-'1.30.x-*' --disableexcludes=kubernetes
重启 kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet
7、解除节点的保护
# 将 <node-to-uncordon> 替换为你的节点名称
kubectl uncordon <node-to-uncordon>
8、升级工作节点
# 将 1.30.x-* 中的 x 替换为最新的补丁版本
sudo yum install -y kubeadm-'1.30.x-*' --disableexcludes=kubernetes
9、执行 "kubeadm upgrade"
sudo kubeadm upgrade node
10、腾空节点
# 在控制平面节点上执行此命令
# 将 <node-to-drain> 替换为你正腾空的节点的名称
kubectl drain <node-to-drain> --ignore-daemonsets
11、升级 kubelet 和 kubectl
# 将 1.30.x-* 中的 x 替换为最新的补丁版本
sudo yum install -y kubelet-'1.30.x-*' kubectl-'1.30.x-*' --disableexcludes=kubernetes
重启 kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet
12、取消对节点的保护
# 在控制平面节点上执行此命令
# 将 <node-to-uncordon> 替换为你的节点名称
kubectl uncordon <node-to-uncordon>
13、验证集群状态
kubectl get nodes
参考:
https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/cluster-upgrade/