注意事项:
升级前最好备份所有组件及数据,例如etcd
不要跨两个大版本进行升级,可能会存在版本bug,如:
1.22.17–>1.23.17 可以
1.22.17–>1.24.17 不可以
跨多个版本的可以逐个版本进行升级。
前置条件:
配置YUM源
[root@master~] # cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg更新YUM包
[root@master~] # yum clean all
......
[root@master~] # yum makecache
......安装containerd
......
第一步:检查当前集群版本
[root@master~] # kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 209d v1.22.17
node1 Ready <none> 209d v1.22.17
node2 Ready <none> 209d v1.22.17目前我的版本是v1.22.17,官网最新版本已经到1.28.2。升级到最新版本需要逐步升级:v1.22.17–>v1.23.17–>v1.24.17–>v1.25.17–>v1.26.17–>v1.27.17->v1.28.2,共升级6次。
第二步:查询要升级的版本
我们现在从1.22升级到1.23版本,所以需要找到v.1.23.17这一个的版本号
[root@master~] # yum list --showduplicates kubeadm --disableexcludes=kubernetes | grep 1.23
第三步:开始升级
3.1:先升级master节点
3.1.1:下载1.23.17版本的kubeadm
如果有多个master节点,那么每个master节点都要下载
yum install -y kubeadm-1.23.17-0 --disableexcludes=kubernetes
3.1.2:获取执行计划
如果有多个master节点,那么在任意一个master节点执行即可
kubeadm upgrade plan
只列出了可以升级的组件:
Upgrade to the latest stable version:
COMPONENT CURRENT TARGET
kube-apiserver v1.22.17 v1.23.17
kube-controller-manager v1.22.17 v1.23.17
kube-scheduler v1.22.17 v1.23.17
kube-proxy v1.22.17 v1.23.17
CoreDNS v1.8.4 v1.8.6
etcd 3.5.6-0 3.5.6-03.1.3:据上面输出提示,执行返回命令以升级
如果有多个master节点,那么在步骤3.1.2挑选的节点上执行即可
kubeadm upgrade apply v1.23.17
......
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.23.17". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.注意:因为我是单master节点,所以就在这一个主节点上执行就可以,如果您是多master节点,在另外的master节点上执行kubeadm upgrade node
kubeadm upgrade node3.1.4:所有master节点分别升级kubelet和kubeadm
#先驱逐节点的pod
kubectl drain master --ignore-daemonsets
#下载kubelet和kubectl
yum install -y kubelet-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes
#重启
systemctl daemon-reload
systemctl restart kubelet
3.2:升级node节点
3.2.1:在所有的node节点上下载1.23.17版本的kubeadm
yum install -y kubeadm-1.23.17-0 --disableexcludes=kubernetes
3.2.2:在所有node节点上升级kubelet的配置
kubeadm upgrade node
3.2.3:升级 kubelet 和 kubectl
#先驱逐节点的pod
kubectl drain node1 --ignore-daemonsets
#下载kubelet和kubectl
yum install -y kubelet-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes
#重启
systemctl daemon-reload
systemctl restart kubelet
第四步:检查集群的状态和版本
[root@master~] # kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 209d v1.23.17
node1 Ready <none> 209d v1.23.17
node2 Ready <none> 209d v1.23.17
评论区