1、确定升级的集群版本,查看现有的集群版本
kubectl get nodes
2、执行如下命令确定升级的版本,目标版本是v1.27.4
yum list --showduplicates kubeadm --disableexcludes=kubernetes
3、升级master节点,所有master节点都要操作,并升级完验证版本
yum install -y kubeadm-1.27.4-0 --disableexcludes=kubernetes # --disableexcludes=kubernetes:禁掉除了这个kubernetes之外的别的仓
kubeadm version
4、升级master1(master节点1操作即可)
#验证升级计划,检查当前集群是否可以被升级
kubeadm upgrade plan
最高可以升级到 v1.27.4 版本,正好与我们的目标版本一致;只要可允许升级的最高版本高于你的目标版本,就可以升级,注:kubeadm upgrade命令也会自动对kubeadm在节点上所管理的证书执行续约操作。如果需要略过证书续约操作,可以使用标志--certificate-renewal=false
#确定集群升级目标版本,并且查看升级计划符合条件后,就可以在 master1 节点上执行升级集群的命令了
5、 将master1升级到目标版本
kubeadm upgrade apply v1.27.4
6、升级master2&& master3
注:升级master2 & master3 节点与 master1 节点相同,但是使用下面的命令,而不是kubeadm upgrade apply命令
kubeadm upgrade node
7、升级kubectl和kubelet
三台 master 节点操作,操作顺序:master1——>master2——>master3
7.1、将当前节点标记为不可调度,并驱逐节点上的Pod
kubectl drain master-1 --ignore-daemonsets
##说明:
## --ignore-daemonsets 无视DaemonSet管理下的Pod。即--ignore-daemonsets往往需要指定的,这是
#因为deamonset会忽略unschedulable标签(使用kubectl drain时会自动给节点打上不可调度标签),
#由于deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,这样就会成为死循环。因此
#这里忽略daemonset
# 升级kubelet和kubectl组件
yum install -y kubelet-1.27.4-0 kubectl-1.27.4-0 --disableexcludes=kubernetes
7.2、重启kubelet
systemctl daemon-reload
systemctl restart kubelet
7.3、恢复当前节点上的Pod调度,使其上线
kubectl uncordon nodes/master-1
#查看节点版本,发现master节点已经升级完成
8、 升级work 节点(其他work节点也执行如下相同步骤)
说明:
工作节点上的升级过程应该一次执行一个节点,或者一次执行几个节点,以不影响运行工作负载所需的最小容量,如果你的集群中有多个worker节点,每个节点都需要操作
#升级kubeadm
yum install -y kubeadm-1.27.4-0 --disableexcludes=kubernetes
#查看版本
kubeadm version
#升级work节点
kubeadm upgrade node
# 设置节点不可调度并排空节点。只有1个worker节点时忽略此步,因为可能会报错
kubectl drain node1 --ignore-daemonsets
# 升级kubelet和kubectl组件
yum install -y kubelet-1.27.4-0 kubectl-1.27.4-0 --disableexcludes=kubernetes
# 重启kubelet
systemctl daemon-reload
systemctl restart kubelet
# 恢复当前节点上的Pod调度。只有1个worker节点时忽略此步
kubectl uncordon node1
9、 验证集群是否正常
kubectl get node
标签:kubectl,教程,--,升级,集群,版本,kubeadm,节点 From: https://www.cnblogs.com/zbhlinux/p/17633733.html