视频课程地址:戳我开始学习
控制平面升级
只有master节点需要执行如下操作,需要逐节点操作。将集群从当前的v1.14.3升级到v1.15.0。
列出可用的kubeadm软件包
1 | $ yum list --showduplicates kubeadm --disableexcludes=kubernetes |
安装kubeadm新版本软件包
1 | $ yum install -y kubeadm-1.15.0-0 --disableexcludes=kubernetes |
确认kubeadm为正确的版本
1 | $ kubeadm version |
查看升级计划
1 | $ kubeadm upgrade plan |
升级第一个控制节点
1 | $ kubeadm upgrade apply v1.15.0 |
升级kubelet软件包
1 | $ yum install -y kubelet-1.15.0-0 kubectl-1.15.0-0 --disableexcludes=kubernetes |
重启kubelet服务
1 | $ systemctl restart kubelet |
升级第二、三个控制节点
升级控制节点
1 | $ kubeadm upgrade node |
升级kubelet、kubectl软件包
1 | $ yum install -y kubelet-1.15.0-0 kubectl-1.15.0-0 --disableexcludes=kubernetes |
重启kubelet服务
1 | $ systemctl daemon-reload |
升级工作节点
逐节点升级工作节点
升级kubeadm软件包
1 | $ yum install -y kubeadm-1.15.x-0 --disableexcludes=kubernetes |
驱逐节点上的pod并标记为不可调度
1 | $ kubectl drain k8s-s1 --ignore-daemonsets |
升级kubelet、kubectl软件包
1 | $ yum install -y kubelet-1.15.0-0 kubectl-1.15.0-0 --disableexcludes=kubernetes |
更新kubelet配置文件
1 | $ kubeadm upgrade node |
重启kubelet服务
1 | $ systemctl daemon-reload |
查看kubelet状态
1 | $ systemctl status kubelet |
标注节点为可调度
1 | $ kubectl uncordon k8s-s1 |
确定各节点状态为Ready
1 | $ kubectl get nodes |
从失败状态恢复
如果 kubeadm upgrade 执行失败,它将尝试执行回滚。因此,如果这种情况发生在第一个 master 身上,那么集群仍然完好无损的可能性很大。你可以再次运行 kubeadm upgrade apply,因为它是幂等的,最终应确保实际状态是你声明的所需状态。你可以使用参数 –force 运行 kubeadm upgrade apply 命令更改运行的集群为 y.y.y –> x.x.x,它可用于从糟糕的状态中恢复过来。
如果 kubeadm upgrade apply 是在其中一个辅助 master 上失败,则仍然有一个正在工作的已经升级的集群,但辅助 master 的状态有些不确定。你将不得不找出哪里出了问题,并手动加入辅助 master。如上所述,有时升级其中一个辅助 master 时,首先等待重新启动的静态 pod 失败,但在一两分钟的暂停后简单地重复该操作时会成功。