首页 > 系统相关 >Centos7升级K8S集群

Centos7升级K8S集群

时间:2024-06-17 12:54:28浏览次数:21  
标签:升级 upgrade 17 k8s Centos7 v1.22 集群 kubeadm 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/

注意

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

本次操作升级的为一个单节点的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.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.22.17

Upgrade 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-0

You 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.17

Upgrade 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-0

You 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. 管理节点验证升级情况;

标签:升级,upgrade,17,k8s,Centos7,v1.22,集群,kubeadm,K8S
From: https://www.cnblogs.com/lldhsds/p/18252163

相关文章

  • 【K8s】专题五(3):Kubernetes 配置之 ConfigMap 与 Secret 异同
    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!目录一、相同点二、不同点一、相同点功能作用:ConfigMap与Secret都用于存储配置数据,以便Pod可以访问这些数据创建方式:ConfigMap与Secret都可以通过......
  • centos7中使用yum安装NGINX安装
    工作中的web服务的反向代理、负载均衡、ip白名单、静态资源管理可以使用NGINX,其安装步骤可以参考如下。服务器为centos7,用户使用root权限。1.安装第三方yum源yuminstall-yepel-release2.安装NGINXyuminstall-ynginx3.关闭防火墙-可选systemctlstopfirewalld......
  • Redis Cluster集群模式部署
    RedisCluster模式部署Redis的哨兵模式基本已经可以实现高可用,读写分离,但是在这种模式下每台Redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了Cluster集群模式,实现了Redis的分布式存储,也就是说每台Redis节点上存储不同的内容。下面是Cluster集群模式的一......
  • k8s知识
    共享网络每个Pod里,额外起一个Infracontainer小容器来共享整个Pod的NetworkNamespaceInfracontainer是一个非常小的镜像,大概100~200KB左右,是一个汇编语言写的、永远处于“暂停”状态的容器。由于有了这样一个Infracontainer之后,其他所有容器都会通过JoinNamespace的方式......
  • k8s 使用docker作为容器进行时
    在Kubernetes集群中使用Docker作为容器运行时,您需要确保Kubernetes的配置能够正确地指向Docker守护进程。以下是使用Docker作为Kubernetes容器运行时的一般步骤:安装Docker:在所有Kubernetes节点(包括主节点和工作节点)上安装Docker。参考上一个回答中的步骤来在R......
  • k8s资源管理方式
    目录一、什么是k8s资源管理1、简介2、系统资源查看3、常见的资源类型二、资源管理的方式1、命令式对象管理2、命令式对象配置3、声明式对象配置4、区别三、命令式对象管理1、kubectl命令1.1、语法格式1.2、常见操作1.3、示例1.3.1、查看所有的pod1.3.2、查看某个pod1.3.3、查看某......
  • k8s学习--Traffic Shifting 流量接入
    文章目录应用环境一、Argorollouts安装1.在Kubernetes集群中安装argorollouts2.安装argorollouts的kubectlplugin3.Argo-RolloutsDashboard二、负载均衡器metallb部署1.修改kube-proxy代理模式2.metallb部署3.IP地址池准备4.开启二层通告三、TrafficShifting......
  • k8s搭建高可用
    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Master节点$kubeadminit​#将一个Node节点加入到当前集群中$kubeadmjoin<Master节点的IP和端口>1.安装要求在开始之前,部署Kubernete......
  • 企业生产环境Nacos集群部署示例
    Nacos运行环境需要jdk环境,集群各节点服务器需安装jdk1.8:jdk-8u341-linux-x64.tar第一步:上次安装包第二步:解压sudotar-zxvfjdk-8u341-linux-x64.tar.gz第三步:配置环境变量sudovim/etc/profile第四步:添加以下内容exportJAVA_HOME=/usr/local/jdk1.8.0_341exportJRE......
  • k8s deployment
     #Defaultvaluesforchart.#ThisisaYAML-formattedfile.#Declarevariablestobepassedintoyourtemplates.replicaCount:2minReadySeconds:1strategy:type:RollingUpdateRollingUpdate:maxSurge:1maxUnavailable:0image:repos......