本文记录的是将 kubernetes 集群从 1.17.0 升级至最新版 1.20.2 的实际操作步骤,由于 1.17.0 无法直接升级到 1.20.2,需要进行2次过滤升级,1.17.0 -> 1.18.0 -> 1.19.0 -> 1.20.2。

先在 control plane node 上进行升级操作,通过下面的命令查看最新版 kubeadm 的版本号

apt update
apt-cache madison kubeadm

最新版是 1.20.2-00,用下面的命令安装最新版 kubeadm

apt-get update && \
apt-get install -y --allow-change-held-packages kubeadm=1.20.2-00

然后查看升级计划

kubeadm upgrade plan

提示无法直接升级1.20.2

[upgrade/config] FATAL: this version of kubeadm only supports deploying clusters with the control plane version >= 1.19.0. Current version: v1.17.0

于是尝试先升级到 1.19.0

apt-get update && \
apt-get install -y --allow-change-held-packages --allow-downgrades kubeadm=1.19.0-00

查看升级计划1.19.0

[upgrade/config] FATAL: this version of kubeadm only supports deploying clusters with the control plane version >= 1.18.0. Current version: v1.17.0

只能先升级到1.18.0

apt-get update && \
apt-get install -y --allow-change-held-packages --allow-downgrades kubeadm=1.18.0-00

查看升级计划

kubeadm upgrade plan

启动升级操作

kubeadm upgrade apply v1.18.0

集群成功升级至 1.18.0

