kubeadm 升级 k8s集群 1.17到1.20

server/2024/9/25 6:23:50/

云原生学习路线导航页(持续更新中)

本文是 Kubernetes 基础学习 系列文章,主要讲解 使用kubeadm,将kubernetes集群从1.17升级到1.20

kubernetes_3">1.kubernetes一般不要跨大版本升级

  • 一般来说,跨越多个主要版本的升级需要逐个升级每个中间版本
  • 因此,无法直接将kubernetes从1.17直接升级到1.20或更高版本,需要按照1.17–>1.18–>1.19–>1.20的顺序一一进行升级
  • 本文暂时只适用于使用 kubeadm 安装的 kubernetes 集群

kubeadm_8">2.kubeadm升级单节点集群的步骤

如果你的kubernetes集群只有一个节点同时作为masternode,没有其他masternode,可以直接按照下面的步骤升级,否则请看第3部分

kubernetes117118_10">2.1.kubernetes集群从1.17–>1.18

# 查看kubeadm支持的所有版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes# 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
# 如这里选择1.18.20-0
yum install -y kubeadm-1.18.20-0 --disableexcludes=kubernetes# 验证kubeadm是否升级成功
kubeadm version# 将kubelet和kubectl也升级一下
yum downgrade kubelet-1.18.20 kubectl-1.18.20# 查看升级计划,如果没有明显的报错,就可以继续
kubeadm upgrade plan# 执行升级
kubeadm upgrade apply v1.18.20# 注:如果上面升级报错:# 报错 - There are kubelets in this cluster that are too old that have these versions,# 则可以添加--force强制升级# kubeadm upgrade apply v1.18.20 --force# 出现这段,代表升级成功
# [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.20". Enjoy!

kubernetes118119_41">2.2.kubernetes集群从1.18–>1.19

# 查看kubeadm支持的所有版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes# 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
# 如这里选择1.19.16-0
yum install -y kubeadm-1.19.16-0 --disableexcludes=kubernetes# 验证kubeadm是否升级成功
kubeadm version# 将kubelet和kubectl也升级一下
yum downgrade kubelet-1.19.16 kubectl-1.19.16# 查看升级计划,如果没有明显的报错,就可以继续
kubeadm upgrade plan# 执行升级
kubeadm upgrade apply v1.19.16# 注:如果上面升级报错:# 报错 - There are kubelets in this cluster that are too old that have these versions,# 则可以添加--force强制升级# kubeadm upgrade apply v1.19.16 --force# 出现这段,代表升级成功
# [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.19.16". Enjoy!

kubernetes119120_73">2.3.kubernetes集群从1.19–>1.20

# 查看kubeadm支持的所有版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes# 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
# 如这里选择1.20.15-0
yum install -y kubeadm-1.20.15-0 --disableexcludes=kubernetes# 验证kubeadm是否升级成功
kubeadm version# 将kubelet和kubectl也升级一下
yum downgrade kubelet-1.20.15 kubectl-1.20.15# 查看升级计划,如果没有明显的报错,就可以继续
kubeadm upgrade plan# 执行升级
kubeadm upgrade apply v1.20.15# 注:如果上面升级报错:# 报错 - There are kubelets in this cluster that are too old that have these versions,# 则可以添加--force强制升级# kubeadm upgrade apply v1.20.15 --force# 出现这段,代表升级成功
# [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.20.15". Enjoy!

kubeadm_104">3.kubeadm升级多节点集群的步骤

下面演示 1.17–>1.18 的过程,升级后,用户可自行再升级到1.19和1.20,只需修改版本号即可

kubeadmmaster_106">3.1.kubeadm升级一个master

  • 如果你有多个master,先选择一个master,按照第2部分的步骤,将1.17升级到1.18
    # 查看kubeadm支持的所有版本
    yum list --showduplicates kubeadm --disableexcludes=kubernetes# 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
    # 如这里选择1.18.20-0
    yum install -y kubeadm-1.18.20-0 --disableexcludes=kubernetes# 验证kubeadm是否升级成功
    kubeadm version# 将kubelet和kubectl也升级一下
    yum downgrade kubelet-1.18.20 kubectl-1.18.20# 查看升级计划,如果没有明显的报错,就可以继续
    kubeadm upgrade plan# 执行升级
    kubeadm upgrade apply v1.18.20# 注:如果上面升级报错:# 报错 - There are kubelets in this cluster that are too old that have these versions,# 则可以添加--force强制升级# kubeadm upgrade apply v1.18.20 --force# 出现这段,代表升级成功
    # [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.20". Enjoy!
    

