Kubernetes 从集群中移除一个节点(Node)
目录
- 1. 移除工作节点(Worker Node)
- 1.1 确定工作节点名称
- 1.2 驱逐工作节点上的Pod
- 1.3 删除工作节点
- 1.4 重置该工作节点
- 2. 移除控制平面节点(Control Plane Node)
- 2.1 确定控制平面节点名称
- 2.2 驱逐控制平面节点上的Pod
- 2.3 更新 etcd 集群
- 2.4 从集群中删除控制平面节点
- 2.5 重置移除的控制平面节点
- 3. 注意事项
Kubernetes 管理的一个重要方面是在必要时从集群中删除节点。无论您是需要用新节点替换旧节点,还是节点变得无响应或出现故障,都必须遵循正确的过程以避免潜在的数据丢失或应用程序中断。
1. 移除工作节点(Worker Node)
移除工作节点较为简单;工作节点(Worker Node)又称为:子节点,从节点等。
1.1 确定工作节点名称
获取所有节点的名称,并确认要移除的节点(Node)
kubectl get nodes
1.2 驱逐工作节点上的Pod
使用 kubectl drain 命令驱逐节点上的 Pod:
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
参数说明:
--ignore-daemonsets:忽略 DaemonSet 管理的 Pod, DaemonSet 通常在每个节点上运行一个 Pod 副本,无法被迁移。--delete-emptydir-data:如果 Pod 使用 emptyDir 卷,此选项允许删除这些卷中的数据。旧版本的 k8s 为--delete-local-data。
排空(drain)过程:
- 将节点标记为不可调度(
Ready,SchedulingDisabled),防止新的 Pod 被调度到该节点。 - 逐个终止节点上的 Pod(除了 DaemonSet 的 Pod)。
- Kubernetes 调度器会在集群的其他节点上重新创建这些 Pod。
【注】如果是临时系统维护或者突然不想移除了,可以使用下面的命令,恢复节点的调度能力:
kubectl uncordon <node-name>
1.3 删除工作节点
从集群中删除节点。
kubectl delete node <node-name>
1.4 重置该工作节点
在被移除的控制平面节点中操作。
# 重置该节点,
kubeadm reset
kubeadm reset 命令用于将节点恢复到安装 kubeadm 之前的状态。这个命令会清除所有与 Kubernetes 相关的配置和数据。
执行过程如下:
- 停止并移除所有
Kubernetes相关的容器。 - 移除
/etc/kubernetes/目录中的所有配置文件。 - 移除
/var/lib/kubelet/ 目录中的内容。 - 移除
/var/lib/etcd目录(如果存在)。 - 删除
Kubernetes相关的系统服务配置(如kubelet.service)。
常用参数:
--force,-f: 即使出现错误也继续执行重置操作。
一般来说使用
kubeadm reset命令可以满足很多场景;但是如果使用了自定义的 CNI、iptables 规则以及IPVS 模式的 kube-proxy,可能还需要手动清理这些配置。
2. 移除控制平面节点(Control Plane Node)
移除控制平面节点(Control Plane Node)比较复杂,毕竟相当于是大脑;控制平面节点又称为主节点,从节点等。
移除主节点涉及更新控制平面组件配置,步骤如下:
2.1 确定控制平面节点名称
获取所有节点的名称,并确定要删除的控制平面节点名称。
kubectl get nodes
2.2 驱逐控制平面节点上的Pod
与工作节点类似,驱逐主节点上的Pod。
kubectl drain <master-node-name> --ignore-daemonsets --delete-emptydir-data
参数说明:
--ignore-daemonsets:忽略DaemonSet管理的Pod,简化驱逐过程,确保关键服务 Pod 在节点被驱逐时不会中断--delete-emptydir-data:如果 Pod 使用 emptyDir 卷,此选项允许删除这些卷中的数据。旧版本的 k8s 为--delete-local-data。
【注】如果是临时系统维护或者突然不想移除了,可以使用下面的命令,恢复节点的调度能力:
kubectl uncordon <master-node-name>
2.3 更新 etcd 集群
在其他任意一个控制平面节点中操作,如果是外置的则在相应的机器上操作。
【注】Look here! 如果该节点中包含 etcd,还需要确保更新 etcd 集群配置以移除该节点。如果不包含的话可以跳过此步。
下面的示例为任意控制平面节点中操作:
# 查看 etcd
kubectl get pods -n kube-system | grep etcd# 登录集群的任意一个 ETCD Pod(通常位于其他控制平面节点)
kubectl exec -it etcd-master001 sh -n kube-system# Pod 中设置登录 ETCD 的命令(临时设置别名,退出后失效)
export ETCDCTL_API=3
alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key'# 查看集群节点列表
etcdctl member list# 示例:
669bc6472fb13679, started, master1, https://192.168.1.19:2380, https://192.168.1.19:2379, false
959c93e3261aadcb, started, master2, https://192.168.1.20:2380, https://192.168.1.20:2379, false
ca5f1f6f780545ba, started, master3, https://192.168.1.23:2380, https://192.168.1.23:2379, false# 删除master3节点
etcdctl member remove ca5f1f6f780545ba
🥹 如果没有在 etcd 中移除删除节点,可能会造成下面的问题:
- 集群不一致:etcd 集群将继续尝试与已经不存在的成员通信,可能导致性能下降。在做出决策时,etcd 仍会考虑这个不再活跃的成员,可能影响到达成共识的速度。
- 潜在的稳定性问题:如果不移除inactive成员,etcd集群可能无法正确管理其成员关系,导致稳定性问题。
- 扩展性受限:etcd 集群有成员数量限制。保留不活跃的成员会占用这个限额,影响未来添加新成员的能力。
- 错误日志和告警:系统可能会持续生成关于无法连接到已移除节点的错误日志和告警。
- 恢复和灾难恢复复杂化:在需要恢复 etcd 集群时,存在的无效成员可能会使过程变得更加复杂。
- 性能影响:etcd 可能会持续尝试与不存在的成员通信,浪费资源并可能影响整体性能。
【注】虽然短期内不移除 etcd 成员可能不会导致立即的故障,但长期来看,它可能会影响集群的健康、性能和可管理性。
2.4 从集群中删除控制平面节点
在其他控制平面节点中操作。
# 从集群中删除该 node 节点
kubectl delete node master3
2.5 重置移除的控制平面节点
在被移除的控制平面节点中操作。
# 重置该节点,
kubeadm reset
执行过程与移除工作节点一样,详细说明参考 1.4 重置该工作节点。
3. 注意事项
- 确保高可用性:移除主节点之前,确保集群有足够的高可用性,至少有一个以上的备用主节点;如果是移除工作节点,确保应用支持高可用,防止出现业务中断。
- 检查配置文件:根据安装方式(如 kubeadm、kops、kubespray 等),可能需要额外检查和更新配置文件,以保证节点的移除工作。
- 清理节点:在实际从物理或虚拟机中移除节点之前,清理节点上的Kubernetes配置和数据;如果服务器有快照的话,可以还原快照。
- 保持敬畏之心:如果是线上环境,还是要有一个敬畏之心,保障业务系统的可用性。

