当前位置: 首页 > news >正文

k8s集群版本升级

Kubernetes 集群版本升级是为了获得最新的功能、增强的安全性和性能改进。然而,升级过程需要谨慎进行,特别是在生产环境中。通常,Kubernetes 集群的版本升级应遵循逐步升级的策略,不建议直接跳过多个版本。

Kubernetes 版本升级的常见流程:

  1. 升级顺序:先升级 控制平面节点(Master Nodes),然后升级 工作节点(Worker Nodes)
  2. 遵循版本兼容性:Kubernetes 支持小版本的逐步升级,例如从 v1.23.x 升级到 v1.24.x,不建议直接从 v1.22 跳到 v1.24
  3. 备份:在升级之前,必须备份 etcd 数据库以及其他必要的集群配置和数据,以防升级失败时可以恢复。

升级流程详细步骤:

1. 查看当前集群版本

首先,检查集群和节点的当前版本:

kubectl version --short

输出:

Client Version: v1.23.0
Server Version: v1.23.0
2. 检查最新可用版本

在开始升级之前,确认你将升级到的目标版本。可以通过 Kubernetes 官方文档查看最新版本,或者使用以下命令检查可用版本:

kubectl cluster-info

或者通过 Kubernetes 发布页面查看最新版本:https://github.com/kubernetes/kubernetes/releases

3. 备份集群数据

备份 etcd 是 Kubernetes 升级过程中非常重要的步骤,特别是在升级控制平面时。可以使用以下命令来备份 etcd 数据:

ETCDCTL_API=3 etcdctl \--endpoints=https://<etcd-endpoint>:2379 \--cacert=<path-to-cafile> --cert=<path-to-certfile> --key=<path-to-keyfile> \snapshot save /path/to/backup.db
4. 升级控制平面节点(Master Nodes)

Kubernetes 控制平面节点管理集群的状态,所有的组件(如 API Server、Controller Manager、Scheduler 等)都在这些节点上运行。升级这些组件是集群升级的关键步骤。

4.1 使用 kubeadm 升级

如果你使用 kubeadm 部署集群,升级步骤如下:

  1. 更新 kubeadm 工具
    在控制平面节点上,升级 kubeadm 工具到目标版本。

    sudo apt-get update && sudo apt-get install -y kubeadm=1.24.0-00
    
  2. 查看升级计划
    查看可升级的版本和需要升级的组件。

    kubeadm upgrade plan
    
  3. 执行控制平面升级
    执行升级操作,该命令会自动更新控制平面的所有组件。

    sudo kubeadm upgrade apply v1.24.0
    
  4. 更新 kubelet 和 kubectl
    在控制平面节点上更新 kubeletkubectl 工具到目标版本。

    sudo apt-get install -y kubelet=1.24.0-00 kubectl=1.24.0-00
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
4.2 使用其他工具(如 kops、rke、kubespray)升级(国内推荐)

如果你的集群是通过其他工具(如 kopsrkekubespray)创建的,需参考对应工具的文档进行升级,以下是一些链接:

  • kops 升级文档
  • RKE 升级文档
  • Kubespray 升级文档
5. 升级工作节点(Worker Nodes)

在控制平面升级完成并确认集群正常工作后,可以开始升级工作节点。

5.1 将工作节点标记为不可调度

使用 cordon 命令将工作节点标记为不可调度,避免新的 Pod 被调度到该节点:

kubectl cordon <node-name>
5.2 驱逐节点上的 Pod

使用 drain 命令将节点上正在运行的 Pod 驱逐到其他节点:

kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
5.3 升级 kubeadm、kubelet 和 kubectl

在工作节点上,按照与控制平面相同的方式升级 kubeadmkubeletkubectl

  1. 升级 kubeadm 工具

    sudo apt-get update && sudo apt-get install -y kubeadm=1.24.0-00
    
  2. 执行节点升级
    使用 kubeadm 升级该节点。

    sudo kubeadm upgrade node
    
  3. 升级 kubelet 和 kubectl

    sudo apt-get install -y kubelet=1.24.0-00 kubectl=1.24.0-00
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
5.4 恢复节点调度

升级完成后,将节点重新标记为可调度:

kubectl uncordon <node-name>
5.5 确认节点状态

确保节点升级成功并处于 Ready 状态:

kubectl get nodes
6. 验证升级成功

升级完成后,验证集群是否正常工作,所有组件和节点是否处于健康状态:

kubectl get nodes
kubectl get pods -n kube-system

检查 kube-system 命名空间中的核心组件(如 kube-apiserverkube-scheduler 等)的状态。

注意事项:

  1. 滚动升级:建议逐个节点进行升级,特别是在生产环境中,避免影响整个集群的可用性。
  2. 备份和恢复计划:在升级前做好备份,确保能够在必要时回滚到稳定的版本。
  3. 版本兼容性:Kubernetes 版本遵循严格的升级路径,不建议跨版本跳跃式升级,应按照每次升级一个次版本的方式进行。

通过这些步骤,你可以安全地升级 Kubernetes 集群到最新版本,并确保集群的高可用性和稳定性。

相关文章:

k8s集群版本升级

Kubernetes 集群版本升级是为了获得最新的功能、增强的安全性和性能改进。然而&#xff0c;升级过程需要谨慎进行&#xff0c;特别是在生产环境中。通常&#xff0c;Kubernetes 集群的版本升级应遵循逐步升级的策略&#xff0c;不建议直接跳过多个版本。 Kubernetes 版本升级的…...

XML 和 SimpleXML 简介

XML 和 SimpleXML 简介 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它定义了一组规则&#xff0c;用于在文档中编码数据&#xff0c;以便人和机器都能理解。XML 的设计目标是既易于人类阅读&#xff0c;也易于机器解析。SimpleXML 是 PHP…...

MySQL 中 LIKE 语句的 `%` 和 `_` 以及 BLOB 和 TEXT 的详细解析和案例示范

1. LIKE 语句中的 % 和 _ 用法 1.1 % 通配符的用法 % 通配符代表零个或多个字符。它是 MySQL 中用于模糊匹配的强大工具之一&#xff0c;可以在任何字符的位置使用。 示例 1&#xff1a;查找以特定字符开头的记录 假设我们有一个电商订单系统的 orders 表&#xff0c;其中包…...

git clone卡在Receiving objects

