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

Centos7升级K8S集群

Centos7升级K8S集群

适用于使用kubeadm部署的k8s环境。

Kubernetes 版本以 x.y.z 表示,其中 x 是主要版本, y 是次要版本,z 是补丁版本。

升级时不可以跳过次版本。 例如,你只能从 1.y 升级到 1.y+1,而不能从 1.y 升级到 1.y+2。

版本偏差说明:

https://kubernetes.io/zh-cn/releases/version-skew-policy/

注意

生产环境升级之前注意备份数据。为了方便恢复,如果是虚拟机环境可以借助快照进行恢复。

本次操作升级的为一个单节点的K8S环境,主要步骤如下:

1. 升级kubeadm

# 当前版本
[root@k8s ~]# kubectl get node
NAME   STATUS   ROLES                  AGE     VERSION
k8s    Ready    control-plane,master   3d18h   v1.22.0# 查看可用的kubeadm版本。
[root@k8s ~]# yum list --showduplicates kubeadm --disableexcludes=kubernetes# 升级kubeadm到1.23.17-0版本。
[root@k8s ~]# yum install -y kubeadm-1.23.17-0 --disableexcludes=kubernetes# kubeadm upgrade plan验证升级计划,COMPONENT CURRENT TARGET :告诉我们组件可以从当前版本升级到的版本。
[root@k8s ~]# kubeadm upgrade plan
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[preflight] Running pre-flight checks.
[upgrade] Running cluster health checks
[upgrade] Fetching available versions to upgrade to
[upgrade/versions] Cluster version: v1.22.0
[upgrade/versions] kubeadm version: v1.23.17
I0615 16:48:13.655864   54942 version.go:256] remote version is much newer: v1.30.2; falling back to: stable-1.23
[upgrade/versions] Target version: v1.23.17
[upgrade/versions] Latest version in the v1.22 series: v1.22.17Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT   CURRENT       TARGET
kubelet     1 x v1.22.0   v1.22.17Upgrade to the latest version in the v1.22 series:COMPONENT                 CURRENT   TARGET
kube-apiserver            v1.22.0   v1.22.17
kube-controller-manager   v1.22.0   v1.22.17
kube-scheduler            v1.22.0   v1.22.17
kube-proxy                v1.22.0   v1.22.17
CoreDNS                   v1.8.4    v1.8.6
etcd                      3.5.0-0   3.5.6-0You can now apply the upgrade by executing the following command:kubeadm upgrade apply v1.22.17_____________________________________________________________________Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT   CURRENT       TARGET
kubelet     1 x v1.22.0   v1.23.17Upgrade to the latest stable version:COMPONENT                 CURRENT   TARGET
kube-apiserver            v1.22.0   v1.23.17
kube-controller-manager   v1.22.0   v1.23.17
kube-scheduler            v1.22.0   v1.23.17
kube-proxy                v1.22.0   v1.23.17
CoreDNS                   v1.8.4    v1.8.6
etcd                      3.5.0-0   3.5.6-0You can now apply the upgrade by executing the following command:kubeadm upgrade apply v1.23.17_____________________________________________________________________The table below shows the current state of component configs as understood by this version of kubeadm.
Configs that have a "yes" mark in the "MANUAL UPGRADE REQUIRED" column require manual config upgrade or
resetting to kubeadm defaults before a successful upgrade can be performed. The version to manually
upgrade to is denoted in the "PREFERRED VERSION" column.API GROUP                 CURRENT VERSION   PREFERRED VERSION   MANUAL UPGRADE REQUIRED
kubeproxy.config.k8s.io   v1alpha1          v1alpha1            no
kubelet.config.k8s.io     v1beta1           v1beta1             no
_____________________________________________________________________

2. 升级各个组件

接下来升级各个组件,包括kube-apiserver,kube-controller-manager等等

kubeadm upgrade apply v1.23.17 升级各个组件到1.23.17版本,如果etcd这个组件不想升级,可以加上选项:kubeadm upgrade apply v1.23.17 --etcd-upgrade=false。

