1. 前言

Kubernetes是不可以进行跨版本升级的,只能一个版本一个版本的升级,本文从1.19版本升级到1.22版本。
主要参考官网文档:Upgrading kubeadm clusters

2. 从1.19升级到1.20

2.1 master节点升级

2.1.1 使用yum list 查看可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes
# find the latest 1.20 version in the list
# it should look like 1.20.x-0, where x is the latest patch

2.1.2 下载安装kubeadm

下载:

# replace x in 1.20.x-0 with the latest patch version
yum install -y kubeadm-1.20.x-0 --disableexcludes=kubernetes

验证:

kubeadm version

排空master节点:
通过将节点标记为不可调度并驱逐工作负载来准备节点进行维护,将pod优雅的中止

kubectl drain <master-name> --ignore-daemonsets

验证升级计划:

kubeadm upgrade plan

选择要升级的版本:

sudo kubeadm upgrade apply v1.20.x

在这里插入图片描述
更新Kubeadm:
同时更新apiserver 、controller-manager、scheduler、proxy、etcd、coredns

sudo kubeadm upgrade node

2.1.3 下载安装kubelet & kubectl

安装:

yum install -y kubelet-1.20.x-0 kubectl-1.20.x-0 --disableexcludes=kubernetes

重启:

sudo systemctl daemon-reload
sudo systemctl restart kubelet

2.2 升级node节点

2.2.1 排空node节点

在master上执行:

kubectl drain <node-name> --ignore-daemonsets

2.2.2 下载kubeadm

在node节点上执行:

yum install -y kubeadm-1.20.x-0 --disableexcludes=kubernetes

更新Kubeadm:

sudo kubeadm upgrade node

2.2.3 升级node节点上的kubelet & kubectl

在node节点上执行:

yum install -y kubelet-1.20.x-0 kubectl-1.20.x-0 --disableexcludes=kubernetes

重启:

sudo systemctl daemon-reload
sudo systemctl restart kubelet

2.2.4 取消对节点的保护

在master节点上运行:
通过将节点标记为可调度,让节点重新上线

kubectl uncordon <node-to-drain>

2.3 验证

kubectl get nodes

在这里插入图片描述

3. 从1.20升级到1.21

同上步骤只需更改版本号

4. 从1.21升级到1.22

同上步骤只需更改版本号

Logo

开源、云原生的融合云平台

更多推荐