kubeadmmasternode_137">3.2.kubeadm升级其他masternode

# 升级kubeadm
yum install -y kubeadm-1.18.20-0 --disableexcludes=kubernetes# 查看kubeadm升级是否成功
kubeadm version# 查看升级计划
kubeadm upgrade plan# 注意,这里不是apply,而是node
kubeadm upgrade node# 驱逐工作负载
# 将 <node-to-drain> 替换为你要腾空的控制面节点名称
kubectl drain <node-to-drain> --ignore-daemonsets# 升级kubelet和kubectl
yum install -y kubelet-1.18.20-0 kubectl-1.18.20-0 --disableexcludes=kubernetes# 重启kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet# 解除节点保护
# 将 <node-to-uncordon> 替换为你的节点名称
kubectl uncordon <node-to-uncordon>

4.参考链接

  • kubernetes官方升级文档
  • https://www.cnblogs.com/dudu/p/14274601.html
  • https://cloudpods.csdn.net/65780f9ab8e5f01e1e449335.html
  • https://www.jianshu.com/p/e8abd105caa9

http://www.ppmy.cn/server/15237.html

相关文章

Apache 配置Https 转发Tomcat ,tomcat中的项目也可以使用https

1.从Apache服务器和Nginx服务器差不多&#xff0c;都可以做反向代理服务器 2.首先需要拆解下步骤&#xff1a; 2.1 Apache 支持Https; 2.2 Apache 代理转发&#xff1b; 2.3 Apache https 代理转发Tomcat &#xff1b; 3. 具体的步骤 步骤一&#xff1a;下载SSL证书 登录…

C语言指针进阶:各类型指针变量详解

目录 1. 字符指针变量2. 数组指针变量2.1 什么是数组指针变量2.2 数组指针变量的初始化 3. 二维数组传参的本质4. 函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用4.3 代码分析4.3.1 typedef 关键字 5. 函数指针数组6. 转移表 正文开始。 1. 字符指针变量 我们可以…

MySQL中如何随机获取一条记录

点击上方蓝字关注我 随机获取一条记录是在数据库查询中常见的需求&#xff0c;特别在需要展示随机内容或者随机推荐的场景下。在 MySQL 中&#xff0c;有多种方法可以实现随机获取一条记录&#xff0c;每种方法都有其适用的情况和性能特点。在本文中&#xff0c;我们将探讨几种…

以算力深挖数据应用价值!和鲸助力北京市市场监管数据应用创新竞赛圆满收官!

历时三个多月&#xff0c;北京市市场监管数据应用创新竞赛&#xff08;以下简称“竞赛”&#xff09;圆满收官。本次竞赛旨在挖掘数据的潜在价值&#xff0c;以优化营商环境、智慧监管、高质量发展为核心议题&#xff0c;鼓励参赛者深入结合监管数据&#xff0c;开展精准而深入…

MYSQL 存储java.sql.Timestamp类型的数据时,mysql存储时间和java获取到的时间相差8小时

###JAVA JDBC驱动 com.mysql.cj.jdbc.DriverJDBC连接字符串 jdbc:mysql://127.0.0.1:3006/db?useUnicode=true&characterEncoding=UTF8&useLegacyDatetimeCode=false&serverTimezone=UTCMySQL 时区 show global variables like “%time_zone%”; 问题分析 …

N5245B PNA-X 微波网络分析仪

N5245B PNA-X 微波网络分析仪 " 900 Hz/10 MHz 至 50 GHz " N5245B PNA-X 微波网络分析仪&#xff0c;900 Hz/10 MHz 至 50 GHz&#xff0c;2 端口和 4 端口&#xff0c;多达三个信号源。 特点 实现卓越性能 这款 PNA-X 分析仪不仅仅是一款矢量网络分析仪&a…

【python】给函数参数和返回值标注类型

&#xff08;1&#xff09;类型标注进化历史 从Python 3.0开始的类型标注 Python 3.0开始&#xff0c;Python 已经支持基础的类型标注&#xff0c;例如&#xff0c;你可以在函数声明中这样写&#xff1a; def func(a: int, b: str) -> bool:return b.isdigit() and a >…

JavaEE 初阶篇-深入了解 UDP 通信与 TCP 通信(综合案例:实现 TCP 通信群聊)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 UDP 通信 1.1 DatagramSocket 类 1.2 DatagramPacket 类 1.3 实现 UDP 通信&#xff08;一发一收&#xff09; 1.3.1 客户端的开发 1.3.2 服务端的开发 1.4 实现 …