实验环境

完成初始化的V1.24.1版本的集群环境:
(vms61)192.168.26.61——master
(vms62)192.168.26.62——worker

一、概述

1.更新的类型有:
(1)功能性的更新
(2)安全性的更新
(3)bug的修复
假设当我们在使用某一个版本的k8s时,发现某些功能不符合我们的需求,觉得有些问题,官方发行了另一个版本并能解决这些问题,就可以将k8s升级到改版本

2.k8s环境中涉及到了各种各样的证书

ls /etc/kubernetes/pki/
#输出:
apiserver.crt              apiserver.key                 ca.crt  front-proxy-ca.crt      front-proxy-client.key
apiserver-etcd-client.crt  apiserver-kubelet-client.crt  ca.key  front-proxy-ca.key      sa.key
apiserver-etcd-client.key  apiserver-kubelet-client.key  etcd    front-proxy-client.crt  sa.pub

ls /etc/kubernetes/pki/etcd/
#输出:
ca.crt  ca.key  healthcheck-client.crt  healthcheck-client.key  peer.crt  peer.key  server.crt  server.key

ca的证书(ca.crt)期限是十年,由ca颁发的一些普通的证书如apiserver.crt等期限只有一年
所以k8s使用了一年后,会发现k8s过期了,不能继续使用了

证书是一年的有效期——为什么不是5年?不是8年?:因为它希望你能够尽可能地更新,只要一更新,k8s就会自动帮你的证书续期

3.kubernetes的版本命名规则:v主版本号.次版本号.补丁号

4.更新的时候,不能跨版本更新,如:不能从1.21版本直接更新到1.23版本,而是要1.21更新到1.22,然后从1.22更新到1.23
补丁号可以忽略,如:可以从1.23.6更新到1.24.0

5.升级k8s步骤:
从机器的层面看:
1.先更新master(若有多个master,则一台一台去更新)
2.再更新worker
从软件层面来看:
1.下载要更新版本的kubeadm工具包
2.把节点设置为drain(驱逐出集群)
3.开始更新kubeadm
4.更新kubelet、kubectl
5.重启kubelet
6.恢复此节点

二、实验

环境:
完成初始化的1.24.1版本的k8s集群
(vms61)192.168.26.61——master
(vms62)192.168.26.62——worker

更新步骤可查看官方文档:https://kubernetes.io/zh-cn/docs/home/
搜索 “upgrade”
(截图)

一:更新master

(1)更新kubeadm工具

在master上操作
1.查看kubeadm所有可用版本

#首先清除yum缓存
yum clean all
yum list --showduplicates kubeadm --disableexcludes=kubernetes

2.下载kubeadm1.24.2版本包

yum install -y kubeadm-1.24.2-0 --disableexcludes=kubernetes

3.对master节点drain操作

kubectl drain vms61.rhce.cc --ignore-daemonsets

4.升级kubeadm各个组件到1.24.2版本

kubeadm upgrade apply v1.24.2

#若升级时不想升级某个组件,可以使用--xxx-upgrade=false
#如升级所有组件到1.24.2版本,除了etcd
kubeadm upgrade apply v1.24.2 --etcd-upgrade=false

(2)更新kubelet、kubectl

yum install -y kubelet-1.24.2-0 kubectl-1.24.2-0 --disableexcludes=kubernetes

(3)重启kubelet

systemctl daemon-reload ; systemctl restart kubelet

(4)恢复此节点

kubectl uncordon vms61.rhce.cc

(5)若有多个master

若有多个master,则只要第一个master执行kubeadm upgrade apply v1.24.2这个操作,而其他master上则是将这步改为执行kubeadm upgrade node,除此之外,其他步骤一样

二:更新worker

(1)更新kubeadm工具

来到worker机器上操作
1.下载kubeadm1.24.2版本工具包

yum install -y kubeadm-1.24.2-0 --disableexcludes=kubernetes

2.来到master上,对要更新的worker节点进行drain操作

kubectl drain vms62.rhce.cc --ignore-daemonsets --force

3.回到worker,更新kubeadm
(除了第一个更新的master执行kubeadm upgrade apply v1.24.2外,其他节点包括其他master都是执行kubeadm upgrade node
更新哪个节点,就在哪个节点执行这个命令

kubeadm upgrade node

(2)更新kubelet、kubectl

yum install -y kubelet-1.24.2-0 kubectl-1.24.2-0 --disableexcludes=kubernetes

(3)重启kubelet

systemctl daemon-reload ; systemctl restart kubelet

(4)恢复此节点

kubectl uncordon vms62.rhce.cc

集群全部升级完成
注意:从1.23版本后,docker不能再用了,因此若要从1.23版本升级到1.24,则首先要将k8s环境从docker迁移到containerd

Logo

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

更多推荐