二进制 k8s 集群下线 worker 组件流程分析和实践

简介: 二进制 k8s 集群下线 worker 组件流程分析和实践

事出因果

因为之前写了一篇 二进制 k8s 集群下线 master 组件流程分析和实践,所以索性再写一个 worker 节点的缩容

worker 节点的缩容,在置换机器的时候比较适用(又或者称节点迁移)

个人思路

worker 节点的缩容,其实比 master 节点的缩容会方便很多

  1. 将需要下线的 worker 节点标记为不可调度
  2. 将需要下线的 worker 节点上的 pod 进行驱逐
  • 如果有 label 控制的,需要提前在其他节点上打上相应的 label,保证 pod 可以在其他节点上运行
  1. 确认 pod 完全驱逐后,使用 kubectl 命令删除节点
  1. 下线 worker 节点相关的组件服务
  2. 根据情况是否保留相关的 pod 数据

准备实践

当前 worker 节点信息

节点 ip 是否下线
172.72.0.96 下线
172.72.0.97 下线
172.72.0.98 不下线
172.72.0.99 不下线

将节点标记为不可调度

注意:我这里是因为这两个节点之前就处于不可调度的状态,所以我的步骤里面是没有:打 label 的操作,只有驱逐 pod 的操作

如果节点有跑 pod,切记要先确认相关的 label,避免造成业务不可访问

kubectl cordon 172.72.0.96
kubectl cordon 172.72.0.97

标记为不可调度后,查看节点信息会出现 SchedulingDisabled 的字样

NAME          STATUS                     ROLES    AGE   VERSION
172.72.0.95   Ready,SchedulingDisabled   <none>   11d   v1.19.7
172.72.0.96   Ready,SchedulingDisabled   <none>   11d   v1.19.7
172.72.0.97   Ready,SchedulingDisabled   <none>   11d   v1.19.7
172.72.0.98   Ready                      <none>   16d   v1.19.7
172.72.0.99   Ready                      <none>   16d   v1.19.7

驱逐节点 pod

这里我会保留 daemonset 类型的 pod

kubectl drain 172.72.0.96 --ignore-daemonsets
kubectl drain 172.72.0.97 --ignore-daemonsets

将 worker 节点从 k8s 集群踢出

确保节点没有存在除 daemonset 类型的 pod 的情况下,再做踢出节点的操作

kubectl get pod -A -o wide | egrep '172.72.0.96|172.72.0.97'

我这里剩下的 pod 都是属于 daemonset 类型的了

ingress-nginx          nginx-ingress-controller-5b8hw               1/1     Running   0          11d     172.72.0.96   172.72.0.96   <none>           <none>
ingress-nginx          nginx-ingress-controller-5k52q               1/1     Running   0          11d     172.72.0.97   172.72.0.97   <none>           <none>
kube-system            kube-flannel-ds-8hflj                        1/1     Running   0          11d     172.72.0.96   172.72.0.96   <none>           <none>
kube-system            kube-flannel-ds-lwg6c                        1/1     Running   0          11d     172.72.0.97   172.72.0.97   <none>           <none>
monitor                node-exporter-lddpd                          1/1     Running   0          7d6h    172.72.0.97   172.72.0.97   <none>           <none>
monitor                node-exporter-rwnht                          1/1     Running   0          67m     172.72.0.96   172.72.0.96   <none>           <none>

将需要下线的节点踢出集群,注:别踢错集群了,要再三确认之后再踢出集群

kubectl delete node 172.72.0.96
kubectl delete node 172.72.0.97

再次使用 kubectl get node 命令后,就可以看到,那两个节点已经看不到了

下线 worker 节点相关组件

下线 kubeletkube-proxy 服务

systemctl disable kubelet kube-proxy --now

下线容器运行时 [注:我这里使用的是 containerd,大家以自己实际的为准]

systemctl disable containerd --now
systemctl disable docker --now

到此,关于 worker 节点缩容的实践就结束了

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
5天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【4月更文挑战第26天】 在动态且不断增长的云计算环境中,维护高性能的 Kubernetes 集群是一个挑战。本文将探讨一系列实用的策略和工具,旨在帮助运维专家监控、分析和优化 Kubernetes 集群的性能。我们将讨论资源分配的最佳实践,包括 CPU 和内存管理,以及集群规模调整的策略。此外,文中还将介绍延迟和吞吐量的重要性,并提供日志和监控工具的使用技巧,以实现持续改进的目标。
|
7天前
|
存储 运维 Kubernetes
Kubernetes 集群的监控与维护策略
【4月更文挑战第23天】 在微服务架构日益盛行的当下,容器编排工具如 Kubernetes 成为了运维工作的重要环节。然而,随着集群规模的增长和复杂性的提升,如何确保 Kubernetes 集群的高效稳定运行成为了一大挑战。本文将深入探讨 Kubernetes 集群的监控要点、常见问题及解决方案,并提出一系列切实可行的维护策略,旨在帮助运维人员有效管理和维护 Kubernetes 环境,保障服务的持续可用性和性能优化。
|
9天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化实践
【4月更文挑战第22天】在动态且复杂的微服务架构中,确保 Kubernetes 集群的高性能运行是至关重要的。本文将深入探讨针对 Kubernetes 集群性能优化的策略与实践,从节点资源配置、网络优化到应用部署模式等多个维度展开,旨在为运维工程师提供一套系统的性能调优方法论。通过实际案例分析与经验总结,读者可以掌握持续优化 Kubernetes 集群性能的有效手段,以适应不断变化的业务需求和技术挑战。
|
19天前
|
运维 Kubernetes 监控
Kubernetes 集群的监控与维护策略
【4月更文挑战第12天】在微服务架构日益普及的当下,Kubernetes 作为容器编排的事实标准,承载着运行和管理大量服务的重要职责。本文将深入探讨 Kubernetes 集群的监控要点,并提出一系列切实可行的维护策略,旨在帮助运维人员确保集群的稳定性和性能优化。
|
29天前
|
Kubernetes Cloud Native 容器
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
35 1
|
27天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
17 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
21天前
|
Kubernetes 搜索推荐 网络协议
使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案
使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案
36 8
|
2天前
|
Kubernetes 网络协议 Python
一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(二)
一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(二)
|
2天前
|
Kubernetes 应用服务中间件 开发工具
一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(一)
一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(一)
|
6天前
|
Kubernetes 应用服务中间件 nginx
【博客大赛】搭建一套完整的企业级Kubernetes高可用集群(v1.20,二进制)
【博客大赛】搭建一套完整的企业级Kubernetes高可用集群(v1.20,二进制)

推荐镜像

更多