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

Centos7升级K8S集群

时间:2024-06-18 18:00:06浏览次数:31  
标签:升级 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/

注意

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

本次操作升级的为一个单节点的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://blog.csdn.net/codelearning/article/details/139740729

相关文章

  • k8s使用rbd作为存储
    k8s使用rbd作为存储如果需要使用rbd作为后端存储的话,需要先安装ceph-common需要提前在ceph集群上创建pool,然后创建image[root@ceph01~]#cephosdpoolcreatepool01[root@ceph01~]#cephosdpoolapplicationenablepool01rbd[root@ceph01~]#rbdpoolinitpool01[......
  • k8s的python客户端库--kubernetes
    简介Kubernetes是什么Kubernetes是一个全新的基于容器技术的分布式架构解决方案,是Google开源的一个容器集群管理系统,Kubernetes简称K8S。Kubernetes是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对现有的编程语言、编程框架、中间件没有任何侵入性。K......
  • MongoDB 的集群架构与设计
    本文涉及的产品云数据库MongoDB,通用型2核4GB推荐场景:五天玩转MongoDB训练营  简介:MongoDB的集群架构与设计一、前言MongoDB有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(ReplicaSet)和分片(Sharding)模式。Master-Slaver是一种......
  • 2、k8s-集群环境的搭建-docker安装部署-k8s组件(kubelet)安装部署-集群初始化-fannel网
    kubernetes集群分为两类:·一主多从:一台master节点和多台node节点、搭建简单、但是有单机故障的风险、适合用于测试环境·多主多从:多台master节点和多台node节点、搭建麻烦、安全性高、适用于生产环境 ===================================一主多从搭建=============......
  • 1、k8s-容器编排工具-简介-组件-概念
     k8s是谷歌开源的工具本质:一组服务器的集群、它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理、他的目的就是实现资源管理的自动化、主要提供了如下的主要功能:·自我修复:一旦某一个容器崩溃,能够在1秒钟左右迅速启动新的容器·弹性伸缩:可以根据需要,......
  • 3、k8s-服务的部署(nginx)
    说明:pod是kubernetes的最小单元-而容器时运行在pod中的、服务是运行在容器中的、所以:pod>容器>服务  --(这是一个包含的关系) 1、创建部署nginx:kubectlcreatedeploymentnginx--image=nginx:1.14-alpine#kubectlcreatedeployment是一个Kubernetes命令,用于创建一个......
  • 5、k8s-资源管理-yaml语言--使用yaml语言创建nginx服务
    YAML语言是一个类似XML、JSON的标记性语言、他强调以数据为中心、而不是以标识语言为重点、因而YANL本身定义比较简单:对比如下XML语言:<html><age>15</age><address>hainan</address></html>YAML语言:heima:age:15address:hainanyaml语言没有过多的......
  • 8、k8s-资源-Namespace-空间隔离
    Namespace是kubernetes系统中一种非常重要的资源、它主要的作用是用来实现多套环境的资源隔离或者多租户的资源隔离。默认情况下、kubernetes集群中的所有Pod都是可以互相访问的、但是在实际生产环境中、是不能让两个Pod之间进行互相访问的、这时候就可以将两个Pod划分到不同的n......
  • Centos7配置ntp时间服务器
    Centos7配置ntp时间服务器,服务端:1、安装ntp服务yuminstallntpntpdate-y 2、查找当前地区,最适合的时间服务器步骤一:打开网站:http://www.pool.ntp.org/zone/asia步骤二:复制自动推荐的最合适的同步服务器 3、编辑/etc/ntp.confvim/etc/ntp.conf复制上述查到的时......
  • 公有云--web集群部署实战
    公有云--web集群部署实战今日目标:-华为云网站部署实战-华为云负载均衡ELB-ELASTICSEARCH安装部署Web集群架构图Web集群规划:-NFS共享存储-web-0001、web-0002、web-0003、-ELB负载均衡-跳板机(管理主机)部署Web集群1.购买云主机主机名称IP地址nfs192.168.1.10we......