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

简介: 从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搭建和管理企业级网站应用
相关文章
|
6天前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
26天前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
127 19
|
1月前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
388 10
|
1月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
65 1
|
2月前
|
Kubernetes Cloud Native 持续交付
深入理解Kubernetes:容器编排的基石
深入理解Kubernetes:容器编排的基石
|
14天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
24天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
93 12
|
27天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
29天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
61 2

热门文章

最新文章