LAB-03:升级K8S版本
LAB 需求
# 最新的版本是1.22.1,升级到1.22.2
现有的 Kubernetes 集群正在运行的版本是 1.22.1,仅将主节点上的所有 kubernetes 控制面板和组件升级到版本 1.22.2 另外,在主节点上升级 kubelet 和 kubectl。
LAB 预配
# 目前版本
user1@k8s-master:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 39d v1.22.1
k8s-node-1 Ready <none> 39d v1.22.1
k8s-node-2 Ready <none> 39d v1.22.1
k8s-node-3 Ready <none> 39d v1.22.1
LAB 答案
# 切换 content
$ kubectl config use-context k8s
# 设置 k8s-master 为维护状态
$ kubectl get node
$ kubectl cordon k8s-master
# 驱逐 k8s-master 上的 Pod
$ kubectl drain k8s-master --delete-local-data --ignore-daemonsets --force
# 登录到 k8s-master,然后切换到 root 用户,LAB 环境只需要切换到 root 用户
$ ssh k8s-master
$ sudo -i
$ apt update
# 查看支持哪个版本
$ apt-cache policy kubeadm | grep 1.22.2
$ apt-mark unhold kubeadm kubectl kubelet
$ apt-get install -y kubeadm=1.22.2-00 kubelet=1.22.2-00 kubectl=1.22.2-00
$ apt-mark hold kubeadm kubectl kubelet
# 验证升级计划
$ kubeadm upgrade plan
# 开始升级,不升级 etcd
$sudo kubeadm upgrade apply v1.22.2 --etcd-upgrade=false
# 重新启动服务
$ systemctl daemon-reload
$ systemctl restart kubelet
# 设置 k8s-master 为正常状态
$ exit
$ exit # 如果使用 sudo -i,这里一定要退出两次,考试环境要注意
$ kubectl uncordon k8s-master
LAB 验证
# 确认只升级了 master 节点的版本
user1@k8s-master:~$ kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 22h v1.22.2
k8s-node-1 Ready,SchedulingDisabled <none> 21h v1.22.1
k8s-node-2 Ready <none> 21h v1.22.1
k8s-node-3 Ready <none> 21h v1.22.1
参考资料
- https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/