命令记不住

登陆

k8s 集群版本升级

k8s集群版本升级

1.升级策略

• 始终保持最新
• 每半年升级一次,这样会落后社区1~2个小版本
• 一年升级一次,或者更长,落后版本太多

2.升级策略

升级管理节点 --》升级其他管理节点 --》升级工作节点

注意事项:

  • 升级前必须备份所有组件及数据,例如etcd
  • 千万不要跨多个版本进行升级,例如1.16升级到1.19
  • 驱逐升级节点上的pod,且不可调度

3.进行版本升级

升级管理节点:

有第四个版本号:kubeadm-1.21.7-0 ,例如yum install -y kubeadm-1.21.7-0

0、查看当前集群信息
#kubectl get  node
NAME         STATUS                     ROLES                  AGE   VERSION
cka-master   Ready                      control-plane,master   41d   v1.21.7
cka-node1    Ready,SchedulingDisabled   <none>                 41d   v1.21.7
cka-node2    Ready                      <none>                 41d   v1.21.7
1、查找最新版本号
#yum list --showduplicates kubeadm
kubeadm.x86_64   1.22.4-0    kubernetes
2、升级kubeadm
#yum install kubeadm-1.22.4-0 -y --nogpgcheck
3、驱逐node上的pod,且不可调度
#kubectl drain cka-master --ignore-daemonsets
#kubectl drain cka-master --ignore-daemonsets --delete-emptydir-data
4、检查集群是否可以升级,并获取可以升级的版本,预检查
#kubeadm upgrade plan
5、执行升级k8s版本,但是不升级etcd
#kubeadm upgrade apply v1.22.4  --etcd-upgrade=false
6、升级kubelet和kubectl
#yum install -y kubelet-1.22.4-0 kubectl-1.22.4-0 --nogpgcheck
7、重启kubelet
#systemctl daemon-reload
#systemctl restart kubelet
8、取消不可调度
#kubectl uncordon cka-master
升级工作节点:

第一个节点:

1、升级kubeadm
#yum install kubeadm-1.22.4-0 -y --nogpgcheck
2、驱逐node上的pod,且不可调度
#kubectl drain cka-node1 --ignore-daemonsets
3、升级kubelet配置
#kubeadm upgrade node
4、升级kubelet和kubectl
#yum install -y kubelet-1.21.0-0 kubectl-1.21.0-0
5、重启kubelet
#systemctl daemon-reload
#systemctl restart kubelet
6、取消不可调度,节点重新上线
#kubectl uncordon cka-node1

检查:

#kubectl get node
NAME         STATUS   ROLES                  AGE   VERSION
cka-master   Ready    control-plane,master   41d   v1.22.4
cka-node1    Ready    <none>                 41d   v1.22.4
cka-node2    Ready    <none>                 41d   v1.22.4

第二个节点。。。

# 存在静态POD
kubectl drain cka-node2 --ignore-daemonsets  --delete-emptydir-data  --force 

.

推荐阅读