[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.0". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.

分别在 control plane node 与 worker node 上 将 kubelet 和 kubectl 升级至 1.18.0(如果是生产环境,在升级之前先 uncordon 要升级的节点)

apt-get update && \
apt-get install -y --allow-change-held-packages kubelet=1.18.0-00 kubectl=1.18.0-00
systemctl daemon-reload && systemctl restart kubelet

继续,向 1.19.0 升级!

升级 kubeadm 至 1.19.0

apt-get install -y --allow-change-held-packages --allow-downgrades kubeadm=1.19.0-00

升级集群至 1.19.0

kubeadm upgrade plan
kubeadm upgrade apply v1.19.0

升级 kubelet 和 kubectl 至 1.19.0

apt-get install -y --allow-change-held-packages kubelet=1.19.0-00 kubectl=1.19.0-00
systemctl daemon-reload && systemctl restart kubelet

冲刺,向最新版升级!

升级 kubeadm 至 1.20.2

apt-get install -y --allow-change-held-packages kubeadm=1.20.2-00

升级集群至 1.20.2

kubeadm upgrade plan
kubeadm upgrade apply v1.20.2

升级 kubelet 和 kubectl 至 1.20.2

apt-get install -y --allow-change-held-packages kubelet=1.20.2-00 kubectl=1.20.2-00
systemctl daemon-reload && systemctl restart kubelet

胜利,升级成功!

NAME          STATUS   ROLES                  AGE     VERSION
k8s-master0 Ready control-plane,master 371d v1.20.2
kube-node1 Ready <none> 2d15h v1.20.2
kube-node2 Ready <none> 38h v1.20.2
kube-node3 Ready <none> 17h v1.20.2

Kubernetes 升级过程记录:从 1.17.0 升级至最新版 1.20.2的更多相关文章

  1. Kubernetes 升级记录:从 1.16.3 升级至 1.17.0

    参考官方文档 Upgrading kubeadm clusters 在 ubuntu 18.04 上完成了升级,记录一下升级步骤. 一.升级第一个 master 节点 apt-get 安装 kubea ...

  2. 升级Windows 10 正式版过程记录与经验

    升级Windows 10 正式版过程记录与经验 [多图预警]共50张,约4.6MB 系统概要: 预装Windows 8.1中文版 64位 C盘Users 文件夹已经挪动到D盘,并在原处建立了符号链接. ...

  3. 升级vue全家桶过程记录

    背景 如果你使用了element-ui的el-tabs组件,并且想要单独升级element-ui至2.10.0,你会发现,使用了el-tabs组件的页面只要打开就卡死.原因是element-ui~2. ...

  4. linux-i386(ubuntu)下编译安装gsoap_2.8.17过程记录

    过程记录 :  1.下载gsoap_2.8.17.zip 并 解压 : $unzip gsoap_2.8.17.zip     2.进入解压后的目录gsoap-2.8   3.自动配置编译环境:  $ ...

  5. 升级到 ExtJS 5的过程记录

    升级到 ExtJS 5的过程记录   最近为公司的一个项目创建了一个 ExtJS 5 的分支,顺便记录一下升级到 ExtJS 5 所遇到的问题以及填掉的坑.由于 Sencha Cmd 的 sencha ...

  6. 002.使用kubeadm安装kubernetes 1.17.0

    一 环境准备 1.1 环境说明 master      192.168.132.131      docker-server1 node1       192.168.132.132      doc ...

  7. Log4j2又爆雷!2.16.0存在DOS风险,升级2.17.0可解决

    本以为,经过上周的2.16.0版本升级,Log4j2的漏洞修复工作,大家基本都要告一段落了. 万万没想到,就在周末,Log4j官方又发布了新版本:2.17.0 该版本主要修复安全漏洞:CVE-2021 ...

  8. Spring Boot发布2.6.2、2.5.8:升级log4j2到2.17.0

    12月22日,Spring官方发布了Spring Boot 2.5.8(包括46个错误修复.文档改进和依赖项升级)和2.6.2(包括55个错误修复.文档改进和依赖项升级). 这两个版本均为缺陷修复版本 ...

  9. 修复升级ndk到17.0.4754217编译so失败问题

    今天编译工程总过不去,查看失败原因,因为ndk的mips编译不过去. A problem occurred starting process ‘command ‘/Users/didi/Library ...

随机推荐

  1. Security篇:RememberMe

    RememberMe功能 rememberMeServices接口 有AbstractRememberMeServices抽象类 PersistentTokenBasedRememberMeServi ...

  2. 2020.12.16 模拟赛x+1

    A. 接力比赛 跑两遍背包,再进行一些玄学的剪枝 代码 #include<cstdio> #include<algorithm> #define rg register inl ...

  3. G1 收集器

    基础知识 性能指标 在调优Java应用程序时,重点通常放在两个主要目标上:响应性 或 吞吐量. 响应性Responsiveness 是指应用程序对请求的数据做出响应的速度: 桌面用户界面对事件的响应速 ...

  4. DRF对Django请求响应做了技术升级

    Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优 ...

  5. 简单介绍下各种 JavaScript 解析器

    作者:沧海 各种js解析器是前端工程化的基石,可以说如果没有它,很多工程化都无法正常执行,我们每天用到的babel.webpack.eslint.TypeScript背后都需要一套对应的js解析器,今 ...

  6. SQLServer多事务——事务嵌套

    在ERP中,偶尔会有存储过程里面继续调用存储过程的情况 其中更有一些特殊的存储过程分别都使用了存储过程,大致可以分为下面几种情况: 1.平行事务,在多个事务中,任意一个成功则提交数据库,失败则各自RO ...

  7. Java中常见的json序列化类库 - Jackson

    Jackson 介绍 Jackson框架是基于Java平台的一套数据处理工具,被称为"最好的Java Json解析器". Jackson框架包含了3个核心库:streaming,d ...

  8. 你的项目中使用过哪些JSTL标签?

    项目中主要使用了JSTL的核心标签库,包括< c:if>.< c:choose>.< c: when>.< c: otherwise>.< c:f ...

  9. javaScript编写9*9口诀

    学习html+css+javaScript<!DOCTYPE html> <html> <head> <title>chaoba</title&g ...

  10. ESXi 中重新启动管理代理

    使用直接控制台用户界面 (DCUI)重启管理代理: 连接到您的 ESXi 主机的控制台. 按 F2 自定义系统. 以 root 身份登录. 使用上下箭头导航至故障排除选项>重新启动管理代理. 按 ...