当前位置: 首页 > news >正文

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 命令可以满足很多场景;但是如果使用了自定义的 CNIiptables 规则以及 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&#xff08;自行下载即可&#xff09;&#xff1a;高德地图离线解决方案: 高德地图离线解决方案 然因为高德地图的瓦片地图太大&#xff0c;所以要让后端部署下 前端直接调用 如果本地 直接找到瓦片图路径就可以 initMap () {const base_url "…...

springboot 集成私有化Ollama大模型开源框架,搭建AI智能平台

Ollama是一个用于大数据和机器学习的平台&#xff0c;它可以帮助企业进行数据处理、分析和决策制定。 &#xff11;、在Spring Boot项目pom.xml中添加Ollama客户端库依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-a…...

6.key的层级结构

redis的key允许多个单词形成层级结构&#xff0c;多个单词之间用:隔开&#xff0c;格式如下&#xff1a; 项目名:业务名:类型:id 这个格式并非固定的&#xff0c;可以根据自己的需求来删除或添加词条。 例如&#xff1a; taobao:user:1 taobao:product:1 如果value是一个java对…...

LogonTracer图形化事件分析工具

LogonTracer这款工具是基于Python编写的&#xff0c;并使用Neo4j作为其数据库&#xff08;Neo4j多用于图形数据库&#xff09;&#xff0c;是一款用于分析Windows安全事件登录日志的可视化工具。它会将登录相关事件中的主机名&#xff08;或IP地址&#xff09;和帐户名称关联起…...

【云原生】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为核心的日志系统时&#xff0c;Logstash作为日志采集的核心组件&#xff0c;负责将各个服务的日志数据采集、清洗、过滤。然而缺点也很明显&#xff1a; 占用较多的服务器资源。配置复杂&#xff0c;学习曲线陡峭。处理大数据量时…...

常用排序算法的实现与介绍

常用排序算法的实现与介绍 在计算机科学中&#xff0c;排序算法是非常基础且重要的一类算法。本文将通过C语言代码实现&#xff0c;介绍几种常见的排序算法&#xff0c;包括冒泡排序、选择排序、插入排序和快速排序。以下是这些排序算法的具体实现和简要介绍。 1. 冒泡排序&am…...

仓颉语言 -- 宏

使用新版本 &#xff08;2024-07-19 16:10发布的&#xff09; 1、宏的简介 宏可以理解为一种特殊的函数。一般的函数在输入的值上进行计算&#xff0c;然后输出一个新的值&#xff0c;而宏的输入和输出都是程序本身。在输入一段程序&#xff08;或程序片段&#xff0c;例如表达…...

Nginx代理minIO图片路径实现公网图片访问

1、网络部署情况 VUE前端项目Nginx部署在公司内网&#xff0c;端口7790 后台接口项目部署在公司内网&#xff0c;端口7022 minIO服务部署在公司内网&#xff0c;端口9000 公网IP设备将80端口映射到7790端口&#xff08;具体映射方式不详&#xff09;&#xff0c;实现通过互…...

从零开始掌握tcpdump:参数详解

