升级k8s,可以升级一个小版本,可以升级一个大版本,但是不能跨版本升级,会有报错提示。建议一个版本一个版本升级

注意kubeadm版本与集群版本一致。本文集群版本v1.20.15升级到v1.21.14.

第一步:查看当前集群集群版本

[root@master ~]# kubectl  get  node

第二步:使节点不可被调度并驱逐节点上的pod

[root@master ~]# kubectl  cordon  master

[root@master ~]# kubectl  drain  master --ignore-daemonsets

第三步:查看yum仓库kubeadm 所有版本,根据需要下载相关版本

[root@master ~]# yum list --showduplicates kubeadm

[root@master ~]# yum -y install  kubeadm-1.21.14-0

第四步:查看可升级版本及需要的镜像

[root@master ~]# kubeadm  upgrade plan

[root@master ~]# kubeadm  config  images list

第四步:拉取镜像并升级

[root@master ~]# bash upgrade.sh  #执行镜像拉取脚本脚本内容放在最后

[root@master ~]# kubeadm  upgrade  apply  v1.21.14  --etcd-upgrade=false

提示控制面板升级成功,与官网提示成功结果一致。

第六步:安装对应kubelet kubectl版本,并重启

[root@master ~]#  yum -y install  kubectl-1.21.14 kubelet-1.21.14

[root@master ~]# systemctl daemon-reload

[root@master ~]# systemctl  restart  kubelet.service

第七步:取消节点不可被调度

[root@master ~]# kubectl  uncordon  master

第八步: 查看master 节点已升级成功

下面是升级node节点:

第一步:master上使node节点不可被调度

[root@master ~]# kubectl  drain  node  --ignore-daemonsets

第二步:node 节点安装需要升级版本的kubeadm 、kubelet、kubectl

[root@node ~]# yum -y install kubeadm-1.21.14 kubelet-1.21.14 kubectl-1.21.14

第三步:master节点更新 node

[root@master ~]# kubeadm  upgrade  node

第四步:重启kubelet

[root@node ~]# systemctl  daemon-reload

[root@node ~]# systemctl  restart  kubelet.service

第五步:取消节点不可调度

[root@master ~]# kubectl  uncordon  node

第六步:查看第一个node节点升级成功

[root@master ~]# kubectl  get  nodes

其他node节点升级不走与本node升级步骤一样。

upgrade.sh脚本内容如下:

images=(

kube-apiserver:v1.21.14

kube-controller-manager:v1.21.14

kube-scheduler:v1.21.14

kube-proxy:v1.21.14

pause:3.4.1

coredns/coredns:1.8.0

etcd:3.4.13-0

)

for imageName in ${images[@]} ; do

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName

docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName

done

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