kubeadm 升级 k8s集群 1.17到1.20

news/2024/9/25 2:34:21/

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

本文是 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/news/1429116.html

相关文章

软考138-上午题-【软件工程】-软件评审

一、软件评审 通常&#xff0c;把“质量”理解为“用户满意程度”。为了使得用户满意&#xff0c;有以下两个必要条件&#xff1a; (1) 设计的规格说明书符合用户的要求&#xff0c;这称为设计质量。 (2) 程序按照设计规格说明所规定的情况正确执行&#xff0c;这称为程序质…

前端入门:HTML(CSS边框综合案例)

案例&#xff1a; 源代码&#xff1a; css-borders.html: <body> <div id"square"> </div> <br> <div id"triangle"> </div> <br> <div id"trapezium"> </div> <br> <div id…

【数据结构项目】通讯录

个人主页点这里~ 原文件在gitee里~ 通讯录的实现 基于动态顺序表实现通讯录项目1、功能要求2、代码实现file.hfile.cList.hList.ctest.c 基于动态顺序表实现通讯录项目 准备&#xff1a;结构体、动态内存管理、顺序表、文件操作 1、功能要求 ①能够存储100个人的通讯信息 ②…

Spark和Hadoop的安装

实验内容和要求 1&#xff0e;安装Hadoop和Spark 进入Linux系统&#xff0c;完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后&#xff0c;再安装Spark&#xff08;Local模式&#xff09;。 2&#xff0e;HDFS常用操作 使用hadoop用户名登录进入Linux系统&#xff0c;启动…

基于spark进行数据分析的心力衰竭可视化大屏项目

基于spark进行数据分析的心力衰竭可视化大屏项目 项目背景 在当今的医疗领域&#xff0c;数据驱动的决策变得日益重要。心力衰竭作为常见的心血管疾病&#xff0c;其临床数据的分析对于改善患者治疗结果至关重要。本文将介绍如何利用Apache Spark进行大规模心力衰竭临床数据的…

Spark---RDD的创建分类和基础操作算子详解

一、RDD的创建 原生api提供了两种创建方式&#xff0c;一种就是读取文件textFile&#xff0c;还有一种就是加载一个scala集合parallelize。当然&#xff0c;也可以通过transformation算子来创建的RDD。 //创建RDD//加载数据&#xff0c;textFile&#xff08;参数1&#xff0c;…

Vim 编辑器中大写键的命令

Vim 编辑器中有很多大写键的命令&#xff0c;这些命令通常用于执行特定的操作或进入特定的模式。 A&#xff1a;在当前行的末尾进入插入模式。B&#xff1a;向后移动一个单词。C&#xff1a;更改从当前光标位置到行尾的内容。进入插入模式。D&#xff1a;删除从当前光标位置到…

k8s之etcd

1.特点&#xff1a; etcd 是云原生架构中重要的基础组件。有如下特点&#xff1a; 简单&#xff1a;安装配置简单&#xff0c;而且提供了 HTTP API 进行交互&#xff0c;使用也很简单键值对存储&#xff1a;将数据存储在分层组织的目录中&#xff0c;如同在标准文件系统中监…