kubernetes的版本升级(kubeadm方式,亲测)

kubernetes的版本升级(kubeadm方式,亲测),第1张

本文介绍了如何将 kubeadm 创建的 Kubernetes 集群从 1.16.x 版本升级到 1.17.x 版本,以及从版本 1.17.x 升级到 1.17.y ,其中 y > x。
高版本升级工作流如下:升级主控制平面节点---升级其他控制平面节点---升级工作节点。

具体步骤

一.升级主控制节点

1.准备升级
禁用SWAP,集群应使用静态的控制平面和 etcd pod 或者 外部 etcd,务必备份所有重要组件,升级后,因为容器 spec 哈希值已更改,所以所有容器都会重新启动,
您只能从一个次版本升级到下一个次版本,或者同样次版本的补丁版。也就是说,升级时无法跳过版本。 例如,您只能从 1.y 升级到 1.y+1,而不能从 from 1.y 升级到 1.y+2

2.检查要升级的稳定版本1.17
yum list --showduplicates kubeadm --disableexcludes=kubernete
3.用最新的修补程序版本替换 1.17.x-0 中的 x
yum install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes
4.验证 kubeadm 版本:
kubeadm version
5.腾空控制平面节点:
kubectl drain $CP_NODE --ignore-daemonsets
6.检查集群是否可以升级,并获取到升级的版本
kubeadm upgrade plan
7.选择要升级到的版本,然后运行相应的命令
kubeadm upgrade apply v1.17.x
将 x 替换为您为此升级选择的修补程序版本。

8.设置不可调度
kubectl uncordon $CP_NODE
9.升级控制平面节点上的 kubelet 和 kubectl 
yum install -y kubelet-1.17.x-0 kubectl-1.17.x-0 --disableexcludes=kubernetes
10.重启 kubelet
systemctl restart kubelet

二.升级其他控制节点

1.腾空控制平面节点:
kubectl drain $CP_NODE --ignore-daemonsets
2.检查集群是否可以升级,并升级到对应版本
kubeadm upgrade node experimental-control-plane

三.升级计算worker节点

工作节点上的升级过程应该一次执行一个节点,或者一次执行几个节点,以不影响运行工作负载所需的最小容量

1.升级kubeadm

yum install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes
2.验证 kubeadm 版本:
kubeadm version
3.通过将节点标记为不可调度并逐出工作负载,为维护做好准备。运行:
kubectl drain $NODE --ignore-daemonsets
4.升级 kubelet 配置:
kubeadm upgrade node config --kubelet-version v1.17.x
5.升级 kubelet 与 kubectl
yum install -y kubelet-1.17.x-0 kubectl-1.17.x-0 --disableexcludes=kubernetes
6.重启 kubelet
systemctl restart kubelet
7.取消对节点的保护
8.通过将节点标记为可调度,让节点重新上线:
kubectl uncordon $NODE

四.验证集群的状态
1.在所有节点上升级 kubelet 后,通过从 kubectl 可以访问集群的任何位置运行以下命令,验证所有节点是否再次可用:
kubectl get nodes
五.从故障状态恢复
如果 kubeadm upgrade 失败并且没有回滚,例如由于执行期间意外关闭,您可以再次运行 kubeadm upgrade。 
此命令是幂等的,并最终确保实际状态是您声明的所需状态。 要从故障状态恢复,您还可以运行 kubeadm upgrade --force 而不去更改集群正在运行的版本

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/731941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存