使用kubeadm进行k8s集群升级

一、目标

操作系统:CentOS Linux release 7.6.1810 (Core)

安装软件:

docker:18.06.3-ce


 

从v1.15.5升级到v1.16.15

当前版本:

[root@master yum.repos.d]# kubectl get node -owide
NAME     STATUS                     ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
master   Ready                      master   18h   v1.15.5   10.0.0.17     <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
node01   Ready,SchedulingDisabled   <none>   17h   v1.15.5   10.0.0.27     <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
node02   Ready                      <none>   17h   v1.15.5   10.0.0.37     <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3

二、升级kubeadm

1、配置k8s镜像源(所有主机)

[root@master yum.repos.d]# cat kubernetes.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2、查看可下载的kubeadm版本(任一主机)

yum list kubeadm --showduplicates | sort -r

3、下载需要升级的版本(所有主机)

[root@master yum.repos.d]# yum install -y kubeadm-1.16.5-0 --disableexcludes=kubernetes

4、验证kubeadm版本(任一主机)

  [root@master yum.repos.d]# kubeadm version
  kubeadm version: &version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.15", GitCommit:"2adc8d7091e89b6e3ca8d048140618ec89b39369", GitTreeState:"clean", BuildDate:"2020-09-02T11:37:34Z", GoVersion:"go1.13.15", Compile    r:"gc", Platform:"linux/amd64"}

5、验证升级计划(master主机)

[root@master yum.repos.d]# kubeadm upgrade plan

 6、运行apply命令进行升级(master主机)

[root@master yum.repos.d]# kubeadm upgrade apply v1.16.15

 7、其他node节点执行

[root@node01 ~]# kubeadm upgrade node
[upgrade] Reading configuration from the cluster...
[upgrade] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade] Skipping phase. Not a control plane node[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.16" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

三、升级Kubectl和Kubelet

1、腾空节点

# 将 <node-to-drain> 替换为你要腾空的控制面节点名称
kubectl drain <node-to-drain> --ignore-daemonsets

这里先升级master几点,因此执行了

[root@master yum.repos.d]# kubectl drain master --ignore-daemonsets
node/master cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-vkkkb, kube-system/kube-proxy-xddvj
evicting pod "coredns-58cc8c89f4-762x5"
pod/coredns-58cc8c89f4-762x5 evicted
node/master evicted

2、安装相同版本的kubelet和kubectl

[root@master yum.repos.d]# yum install -y kubelet-1.16.15-0 kubectl-1.16.15-0 --disableexcludes=kubernetes

3、重启kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

4、将节点标记为可调度,让其重新上线

# 将 <node-to-drain> 替换为你的节点名称
kubectl uncordon <node-to-drain>

这里将master节点上线

[root@master yum.repos.d]# kubectl uncordon master
node/master uncordoned

5、验证

[root@master yum.repos.d]# kubectl get node
NAME     STATUS                     ROLES    AGE   VERSION
master   Ready                      master   18h   v1.16.15
node01   Ready,SchedulingDisabled   <none>   18h   v1.15.5
node02   Ready                      <none>   18h   v1.15.5

6、同样的步骤升级node节点,验证

[root@master /]# kubectl get node -owide
NAME     STATUS                     ROLES    AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
master   Ready                      master   18h   v1.16.15   10.0.0.17     <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
node01   Ready                      <none>   18h   v1.16.15   10.0.0.27     <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
node02   Ready,SchedulingDisabled   <none>   18h   v1.16.15   10.0.0.37     <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3

至此,完成升级!

 

posted @ 2021-07-07 10:31  spoonky  阅读(198)  评论(0)    收藏  举报