专栏首页千里行走kubernetes-32:升级kubernetes集群之从v1.19.3升级到v1.20.2

kubernetes-32:升级kubernetes集群之从v1.19.3升级到v1.20.2

kubeadm升级前版本:v1.19.3

kubeadm version

本文要升级到最新版:v1.20.2

kubeadm upgrade plan

检查可升级到哪些版本,并验证您当前的集群是否可升级。

可以从上图中看出当前版本和最新版本的差异,以及升级操作。

建立repo文件:

/etc/yum.repos.d/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

如果你之前已经装过这个repo,那么有可能需要执行如下命令清除本地yum缓存,否则看不到最新的k8s--1.20.2版本

yum clean all

yum makecache

笔者由于之前已经有了这个repo,所以必须执行yum缓存清除的操作。

查看支持的版本:

yum list --showduplicates kubeadm --disableexcludes=kubernetes

升级 kubeadm到1.20.2-0:

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

查看版本验证升级成功:

kubeadm version

从集群中移除要升级的节点:

kubectl drain future --ignore-daemonsets

(future是当前节点名称,通过kubectl get nodes获得)

再次kubectl get nodes,可以看到:

kubectl get pods --all-namespaces:可以看到coredns是Pending,说明已经被完全隔离。

升级需要如下image,墙原因需要曲线下载(或者vpn):

k8s.gcr.io/kube-scheduler:v1.20.2

k8s.gcr.io/kube-apiserver:v1.20.2

k8s.gcr.io/kube-controller-manager:v1.20.2

k8s.gcr.io/kube-proxy:v1.20.2

我是曲线下载:

docker pull gotok8s/kube-scheduler:v1.20.2

docker pull gotok8s/kube-apiserver:v1.20.2

docker pull gotok8s/kube-controller-manager:v1.20.2

docker pull gotok8s/kube-proxy:v1.20.2

然后重命名:

docker tag gotok8s/kube-scheduler:v1.20.2 k8s.gcr.io/kube-scheduler:v1.20.2

docker tag gotok8s/kube-apiserver:v1.20.2 k8s.gcr.io/kube-apiserver:v1.20.2

docker tag gotok8s/kube-controller-manager:v1.20.2 k8s.gcr.io/kube-controller-manager:v1.20.2

docker tag gotok8s/kube-proxy:v1.20.2 k8s.gcr.io/kube-proxy:v1.20.2

升级kubeadm k8s cluster版本:

kubeadm upgrade apply v1.20.2

你的coredns pod可能会报这个错:

是因为目前节点还是不可调度状态:kubectl get nodes

需要将worknode的unschedulable改为ture,这样让节点可以被集群调度。

kubectl patch node future -p "{\"spec\":{\"unschedulable\":false}}"

可以看到集群恢复:

查看镜像版本:

kubectl get pods --all-namespaces -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image

kubectl version,看到kubectl client版本还不对:

要重启kubelet:

systemctl daemon-reload

systemctl restart kubelet

重启后依然不对,纳闷了,之前版本升级到这里已经OK了,我采用手动升级kubectl和kubelete。

手动升级kubectl到1.20.2-0:

列出版本找到要升级的版本:

yum list --showduplicates kubectl --disableexcludes=kubernetes

升级 kubectl到1.20.2-0:

yum install -y kubectl-1.20.2-0 --disableexcludes=kubernetes

kubectl version执行后版本正确:

手动升级kubelet到1.20.2-0:

升级前的kubelet版本:kubelet --version

列出版本找到要升级的版本:

yum list --showduplicates kubelet --disableexcludes=kubernetes

升级 kubelet到1.20.2-0:

yum install -y kubelet-1.20.2-0 --disableexcludes=kubernetes

需要重启kubelet才会生效,否则node依然是1.19.3版本:

重启kubelet:

systemctl daemon-reload

systemctl restart kubelet

再次查看node版本:

最后全部重新验证一下:

kubeadm version:正确

kubectl version:正确

kubelet --version:正确

kubectl get nodes:正确

查看镜像版本:正确

kubectl get pods --all-namespaces -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image

至此,kubernetes集群从v1.19.3升级到了v1.20.2。

本文分享自微信公众号 - 千里行走(a_thousands_of_miles),作者:千里行走

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • kubernetes-26:升级kubeadm版本—从v1.13.3升级到v1.19.3

    执行下述命令获得版本升级命令:kubeadm upgrade plan v1.19.3

    千里行走
  • 如何成功启动 Docker 自带的 Kubernetes?(2020年更新)

    大家好,相对之前的文档,因最新的 Docker Desktop 更新后,有些地方不再适用,现根据最新 stable 版本,重新撰写本文档。 毕竟我们使用 Go...

    一斤代码
  • 在KubeVirt使用Intel vGPU

    问卷链接(https://www.surveymonkey.com/r/GRMM6Y2)

    CNCF
  • Kubernetes 集群升级指南:从理论到实践

    导读:集群升级是 Kubernetes 集群生命周期中最为重要的一环,也是众多使用者最为谨慎对待的操作之一。为了更好地理解集群升级这件事情的内涵外延,我们首先会...

    我是阳明
  • Kubernetes 集群升级Docker版本

    院长技术
  • kubernetes系列教程(四)离线升级kubernetes集群

    kubernetes版本升级迭代非常快,每三个月更新一个版本,很多新的功能在新版本中快速迭代,为了与社区版本功能保持一致,升级kubernetes集群,社区...

    HappyLau谈云计算
  • 云原生|Kubernetes 集群升级指南

    导读:集群升级是 Kubernetes 集群生命周期中最为重要的一环,也是众多使用者最为谨慎对待的操作之一。为了更好地理解集群升级这件事情的内涵外延,我们首先会...

    heidsoft
  • 「容器云」k0s 另外一个 Kubernetes 发行版

    是的,你没听错,昨天,Mirantis推出了k0s,一个无摩擦的kubernetes分销渠道。

    首席架构师智库
  • K8S 生态周报| Helm v3.5 正式发布,带来完备的 OCI 支持

    KIND (Kubernetes In Docker )是我很喜欢也一直在参与贡献的 Kubernetes SIG 子项目,本周 KIND 发布了 v0.10 ...

    Jintao Zhang

扫码关注云+社区

领取腾讯云代金券