【Kubernetes】升级k8s集群 控制平面节点

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 从v1.23.1版本升级到v1.23.2,更新一个小版本

一个正常的k8s集群,由至少一个控制节点与多个工作节点组成,我们的容器pod运行在各个节点之中。

情况就是这个情况,处于某种不可抗的情况下,我们需要将k8s集群中的控制平面节点组件,从v1.23.1版本升级到v1.23.2,更新一个小版本。主要是更新kubeadmkubeletkubectl

需要先将控制节点腾空,设置停止调度并且驱逐节点上的pod;其次按顺序更新kubeadm\kubelet\kubectl。并且控制节点的所有升级,都是在联通外网的条件下进行,避免很多不必要的麻烦。

 

image.png

 

 

1.将所需要升级的控制节点腾空

// 多个集群情况下,我们需要手动切换到所需要更新的集群中

student@node01:~$ kubectl config use-context k8s-dep

 

// cordon 停止调度,将node调为SchedulingDisabled。新pod不会被调度到该node,但在该node的旧pod不受影响。

student@node01:~$ kubectl cordon master01
node/master01 cordoned

 

// drain 驱逐节点。首先,驱逐该node上的pod,并在其他节点重新创建。

student@node01:~$ kubectl drain master01 --ignore-daemonsets
node/master01 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-vmd6h, kube-system/kube-proxy-wgj54
evicting pod kube-system/coredns-6d8c4cb4d-t5n94
evicting pod kube-system/coredns-6d8c4cb4d-p68v8
pod/coredns-6d8c4cb4d-p68v8 evicted
pod/coredns-6d8c4cb4d-t5n94 evicted
node/master01 drained

 

//接着,将节点调为 SchedulingDisabled。现在检查节点是schedulingdisabled状态

student@node01:~$ kubectl get nodes
NAME       STATUS                     ROLES                  AGE    VERSION
master01   Ready,SchedulingDisabled   control-plane,master   127d  v1.23.1

 

2.更新控制平面节点中的kubeadm

 

//检查kubeadm 版本

root@master01:~# apt-cache show kubeadm | grep 1.23.2
Version: 1.23.2-00

//更新kubeadm版本

root@master01:~# apt-get update
root@master01:~# apt-get install kubeadm=1.23.2-00

//检查版本

root@master01:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.2", GitCommit:"9d142434e3af351a628bffee3939e64c681afa4d", GitTreeState:"clean", BuildDate:"2022-01-19T17:34:34Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"linux/amd64"}

//更新节点版本,指定版本号

root@master01:~# kubeadm upgrade apply v1.23.2 --etcd-upgrade=true

 

当我们执行更新kubeadm upgrade apply 这条命令时,upgrade会检查集群是否可升级;检查API Server是否可访问;集群下的所有节点是否正常;我们指定的更新版本是否有偏差;更新所需要拉的镜像是否可用;更新集群内的证书时间,执行续约。

 

 

 

3.更新控制平面节点中的kubeletkubectl

//更新kubelet版本

root@master01:~# apt-get install kubelet=1.23.2-00
root@master01:~# kubelet --version
Kubernetes v1.23.2

//更新kubectl版本

root@master01:~# apt-get install kubectl=1.23.2-00
root@master01:~# kubectl version

 

4.修改恢复节点状态

//退回到node操作节点

root@master01:~# exit
logout
student@master01:~$ exit
logout
Connection to master01 closed.

//master节点状态改回

student@node01:~$ kubectl uncordon master01
node/master01 uncordoned
student@node01:~$ kubectl get nodes
NAME       STATUS  ROLES                  AGE    VERSION
master01   Ready   control-plane,master   127d   v1.23.2

 

image.png

 

最后验证效果如图,VERSION显示v1.23.2,小版本升级完成

 

 

 

 

 

 

 

 

 

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
82 6
|
17天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4
|
18天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
52 3
|
23天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
24天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
1月前
|
Kubernetes API 调度
中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?
中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?
48 3
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
476 1
|
1月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
141 0
|
1月前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
73 0