书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》
一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Kubernetes认证考试自学系列 | 汇总_COCOgsta的博客-CSDN博客
步骤1:查看当前版本。
[root@vms15 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms15.rhce.cc Ready master 23m v1.20.1
vms16.rhce.cc Ready <none> 20m v1.20.1
[root@vms15 ~]#
复制代码
或者通过以下命令查看。
[root@vms15 ~]# kubectl version --short
Client Version: v1.20.1
Server Version: v1.20.1
[root@vms15 ~]#
复制代码
这里显示当前安装的是v1.20.1版本,现在要升级到v1.21.1版本。
步骤2:确定当前yum源里kubeadm的可用版本。
[root@vms15 ~]# yum list --showduplicates kubeadm --disableexcludes=kubernetes
已加载插件: fastestmirror
Loading mirror speeds from cached hostfile
已安装的软件包
kubeadm.x86_64 1.20.1-0 @kubernetes
可安装的软件包
kubeadm.x86_64 1.6.0-0 kubernetes
... 输出 ...
kubeadm.x86_64 1.20.1-0 kubernetes
kubeadm.x86_64 1.21.1-0 kubernetes
[root@vms15 ~]#
复制代码
这里显示yum源里kubeadm可用的最新版本为1.21.1。
4.2.1 升级kubeadm
步骤1:升级kubeadm到1.21.1。
[root@vms15 ~]# yum install -y kubeadm-1.21.1-0 --disableexcludes=kubernetes
已加载插件: fastestmirror
... 输出 ...
更新完毕:
kubeadm.x86_64 0:1.21.1-0
完毕!
[root@vms15 ~]#
复制代码
步骤2:验证kubeadm的版本。
[root@vms15 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1",...
[root@vms15 ~]#
复制代码
步骤3:通过kubeadm upgrade plan查看集群是否需要升级,以及能升级的版本。
[root@vms15 ~]# kubeadm upgrade plan
... 输出 ...
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
kubelet 2 x v1.20.1 v1.20.8
Upgrade to the latest version in the v1.20 series:
COMPONENT CURRENT AVAILABLE
kube-apiserver v1.20.1 v1.20.8
kube-controller-manager v1.20.1 v1.20.8
kube-scheduler v1.20.1 v1.20.8
kube-proxy v1.20.1 v1.20.8
CoreDNS 1.7.0 v1.8.0
etcd 3.4.13-0 3.4.13-0
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.20.8
--------------------------------------------------------------------
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
kubelet 2 x v1.20.1 v1.21.1
Upgrade to the latest stable version:
COMPONENT CURRENT AVAILABLE
kube-apiserver v1.20.1 v1.21.1
kube-controller-manager v1.20.1 v1.21.1
kube-scheduler v1.20.1 v1.21.1
kube-proxy v1.20.1 v1.21.1
CoreDNS 1.7.0 v1.8.0
etcd 3.4.13-0 3.4.13-0
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.21.1
... 输出 ...
[root@vms15 ~]#
复制代码
此命令检查集群是否可以升级,以及可以获取到的升级版本。
步骤4:把master设置为维护模式,并清空上面运行的pod。
[root@vms15 ~]#
[root@vms15 ~]# kubectl drain vms15.rhce.cc --ignore-daemonsets
node/vms15.rhce.cc cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-zlkm4, kube-system/kube-proxy-kgcpx
node/vms15.rhce.cc drained
[root@vms15 ~]#
[root@vms15 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms15.rhce.cc Ready, SchedulingDisabled master 2h v1.20.1
vms16.rhce.cc Ready <none> 2h v1.20.1
[root@vms15 ~]#
复制代码
注意:kubectl drain可以在升级集群的命令kubeadm upgrade apply运行之前执行,也可以在其之后执行,这里是在其之前执行的。
4.2.2 升级kubernetes集群里master上的各个组件
kubeadm升级之后,下面开始利用kubeadm命令升级master上的各个组件。
注意,要提前导入coredns-1.21.tar。
步骤1:开始升级kubernetes集群。
[root@vms15 ~J# kubeadm upgrade apply v1.21.1
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
... 输出 ...
[upgrade/version] You have chosen to change the cluster version to "v1.21.1"
[upgrade/versions] Cluster version: v1.20.1
[upgrade/versions] kubeadm version: v1.21.1
[upgrade/confirm] Are you sure you want to proceed with the upgrade?[y/N]: y
... 输出 ...
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
[upgrade/successful] SUCCESS!Your cluster was upgraded to "v1.21.1". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
[root@vms15 ~]#
复制代码
步骤2:升级完毕之后,取消master的维护模式。
[root@vms15 ~]# kubectl uncordon vms15.rhce.cc
node/vms15.rhce.cc uncordoned
[root@vms15 ~]#
[root@vms15 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms15.rhce.cc Ready master 2h v1.20.1
vms16.th ce.cc Ready <none> 2h v1.20.1
[root@vms15 ~]#
复制代码
这里显示vms15的版本仍然是v1.20.1,下面需要升级kubelet和kubectl。
4.2.3 升级master上的kubelet和kubectl
下面开始升级kubelet和kubectl。
步骤1:安装v1.21.1版本的kubelet及kubectl。
[root@vms15 ~]# yum install -y kubelet-1.21.1-0 kubectl-1.21.1-0 --disableexcludes=kubernetes
已加载插件: fastestmirror
base | 3.6 kB 00:00:00
... 输出 ...
更新完毕:
kubelet.x86_64 0:1.21.1-0 kubectl.x86_64 0:1.21.1-0
完毕!
[root@vms15 ~] #
复制代码
重启服务。
[root@vms15 ~]# systemctl daemon-reload ; systemctl restart kubelet
[root@vms15 ~]#
复制代码
步骤2:验证kubectl的版本。
[root@vms15 ~]# kubectl version --short
Client Version: v1.21.1
Server Version: v1.21.1
[root@vms15 ~]#
复制代码
或者用以下命令进行验证。
[root@vms15 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms15.rhce.cc Ready master 2h v1.21.1
vms16.rhce.cc Ready <none> 2h v1.20.1
[root@vms15 ~]#
复制代码
这里可以看到master已经升级到了v1.21.1,但是worker还没升级。
如果环境里有其他master,升级第二台master的步骤和前面的步骤是一样的,只是把命令kubeadm upgrade apply v1.21.1换成kubeadm upgrade node即可。