git clone卡在Receiving objects 一直卡主 $ git clone gitxxx.git Cloning into xxx... remote: Enumerating objects: 75926, done. remote: Counting objects: 100% (18844/18844), done. remote: Compressing objects: 100% (6566/6566), done. Receiving objects: 60% (…...

vue+ant 弹窗可以拖动

通过自定义指令实现拖拽功能 在main.js里加入drag自定义指令 我自己测试时发现modal不管如何设置宽度&#xff0c;居中等&#xff0c;他的初始的left都为0&#xff0c;如果不设置好&#xff0c;容易出现点击后刚开始移动弹窗会偏移一段距离。 Vue.directive(drag, {bind(el)…...

(42)MATLAB中使用fftshift绘制以零为中心的功率谱

文章目录 前言一、MATLAB代码二、仿真结果画图 前言 在分析信号的频率分量时&#xff0c;将零频分量平移到频谱中心会很有帮助。本例给出绘制以零为中心的功率谱的方法。 一、MATLAB代码 代码如下&#xff1a; f 1; % 余弦波的振荡频率&#xf…...

Windows本地部署中文羊驼模型(Chinese-Alpaca-Pro-7B)(通俗易懂版)

最近由于项目原因需要部署大语言模型, 但碍于经济实力, 只能部署在笔记本电脑上部署量化模型, &#xff08;电脑至少有16G运行内存&#xff09;&#xff0c;搜集了网上的相关部署资料仍然踩了不少坑&#xff0c;原因在于开源项目在不断更新&#xff0c;导致我们看了别人的教程仍…...

Web3的挑战与机遇:技术发展的现状分析

在Web3的世界中&#xff0c;去中心化和用户主权的理念正逐渐走向主流&#xff0c;推动了现有商业模式和技术生态系统的深刻变革。区块链技术及其核心应用之一——智能合约&#xff0c;正在促使这一转变的发生。智能合约的主要功能是通过自动化和预设协议执行&#xff0c;以减少…...

LangGraph - Hierarchical Agent Teams

本文翻译整理自 Hierarchical Agent Teams https://langchain-ai.github.io/langgraph/tutorials/multi_agent/hierarchical_agent_teams/ 文章目录 一、前言二、设置三、创建工具四、Helper Utilities五、定义代理 Team研究 Team文档写作Team 六、添加图层 一、前言 在前面的…...

2021-04-14 proteus中仿真时74HC245三态双向端口扩展输出

缘由proteus中仿真时74HC245输出时电平显示灰色&#xff08;不确定电平状态&#xff09;是为什么&#xff1f;-编程语言-CSDN问答 缘由C语言翻译单片机开关检测器-编程语言-CSDN问答 参考74ls245的工作原理及作用详解 - 电子发烧友网 参考74ls245_百度百科...

解决UNSPSC商品分类的层级不足的方法

《联合国标准产品和服务守则》&#xff08;UNSPSC&#xff09;是一个分层框架&#xff0c;旨在对产品和服务进行分类。其主要目标是通过提供统一的方法来对产品和服务进行分类&#xff0c;从而简化采购和供应链管理。 虽然 UNSPSC 有效地将产品分为各种商品类别&#xff0c;但…...

Pytest基于fixture的参数化及解决乱码问题

我们知道&#xff0c;Pytest是Python技术栈下进行自动化测试的主流测试框架。支持灵活的测试发现、执行策略&#xff0c;强大的Fixture夹具和丰富的插件支持。 除了通过pytest的parametrize标签进行参数化外&#xff0c;我们通过fixture的param参数也可以比较方便地实现参数化…...

使用excel.js(layui-excel)进行layui多级表头导出,根据单元格内容设置背景颜色,并将导出函数添加到toolbar

本段是菜狗子的碎碎念&#xff0c;解决办法请直接从第二段开始看。layui多级表头的导出&#xff0c;弄了两天才搞定&#xff0c;中途一度想放弃&#xff0c;还好坚持下来了。一开始用的是layui的toolbar里自带的那个导出&#xff0c;但是多级表头没有正常导出&#xff0c;单元格…...

Mysql 5.7 安装与卸载(非常详细)

一、环境介绍 操作系统&#xff1a;CentOS 7 MySQL&#xff1a;5.7 二、MySQL卸载 # 查看软件 rpm -qa|grep mysql # 卸载MySQL yum remove -y mysql mysql-libs mysql-common rm -rf /var/lib/mysql rm /etc/my.cnf 继续查看是否还有 MySQL 软件&#xff0c;有的话继续删…...

030 elasticsearch查询、聚合

文章目录 查询聚合查询RestHighLevelClientElasticsearchRestTemplat SpringData对ES客户端的封装&#xff1a;ElasticsearchRestTemplate SpringData对CRUD的封装&#xff1a;ElasticsearchRepository 原生ES客户端&#xff1a;RestHighLevelClient 查询 package com.xd.cube…...

前端工程启动工具

一些思考 在公司项目中&#xff0c;需要启一个新的前端工程&#xff08;一个基于Webpack的React工程&#xff09;。因为同一个项目中有其他的前端工程&#xff0c;我们最开始想的是参考另外一个工程的配置重启一个新的工程&#xff0c;但是又因为原来的工程用的库版本都比较老…...

游戏逆向基础-跳出游戏线程发包

附加游戏后下断点 bp ws2_32.send send函数断下后&#xff0c;可以看到数据地址每次都一样 可以说明这个游戏是线程发包&#xff0c;所以直接在数据窗口中转到这个地址&#xff0c;然后对这个地址下硬件写入断点。 下了硬件写入断点后可以一层一层往上面跟&#xff0c;确定写…...

做海外网站需要准备什么

一&#xff0c;购买域名 在租用国外服务器之前&#xff0c;您需要购买域名。域名是访问网站的标志&#xff0c;也是网站品牌的一部分。因此&#xff0c;在购买域名时&#xff0c;需要考虑域名的可记忆性、简短性和搜索性&#xff0c;使网站更容易被用户记住。 二&#xff0c;租…...

通过OpenCV实现 Lucas-Kanade 算法

目录 简介 Lucas-Kanade 光流算法 实现步骤 1. 导入所需库 2. 视频捕捉与初始化 3. 设置特征点参数 4. 创建掩模 5. 光流估计循环 6. 释放资源 结论 简介 在计算机视觉领域&#xff0c;光流估计是一种追踪物体运动的技术。它通过比较连续帧之间的像素强度变化来估计图…...

7、Vue2(二) vueRouter3+axios+Vuex3

14.vue-router 3.x 路由安装的时候不是必须的&#xff0c;可以等到使用的时候再装&#xff0c;如果之前没有安装的话&#xff0c;可以再单独安装。之前的终端命令行不要关闭&#xff0c;再重新开一个&#xff0c;还需要再package.json文件的依赖中添加。 如果忘记之前是否有安…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...