背景
karmada的多集群服务发现需要k8s版本在1.21以上。所以需要升级下k8s版本。我的CRI是docker,1.23之后都默认使用containerd了,废弃了docker。所以先升级到1.21再升级到1.22。
步骤
官方文档:https://v1-21.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
我的环境是centos7.9单节点,所以不需要排空node。
升级master
确定要升级的版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes | grep 1.21
升级kubeadm
cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
yum install -y kubeadm-1.21.14-0 --disableexcludes=kubernetes
确认kubeadm版本
kubeadm version
查看升级计划
升级apiserver 、controller-manager、scheduler、proxy、etcd、coredns。
kubeadm upgrade plan
api版本没有变化。
升级
kubeadm upgrade apply v1.21.14
如果有其它控制面节点,与第一个控制面节点相同,但是使用:
kubeadm upgrade node
升级kubelet和kubectl
yum install -y kubelet-1.21.14-0 kubectl-1.21.14-0 --disableexcludes=kubernetes
重启kubelet
systemctl daemon-reload
systemctl restart kubelet
验证集群升级成功
k get node
k version
升级到1.22.17
yum list --showduplicates kubeadm --disableexcludes=kubernetes | grep 1.22
yum install -y kubeadm-1.22.17-0 --disableexcludes=kubernetes
kubeadm version
kubeadm upgrade plan
kubeadm upgrade apply v1.22.17
yum install -y kubelet-1.22.17-0 kubectl-1.22.17-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet
k get node
k version
查看成员集群
ka get clusters