相关文章:
Kubernetes 从集群中移除一个节点(Node)
目录 1. 移除工作节点(Worker Node)1.1 确定工作节点名称1.2 驱逐工作节点上的Pod1.3 删除工作节点1.4 重置该工作节点 2. 移除控制平面节点(Control Plane Node)2.1 确定控制平面节点名称2.2 驱逐控制平面节点上的Pod2.3 更新 etcd 集群2.4 从集群中删除控制平面节点2.5 重置移…...
高德地图离线版 使用高德地图api的方法
高德离线包我已经存至Gitee(自行下载即可):高德地图离线解决方案: 高德地图离线解决方案 然因为高德地图的瓦片地图太大,所以要让后端部署下 前端直接调用 如果本地 直接找到瓦片图路径就可以 initMap () {const base_url "…...
springboot 集成私有化Ollama大模型开源框架,搭建AI智能平台
Ollama是一个用于大数据和机器学习的平台,它可以帮助企业进行数据处理、分析和决策制定。 1、在Spring Boot项目pom.xml中添加Ollama客户端库依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-a…...
6.key的层级结构
redis的key允许多个单词形成层级结构,多个单词之间用:隔开,格式如下: 项目名:业务名:类型:id 这个格式并非固定的,可以根据自己的需求来删除或添加词条。 例如: taobao:user:1 taobao:product:1 如果value是一个java对…...
LogonTracer图形化事件分析工具
LogonTracer这款工具是基于Python编写的,并使用Neo4j作为其数据库(Neo4j多用于图形数据库),是一款用于分析Windows安全事件登录日志的可视化工具。它会将登录相关事件中的主机名(或IP地址)和帐户名称关联起…...
【云原生】Prometheus监控Docker指标并接入Grafana
目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…...
搭建日志系统ELK(二)
搭建日志系统ELK(二) 架构设计 在搭建以ELK为核心的日志系统时,Logstash作为日志采集的核心组件,负责将各个服务的日志数据采集、清洗、过滤。然而缺点也很明显: 占用较多的服务器资源。配置复杂,学习曲线陡峭。处理大数据量时…...
常用排序算法的实现与介绍
常用排序算法的实现与介绍 在计算机科学中,排序算法是非常基础且重要的一类算法。本文将通过C语言代码实现,介绍几种常见的排序算法,包括冒泡排序、选择排序、插入排序和快速排序。以下是这些排序算法的具体实现和简要介绍。 1. 冒泡排序&am…...
仓颉语言 -- 宏
使用新版本 (2024-07-19 16:10发布的) 1、宏的简介 宏可以理解为一种特殊的函数。一般的函数在输入的值上进行计算,然后输出一个新的值,而宏的输入和输出都是程序本身。在输入一段程序(或程序片段,例如表达…...
Nginx代理minIO图片路径实现公网图片访问
1、网络部署情况 VUE前端项目Nginx部署在公司内网,端口7790 后台接口项目部署在公司内网,端口7022 minIO服务部署在公司内网,端口9000 公网IP设备将80端口映射到7790端口(具体映射方式不详),实现通过互…...
从零开始掌握tcpdump:参数详解
Linux tcpdump命令详解 1. 语法 tcpdump [-adeflnnNOpqStvxX] [-c <数据包数目>] [-dd] [-ddd] [-F <表达文件>] [-i <网络界面>] [-r <数据包文件>] [-s <数据包大小>] [-tt] [-T <数据包类型>] [-vv] [-w <数据包文件>] [输出数…...
漏洞挖掘 | edusrc记一次某中学小程序渗透测试
一、搜集渗透目标 现在的EDU挖web端的上分效率远不如小程序,因此这篇文章浅浅记录一次小程序的挖掘吧。如果各位大牛想要快速出洞,不妨跳过大学,学院等小程序,而重点关注小学、中学、幼儿园等,这些小程序的出洞率还是…...
vulhub:nginx解析漏洞CVE-2013-4547
此漏洞为文件名逻辑漏洞,该漏洞在上传图片时,修改其16进制编码可使其绕过策略,导致解析为 php。当Nginx 得到一个用户请求时,首先对 url 进行解析,进行正则匹配,如果匹配到以.php后缀结尾的文件名ÿ…...
备战秋招:2024游戏开发入行与跳槽面试详解
注意:以下为本次分享概要,视频版内容更全面深入,详见文末 1.游戏开发领域秋招准备与面试技巧 本次分享由优梦创客机构的创始人雷蒙德主讲,专注于2024年秋招期间游戏开发领域的入行与跳槽面试准备。本次分享重点在于提供面试技巧…...
红外热成像手持终端:从建筑检测到野外搜救的全方位应用
红外热成像手持终端,凭借其独特的红外探测与夜视功能,广泛应用于多个关键领域。无论是军事侦察、消防救援中的夜间作业,还是电力巡检、野生动物观察等多样场景,其精准的红外热成像技术均能提供至关重要的实时数据,助力…...
day07 项目启动以及git
spring框架 spring 负责整合各种框架,把new对象的部分交给spring去做,对象new不出来,项目就启动不起来,这样可以有效保证所需要的对象都在容器中存在,后续的部分都可以顺利执行控制反转:业务对象创建依赖资…...
学会网络安全:开启广阔职业与责任之旅
在数字化时代,网络安全已成为社会经济发展的重要基石。随着互联网的普及和技术的飞速发展,网络安全威胁日益复杂多变,对国家安全、社会稳定以及个人隐私构成了严峻挑战。因此,掌握网络安全技能不仅意味着拥有了一项高价值的职业技…...
UE5 镜头
只狼镜头 Spring Arm 中 开启 Use Pawn Control Rotation:让镜头跟着鼠标移动BP_Character(Self) 中关闭 Use Controller Rotation Yaw:不要让人物和鼠标移动Character Movement 的 Rotation Setting 中 关闭 Use Controller Desired Rotationÿ…...
SpringBoot如何实现简单的跨域配置
在SpringBoot中实现简单的跨域配置,主要通过全局CORS配置来完成。这通常涉及到实现WebMvcConfigurer接口并覆盖addCorsMappings方法。以下是一个简单的示例,展示了如何在SpringBoot应用中配置CORS策略以允许跨域请求。 首先,需要创建一个配置…...
vue列表进入详情页实现上一篇下一篇功能
概述:需求就是需要可以看列表,然后点击列表的右侧详情看详情,通过详情来实现新增上一份,下一份按钮来实现直接看之后的详情。 网上的解决方法有很多 1.后台获取将全量的id,前台再去直接取下一个id方式。(…...
PX4飞控系统深度解析:从模块化架构到自主飞行核心技术揭秘
PX4飞控系统深度解析:从模块化架构到自主飞行核心技术揭秘 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 你是否曾好奇,一个开源飞控系统如何支撑从微型无人机到工业级无人…...
Audio Pixel Studio效果惊艳集锦:10类垂直场景语音生成+分离真实案例
Audio Pixel Studio效果惊艳集锦:10类垂直场景语音生成分离真实案例 1. 引言:当声音创作变得触手可及 想象一下,你正在为一个短视频项目寻找合适的旁白配音,但预算有限,专业配音师的价格让你望而却步。或者ÿ…...
Wan2.2-T2V-A5B提示词怎么写?新手快速出效果的实用指南
Wan2.2-T2V-A5B提示词怎么写?新手快速出效果的实用指南 1. 认识Wan2.2-T2V-A5B视频生成模型 Wan2.2-T2V-A5B是一款由通义万相开源的轻量级文本到视频生成模型,拥有50亿参数规模。虽然它生成的视频分辨率是480P,但在时序连贯性和运动推理能力…...
新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据)
新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据) 当你用手机导航时,是否想过这些定位信号有多可靠?RAIM(Receiver Autonomous Integrity Monitoring)算法就像GNSS系统的"质…...
Postiz消息队列:任务优先级与重试机制的终极指南
Postiz消息队列:任务优先级与重试机制的终极指南 【免费下载链接】clickvote Add upvotes, likes, and reviews to any context ⭐️ 项目地址: https://gitcode.com/GitHub_Trending/cl/clickvote Postiz是一款功能强大的开源项目,专注于为开发者…...
RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置+避坑指南)
RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置避坑指南) 最近在折腾一个需要私有文件存储的Side Project,既不想用公有云S3(太贵),又嫌MinIO配置繁琐。偶然发现RustFS这个基于…...
A860-2155-T611发那科分离式增量型主轴编码器
型号:A860-2155-T611全称:αiBZ SENSOR ASSY 512 (THIN TYPE) 薄型传感器总成品牌:FANUC(发那科)类型:分离式增量型主轴编码器(薄型)一、产品特性薄型分离式设计:传感器头…...
5分钟解锁WeMod专业版:开源工具让你的游戏修改体验全面升级
5分钟解锁WeMod专业版:开源工具让你的游戏修改体验全面升级 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 还在为WeMod专业版的订阅…...
Windows下OpenClaw安装指南:快速对接百川2-13B量化模型
Windows下OpenClaw安装指南:快速对接百川2-13B量化模型 1. 为什么选择OpenClaw百川2-13B组合 去年我在处理个人知识管理时,发现每天要重复执行大量机械操作:整理网页资料、归档PDF、生成日报。直到遇见OpenClaw这个能像人类一样操作电脑的A…...
OpenClaw备份方案:GLM-4-7-Flash自动加密重要文件并上传网盘
OpenClaw备份方案:GLM-4-7-Flash自动加密重要文件并上传网盘 1. 为什么需要自动化加密备份 去年的一次硬盘故障让我损失了三个月的项目资料,这件事彻底改变了我对数据安全的认知。传统备份方案要么需要手动操作(容易遗忘)&#…...
