0
点赞
收藏
分享

微信扫一扫

K8S复习(四):Kubernetes版本升级

罗蓁蓁 2022-04-24 阅读 45

目录

升级主控制平面节点

确定要升级到哪个版本

升级第一个控制面节点

 腾空节点 

 升级 kubelet 和 kubectl 

升级工作节点 

腾空节点, 升级 kubelet 和 kubectl


升级主控制平面节点

确定要升级到哪个版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 在列表中查找最新的 1.23 版本
# 它看起来应该是 1.23.x-0,其中 x 是最新的补丁版本

升级第一个控制面节点

如果你的集群是使用 kubeadm 安装工具部署而来, 那么需要先安装要升级的 kubeadm 版本

[root@server1 ~]# yum install -y kubeadm-1.22.2-0    #安装预升级把版本
[root@server1 ~]# kubeadm version #验证下载操作正常,并且 kubeadm 版本正确
[root@server1 ~]# kubeadm upgrade plan #验证升级计划

kubeadm upgrade 也会自动对 kubeadm 在节点上所管理的证书执行续约操作。 如果需要略过证书续约操作,可以使用标志 --certificate-renewal=false

如果 kubeadm upgrade plan 给出任何需要手动升级的组件配置,用户必须 通过 --config 命令行标志向 kubeadm upgrade apply 命令提供替代的配置文件。 如果不这样做,kubeadm upgrade apply 会出错并退出,不再执行升级操作。

[root@server1 ~]# kubeadm upgrade apply v1.22.2    #此时他会下载你的控制器 apiserver, scheduler ,但是无法升级 etcd ,可以把 --etcd-upgrade 改为 false 

一旦该命令结束,你应该会看到:

 

 腾空节点 

此时 node 中版本还未升级,但 pod 版本已经升级,pod 中 apiserver 时间运行已经更新

[root@server1 ~]# kubectl drain server1  --ignore-daemonsets  #腾空 server1 节点
[root@server1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
server1 Ready,SchedulingDisabled control-plane,master 27h v1.22.1
server2 Ready <none> 27h v1.22.1
server3 Ready <none> 27h v1.22.1
## server1 节点调度已经被驱离

 升级 kubelet 和 kubectl 

[root@server1 ~]# yum install -y kubelet-1.22.2-0 kubectl-1.22.2-0
[root@server1 ~]# systemctl daemon-reload 
[root@server1 ~]# systemctl restart kubelet.service 
[root@server1 ~]# kubectl uncordon server1        ##解除保护
[root@server1 ~]# kubectl get nodes 
NAME      STATUS   ROLES                  AGE   VERSION
server1   Ready    control-plane,master   27h   v1.22.2
server2   Ready    <none>                 27h   v1.22.1
server3   Ready    <none>                 27h   v1.22.1

升级工作节点 

[root@server2 ~]# yum install -y kubeadm-1.22.2-0 --disableexcludes=kubernetes
[root@server3 ~]# yum install -y kubeadm-1.22.2-0 --disableexcludes=kubernetes
[root@server2 ~]# kubeadm upgrade node #升级本地的 kubelet 配置

腾空节点, 升级 kubelet 和 kubectl

注意:不能同时驱离所有节

[root@server1 ~]# kubectl drain server2 --ignore-daemonsets
[root@server2 ~]# yum install -y kubelet-1.22.2-0 kubectl-1.22.2-0
[root@server3 ~]# yum install -y kubelet-1.22.2-0 kubectl-1.22.2-0
[root@server2 ~]# systemctl daemon-reload
[root@server2 ~]# systemctl restart kubelet.service
[root@server1 ~]# kubectl uncordon server2
[root@server1 ~]# kubectl drain server3 --ignore-daemonsets
[root@server3 ~]# systemctl daemon-reload
[root@server3 ~]# systemctl restart kubelet.service

举报

相关推荐

0 条评论