使用kubeadm升级集群
# 1. 确定升级路线
首先,查看当前集群版本
确定升级路线,由于k8s默认向前兼容两个版本,参考k8s的release note确认升级路线。
当前的版本为1.25.3, 最新版本为1.27.1 则升级路线为 1.25.3 -> 1.26.4 -> 1.27.1
# 2. 数据备份
这里使用工具 https://github.com/solomonxu/k8s-backup-restore (opens new window)
# 3. 升级第一个master 节点
首先解冻一下当前的kubeadm版本
root@cluster-master-01:~# apt-mark unhold kubeadm
Canceled hold on kubeadm.
1
2
2
我这里使用阿里云的apt源,更新apt数据库,然后列出可用的版本
root@cluster-master-01:~# apt-get update && apt-get install -y apt-transport-https
root@cluster-master-01:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
root@cluster-master-01:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
root@cluster-master-01:~# apt update
root@cluster-master-01:~# apt list kubeadm -a
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
安装下一版本的kubeadm 注意一定要按照升级路线升级,切不可一下升级到最新版本
root@cluster-master-01:~# apt install kubeadm=1.26.4-00
1
查看升级计划
root@cluster-master-01:~# kubeadm upgrade plan
1
升级节点
root@cluster-master-01:~# kubeadm upgrade apply v1.26.4
1
升级成功是这样的
然后我们来升级 kubelet、kubectl
root@cluster-master-01:~# apt install kubelet=1.26.4-00 kubectl=1.26.4-00
1
重启kubelet
root@cluster-master-01:~# systemctl daemon-reload && systemctl restart kubelet
1
# 4.升级其他master节点
与第一个master 一样 正常升级即可
# 5. 升级node
root@cluster-master-01:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
root@cluster-master-01:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
root@cluster-master-01:~# apt update
root@cluster-master-01:~# apt install kubeadm=1.26.4-00
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
使用kubeadm命令升级node
root@cluster-master-01:~# kubeadm upgrade node
1
升级node 的kubeklet
root@cluster-master-01:~# apt install kubelet=1.26.4-00
1
后续版本使用此逻辑升级即可
# 6. 校验集群证书
root@cluster-master-01:~# kubeadm certs check-expiration
1
# 7. 升级后验证
pod 业务i正常 版本成功更新:
done!