# 通过将节点标记为不可调度并腾空节点为节点作升级准备:
[root@k8s ~]# kubectl drain k8s --ignore-daemonsets --delete-emptydir-data# 升级各个组件
[root@k8s ~]# kubeadm upgrade apply v1.23.17 --etcd-upgrade=false# 如果是worker节点,执行`kubeadm upgrade node`升级# 解除节点保护
[root@k8s ~]# kubectl get node
NAME   STATUS                     ROLES                  AGE     VERSION
k8s    Ready,SchedulingDisabled   control-plane,master   3d18h   v1.22.0
[root@k8s ~]# kubectl uncordon k8s
node/k8s uncordoned
[root@k8s ~]# kubectl get node
NAME   STATUS   ROLES                  AGE     VERSION
k8s    Ready    control-plane,master   3d18h   v1.22.0
# 此时查询到的版本还是老版本

3. 升级kubelet和kubectl

升级 kubelet 和 kubectl到1.21.9版本:

[root@k8s ~]# yum install -y kubelet-1.23.17 kubectl-1.23.17 --disableexcludes=kubernetes# 重启kubelet
[root@k8s ~]# systemctl daemon-reload ;systemctl restart kubelet# 查看版本信息
[root@k8s ~]# kubectl get node
NAME   STATUS   ROLES                  AGE     VERSION
k8s    Ready    control-plane,master   3d19h   v1.23.17

本文只记录了单节点环境的升级,如果是升级工作节点步骤与上面过程类似,只是worker节点不需要验证升级计划、无需升级管理组件,在上面的步骤中,将节点设置为不可调度后,执行kubeadm upgrade node升级worker节点即可。

升级worker节点步骤:

  1. 升级kubeadm版本;
  2. 腾空节点;
  3. 管理节点执行kubeadm upgrade node升级worker节点;
  4. uncordon节点;
  5. workder节点升级kubelet和kubectl并重启;
  6. 管理节点验证升级情况;

相关文章:

  • YOLOv10改进 | Neck | 添加双向特征金字塔BiFPN【含二次独家创新】
  • RK3568技术笔记十四 Ubuntu创建共享文件夹
  • 掌握心理学知识成为产品经理一门必修课?
  • 第一百一十六节 Java 面向对象设计 - Java 终止块
  • MySQL 常用函数总结
  • SAP 新安装的系统,财务开账期OB52需要传输
  • C++的智能指针 RAII
  • 【AI应用探讨】— 盘古大模型应用场景
  • 如何选择合适的半桥栅极驱动芯片?KP8530X,KP85402,KP85211A满足你对半桥栅极驱动一切需求
  • Oracle最终还是杀死了MySQL
  • 步步为营:电商项目业务测试实战指南
  • 考试系统Spring Security的配置
  • SQL题:未完成率较高的50%用户近三个月答卷情况
  • 深入了解常用负载均衡软件
  • 第三方软件测试机构流程分享,软件检测报告需多少时间和费用?
  • ----------
  • JavaScript-Array类型
  • java多线程
  • nfs客户端进程变D,延伸linux的lock
  • Selenium实战教程系列(二)---元素定位
  • Tornado学习笔记(1)
  • use Google search engine
  • 复杂数据处理
  • 基于Android乐音识别(2)
  • 前端性能优化--懒加载和预加载
  • 如何用vue打造一个移动端音乐播放器
  • 使用 Docker 部署 Spring Boot项目
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 我看到的前端
  • 小程序开发之路(一)
  • 用jquery写贪吃蛇
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 在Mac OS X上安装 Ruby运行环境
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #565. 查找之大编号
  • (2)STL算法之元素计数
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (4) PIVOT 和 UPIVOT 的使用
  • (C++17) std算法之执行策略 execution
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)Eureka服务搭建,服务注册,服务发现
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (分类)KNN算法- 参数调优
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .net CHARTING图表控件下载地址
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core 控制台应用程序读取配置文件app.config
  • .Net 执行Linux下多行shell命令方法
  • .net和jar包windows服务部署
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .skip() 和 .only() 的使用
  • /etc/skel 目录作用
  • [ C++ ] STL_list 使用及其模拟实现