Linux tcpdump命令详解 1. 语法 tcpdump [-adeflnnNOpqStvxX] [-c <数据包数目>] [-dd] [-ddd] [-F <表达文件>] [-i <网络界面>] [-r <数据包文件>] [-s <数据包大小>] [-tt] [-T <数据包类型>] [-vv] [-w <数据包文件>] [输出数…...

漏洞挖掘 | edusrc记一次某中学小程序渗透测试

一、搜集渗透目标 现在的EDU挖web端的上分效率远不如小程序&#xff0c;因此这篇文章浅浅记录一次小程序的挖掘吧。如果各位大牛想要快速出洞&#xff0c;不妨跳过大学&#xff0c;学院等小程序&#xff0c;而重点关注小学、中学、幼儿园等&#xff0c;这些小程序的出洞率还是…...

vulhub:nginx解析漏洞CVE-2013-4547

此漏洞为文件名逻辑漏洞&#xff0c;该漏洞在上传图片时&#xff0c;修改其16进制编码可使其绕过策略&#xff0c;导致解析为 php。当Nginx 得到一个用户请求时&#xff0c;首先对 url 进行解析&#xff0c;进行正则匹配&#xff0c;如果匹配到以.php后缀结尾的文件名&#xff…...

备战秋招:2024游戏开发入行与跳槽面试详解

注意&#xff1a;以下为本次分享概要&#xff0c;视频版内容更全面深入&#xff0c;详见文末 1.游戏开发领域秋招准备与面试技巧 本次分享由优梦创客机构的创始人雷蒙德主讲&#xff0c;专注于2024年秋招期间游戏开发领域的入行与跳槽面试准备。本次分享重点在于提供面试技巧…...

红外热成像手持终端:从建筑检测到野外搜救的全方位应用

红外热成像手持终端&#xff0c;凭借其独特的红外探测与夜视功能&#xff0c;广泛应用于多个关键领域。无论是军事侦察、消防救援中的夜间作业&#xff0c;还是电力巡检、野生动物观察等多样场景&#xff0c;其精准的红外热成像技术均能提供至关重要的实时数据&#xff0c;助力…...

day07 项目启动以及git

spring框架 spring 负责整合各种框架&#xff0c;把new对象的部分交给spring去做&#xff0c;对象new不出来&#xff0c;项目就启动不起来&#xff0c;这样可以有效保证所需要的对象都在容器中存在&#xff0c;后续的部分都可以顺利执行控制反转&#xff1a;业务对象创建依赖资…...

学会网络安全:开启广阔职业与责任之旅

在数字化时代&#xff0c;网络安全已成为社会经济发展的重要基石。随着互联网的普及和技术的飞速发展&#xff0c;网络安全威胁日益复杂多变&#xff0c;对国家安全、社会稳定以及个人隐私构成了严峻挑战。因此&#xff0c;掌握网络安全技能不仅意味着拥有了一项高价值的职业技…...

UE5 镜头

只狼镜头 Spring Arm 中 开启 Use Pawn Control Rotation&#xff1a;让镜头跟着鼠标移动BP_Character(Self) 中关闭 Use Controller Rotation Yaw&#xff1a;不要让人物和鼠标移动Character Movement 的 Rotation Setting 中 关闭 Use Controller Desired Rotation&#xff…...

SpringBoot如何实现简单的跨域配置

在SpringBoot中实现简单的跨域配置&#xff0c;主要通过全局CORS配置来完成。这通常涉及到实现WebMvcConfigurer接口并覆盖addCorsMappings方法。以下是一个简单的示例&#xff0c;展示了如何在SpringBoot应用中配置CORS策略以允许跨域请求。 首先&#xff0c;需要创建一个配置…...

vue列表进入详情页实现上一篇下一篇功能

概述&#xff1a;需求就是需要可以看列表&#xff0c;然后点击列表的右侧详情看详情&#xff0c;通过详情来实现新增上一份&#xff0c;下一份按钮来实现直接看之后的详情。 网上的解决方法有很多 1.后台获取将全量的id&#xff0c;前台再去直接取下一个id方式。&#xff08;…...

PX4飞控系统深度解析:从模块化架构到自主飞行核心技术揭秘

PX4飞控系统深度解析&#xff1a;从模块化架构到自主飞行核心技术揭秘 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 你是否曾好奇&#xff0c;一个开源飞控系统如何支撑从微型无人机到工业级无人…...

Audio Pixel Studio效果惊艳集锦:10类垂直场景语音生成+分离真实案例

Audio Pixel Studio效果惊艳集锦&#xff1a;10类垂直场景语音生成分离真实案例 1. 引言&#xff1a;当声音创作变得触手可及 想象一下&#xff0c;你正在为一个短视频项目寻找合适的旁白配音&#xff0c;但预算有限&#xff0c;专业配音师的价格让你望而却步。或者&#xff…...

Wan2.2-T2V-A5B提示词怎么写?新手快速出效果的实用指南

Wan2.2-T2V-A5B提示词怎么写&#xff1f;新手快速出效果的实用指南 1. 认识Wan2.2-T2V-A5B视频生成模型 Wan2.2-T2V-A5B是一款由通义万相开源的轻量级文本到视频生成模型&#xff0c;拥有50亿参数规模。虽然它生成的视频分辨率是480P&#xff0c;但在时序连贯性和运动推理能力…...

新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据)

新手也能懂的RAIM算法&#xff1a;用Python复现GNSS完好性监测&#xff08;附代码与数据&#xff09; 当你用手机导航时&#xff0c;是否想过这些定位信号有多可靠&#xff1f;RAIM&#xff08;Receiver Autonomous Integrity Monitoring&#xff09;算法就像GNSS系统的"质…...

Postiz消息队列:任务优先级与重试机制的终极指南

Postiz消息队列&#xff1a;任务优先级与重试机制的终极指南 【免费下载链接】clickvote Add upvotes, likes, and reviews to any context ⭐️ 项目地址: https://gitcode.com/GitHub_Trending/cl/clickvote Postiz是一款功能强大的开源项目&#xff0c;专注于为开发者…...

RustFS实战:5分钟在Linux服务器上搭个私有S3兼容存储(保姆级配置+避坑指南)

RustFS实战&#xff1a;5分钟在Linux服务器上搭个私有S3兼容存储&#xff08;保姆级配置避坑指南&#xff09; 最近在折腾一个需要私有文件存储的Side Project&#xff0c;既不想用公有云S3&#xff08;太贵&#xff09;&#xff0c;又嫌MinIO配置繁琐。偶然发现RustFS这个基于…...

A860-2155-T611发那科分离式增量型主轴编码器

型号&#xff1a;A860-2155-T611全称&#xff1a;αiBZ SENSOR ASSY 512 (THIN TYPE) 薄型传感器总成品牌&#xff1a;FANUC&#xff08;发那科&#xff09;类型&#xff1a;分离式增量型主轴编码器&#xff08;薄型&#xff09;一、产品特性薄型分离式设计&#xff1a;传感器头…...

5分钟解锁WeMod专业版:开源工具让你的游戏修改体验全面升级

5分钟解锁WeMod专业版&#xff1a;开源工具让你的游戏修改体验全面升级 【免费下载链接】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安装指南&#xff1a;快速对接百川2-13B量化模型 1. 为什么选择OpenClaw百川2-13B组合 去年我在处理个人知识管理时&#xff0c;发现每天要重复执行大量机械操作&#xff1a;整理网页资料、归档PDF、生成日报。直到遇见OpenClaw这个能像人类一样操作电脑的A…...

OpenClaw备份方案:GLM-4-7-Flash自动加密重要文件并上传网盘

OpenClaw备份方案&#xff1a;GLM-4-7-Flash自动加密重要文件并上传网盘 1. 为什么需要自动化加密备份 去年的一次硬盘故障让我损失了三个月的项目资料&#xff0c;这件事彻底改变了我对数据安全的认知。传统备份方案要么需要手动操作&#xff08;容易遗忘&#xff09;&#…...