k8s Node节点维护
Kubernetes (K8s) 中对 Node 节点的维护是保证集群健康和性能的重要部分。Node 节点通常是 Kubernetes 工作负载的运行环境,负责运行 Pods。当需要对节点进行维护(如升级、修复问题、调整配置等)时,可能需要将该节点标记为不可用并迁移其上的工作负载。
常见的 Node 节点维护任务:
- 标记节点不可调度(Cordon):防止新 Pod 被调度到该节点上。
- 驱逐节点上的 Pod(Drain):将节点上现有的 Pod 驱逐到其他节点,以便安全维护节点。
- 标记节点为可调度(Uncordon):在维护完成后,重新允许将新 Pod 调度到该节点。
- 节点升级:对节点的操作系统、容器运行时或 Kubernetes 版本进行升级。
- 监控节点健康:监控节点的健康状况,并在必要时执行恢复或替换操作。
维护步骤:
1. 标记节点不可调度(Cordon)
cordon 操作会将节点标记为不可调度状态,使新 Pod 不会被调度到该节点上。这不会影响已经在该节点上运行的 Pod。
kubectl cordon <node-name>
示例:
kubectl cordon node-1
输出:
node/node-1 cordoned
2. 驱逐节点上的 Pod(Drain)
drain 操作会驱逐节点上所有非系统关键的 Pod,并将它们迁移到集群中的其他节点。这个步骤是为了确保节点上的工作负载可以安全地迁移,以便对该节点进行维护。
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
--ignore-daemonsets:忽略 DaemonSet 运行的 Pod,因为 DaemonSet 通常是与节点绑定的(如监控和日志收集服务)。--delete-emptydir-data:如果 Pod 使用了emptyDir存储卷,会删除相应的数据。
示例:
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
输出:
node/node-1 drained
注意:drain 会中断节点上的应用程序,因此在生产环境中,建议你做好相应的准备,比如提前创建好新的副本,确保不会造成服务中断。
3. 进行节点维护(如升级或修复问题)
此时,节点上的工作负载已经被迁移,可以安全地进行维护操作。例如:
- 升级操作系统或 Kubernetes 版本。
- 升级容器运行时(如 Docker 或 containerd)。
- 修复硬件或网络问题。
4. 恢复节点并允许调度(Uncordon)
在维护完成后,使用 uncordon 命令恢复节点的调度功能,使新 Pods 能够调度到该节点上。
kubectl uncordon <node-name>
示例:
kubectl uncordon node-1
输出:
node/node-1 uncordoned
5. 检查节点状态
恢复节点后,检查节点的状态确保其正常工作:
kubectl get nodes
输出:
NAME STATUS ROLES AGE VERSION
node-1 Ready <none> 35d v1.23.0
节点状态应该显示为 Ready,这表明节点已经恢复正常并可以接收新的工作负载。
其他维护操作:
1. 标记节点为不可用(Maintenance Mode)
如果你需要长期维护节点或从集群中移除节点,可以使用标签或污点将节点标记为不可用。
- 添加污点:
kubectl taint nodes <node-name> key=value:NoSchedule
- 移除污点:
kubectl taint nodes <node-name> key-
2. 查看节点详细信息
查看节点的详细状态和配置,可以帮助了解当前节点的健康情况和资源使用情况:
kubectl describe node <node-name>
3. 节点自动恢复(Node Self-Healing)
Kubernetes 通过节点控制器和 kubelet 监控节点的状态,如果节点出现问题(如脱机或不可访问),控制器会自动将节点标记为 NotReady 并将 Pods 调度到其他节点。这种自动恢复能力保证了集群的高可用性。
维护节点时的最佳实践:
- 提前通知:在生产环境中进行节点维护时,提前通知团队和用户,以防止服务中断引发的问题。
- 使用滚动更新:如果需要升级多个节点,使用滚动更新方式逐个升级节点,确保集群中的工作负载始终有足够的资源可用。
- 监控节点健康:在进行维护之前,确保节点的健康状况正常,维护完成后,通过监控工具(如 Prometheus、Grafana)持续跟踪节点的运行情况。
通过合理使用 cordon、drain 和 uncordon 操作,你可以安全、有效地进行 Kubernetes 集群节点的维护,并确保不会对集群中的应用程序造成大的影响。
问答题
题目:Node节点维护
配置环境kubectl config use-context ek8s
将名为ek8s-node-0的node节点设置为不可用,并重新调度该node上所有运行的pods。
官方参考地址:Kubectl Reference Docs
帮助命令: kubectl drain --help
解答:
1.切换答题环境
kubectl config use-context ek8s
2.设置节点不可调度
kubectl cordon ek8s-node-0
3.驱除k8s-node-1节点上Pod
kubectl drain ek8s-node-0 --ignore-daemonsets --delete-emptydir-data --force
不需要其余步骤
相关文章:
k8s Node节点维护
Kubernetes (K8s) 中对 Node 节点的维护是保证集群健康和性能的重要部分。Node 节点通常是 Kubernetes 工作负载的运行环境,负责运行 Pods。当需要对节点进行维护(如升级、修复问题、调整配置等)时,可能需要将该节点标记为不可用并…...
【航天宏图旗下的PIE engine】
航天宏图旗下的PIE engine是一个集实时分布式计算、交互式分析和数据可视化为一体的在线遥感云计算开放平台,以下是对其的详细介绍: 一、平台背景与定位 PIE-Engine地球科学引擎是航天宏图自主研发的一套基于容器云技术构建的面向地球科学领域的专业P…...
Python酷库之旅-第三方库Pandas(157)
目录 一、用法精讲 716、pandas.Timedelta.view方法 716-1、语法 716-2、参数 716-3、功能 716-4、返回值 716-5、说明 716-6、用法 716-6-1、数据准备 716-6-2、代码示例 716-6-3、结果输出 717、pandas.Timedelta.as_unit方法 717-1、语法 717-2、参数 717-3、…...
【原创】java+springboot+mysql校园表白墙网站设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
CSS学习(Grid布局和flex布局比较)
grid网格布局真香,比flex方便太多了,grid-template-columns用法 文章目录 flex布局的时候网格grid布局的时候可以修改某一列的像素可以修改某一列的宽度占比自适应屏幕分列让第一个元素长宽都占2个 flex布局的时候 最后一行不够4个的时候 最下面一行无法…...
RTThread-Nano学习二-RT-Thread启动流程
一、简介 上一章,我们已经了解了如何通过MDK来移植RTT,不熟悉的可以看如下链接:RTThread-Nano学习一-基于MDK移植-CSDN博客本章我们就来继续了解一下,RTT的启动流程。 二、启动流程 官方给了一幅非常清晰的启动流程图&am…...
排查sshfs挂载失败的问题
#排查sshfs挂载失败的问题 写代码在Linux上运行,但是熟悉的IDE(比如VS code)在自己的电脑上,可以使用sshfs把linux上的目录挂载到本地,再用VScode打开即可,可以使用下面的命令: sshfs -odebug…...
【002】基于Spring Boot+Unipp的古诗词学习小程序【原创】
一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框架Vue.js;UI库:ElementUI; 开发工具&…...
PageHelper循环依赖问题
1. 问题 2. 原因 项目中SpringBoot的版本为2.7.18。 SpringBoot2.6.x后不推荐使用循环依赖,也就是说从2.6.x版本开始,如果项目里还存在循环依赖,SpringBoot将拒绝启动! 3. 解决 去pageHelper github看,才看到新版本…...
k8s部署Kafka集群超详细讲解
准备部署环境 Kubernetes集群信息 NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2 Kafka:3.7.1版本,apche版本 Zookeeper:3.6.3版本 准备StorageClass # kubectl get sc NAME PROVISIONER RECLA…...
【数据采集工具】Sqoop从入门到面试学习总结
国科大学习生活(期末复习资料、课程大作业解析、大厂实习经验心得等): 文章专栏(点击跳转) 大数据开发学习文档(分布式文件系统的实现,大数据生态圈学习文档等): 文章专栏(点击跳转&…...
Matlab绘图总结(进阶)
本文在前文的基础上进一步整理画图方法 MATLAB画动图_CSDN博客 1. 基础图形绘制 1.1 rectangle(矩形,圆形) 在前文中,讲解了如何使用rectangle,rectangle本意是用来画矩形的,其中,Curvature可…...
QExcel 保存数据 (QtXlsxWriter库 编译)
QtXlsxWriter 是一个用于在 Qt 应用程序中创建和操作 Excel XLSX 文件的库。它提供了一个简单的 API,使开发者能够轻松地生成和修改 Excel 文件,而无需依赖 Microsoft Excel 或其他外部应用程序。支持初始化、写文件、读文件、格式设置、合并单元格、加粗…...
k8s ETCD数据备份与恢复
在 Kubernetes 集群中,etcd 是一个分布式键值存储,它保存着整个集群的状态,包括节点、Pod、ConfigMap、Secrets 等关键信息。因此,定期对 etcd 进行备份是非常重要的,特别是在集群发生故障或需要恢复数据的情况下。本文…...
【C语言】循环嵌套:乘法表
循环嵌套,外层循环执行一次,内层循环执行i次。分别控制 在循环的过程中加一层循环。 多层循环属于循环嵌套、嵌套循环 #include <stdio.h> #include <math.h> /* 功能:循环嵌套 乘法表 时间:2024年10月 地点…...
基于Java微信小程序的水果销售系统详细设计和实现(源码+lw+部署文档+讲解等)
详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…...
从0开始深度学习(11)——多层感知机
前面介绍了线性神经网络,但是线性模型是有可能出错的,因为线性模型意味着是单调假设,但是现实中往往很复杂。例如,我们想要根据体温预测死亡率。 对体温高于37摄氏度的人来说,温度越高风险越大。 然而,对体…...
SQL语句查询
SQL语句查询 查询产生一个虚拟表 看到的是表形式显示的结果,但结果并不真正存储 每次执行查询只是从数据表中提取数据,并按照表的形式显示出来 查询语法 SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] SELECT …...
OSI参考模型与TCP/IP模型
OSI参考模型 物理层 定义电压、接口、线缆标准、传输距离、传输介质等物理参数。数据链路层(确定范围里的某一个) MAC地址寻址网络层(确定一个范围) 网络地址层寻址、路由传输层(区分不同的程序) 数据分段…...
深度学习-26-基于PyTorch的多层感知机DNN
文章目录 1 代码分析1.1 加载数据集1.2 定义模型1.3 定义损失函数和优化器1.4 定义训练函数1.4.1 定义累加器Accumulator1.4.2 计算准确率accuracy1.4.3 评估函数evaluate_accuracy1.4.4 单轮训练函数train_epoch1.4.5 训练函数train1.2 执行训练2 整体代码3 参考附录1 代码分析…...
Perl环境变量设置全攻略:从银河麒麟V10到CentOS的通用配置方法
Perl环境变量跨平台配置实战指南 在混合云和异构系统环境中,Perl作为系统管理和应用开发的重要工具,其环境配置的一致性直接影响脚本的跨平台运行能力。本文将深入探讨从银河麒麟V10到CentOS等主流Linux发行版的Perl环境变量配置方法论,帮助运…...
m3pi嵌入式机器人底层驱动解析:HAL/LL混合架构与实时电机控制
1. m3pi嵌入式机器人平台底层驱动技术解析m3pi是面向教育与工程验证场景的轻量级嵌入式机器人控制平台,其名称源于“mbed 3pi”,表明其硬件架构继承自Pololu 3pi智能小车,并深度适配ARM Cortex-M系列MCU(主要为STM32F4系列&#…...
观察者同步才是物理学真正的基石:局部重叠如何自然衍生出全部现实架构
物理学三大支柱——量子理论、广义相对论、标准模型——各自以惊人的精度描述着世界,却始终无法拼成一张完整的图景。为什么必须是31维洛伦兹时空?为什么规范群偏偏是SU(3)SU(2)U(1)/Z₆?为什么粒子谱、质量层级、测量问题和量子引力兼容性始…...
OpenClaw v2026.3.31 深度解读:为什么这次更新不是“小修小补”,而是一次明显的安全收口与后台任务体系成形
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
3种方案玩转赛博朋克2077存档修改:从入门到精通的技术指南
3种方案玩转赛博朋克2077存档修改:从入门到精通的技术指南 【免费下载链接】CyberpunkSaveEditor A tool to edit Cyberpunk 2077 sav.dat files 项目地址: https://gitcode.com/gh_mirrors/cy/CyberpunkSaveEditor 赛博朋克2077存档编辑器是一款专业级游戏数…...
拆解Clonezilla镜像:除了partclone,你还需要知道的底层原理与工具链
拆解Clonezilla镜像:从分卷压缩到文件系统的技术全景解析 当我们需要从Clonezilla备份中提取单个文件时,传统方法往往要求完整恢复整个镜像——这种"全有或全无"的方式在存储资源有限的情况下显得尤为笨重。本文将带您深入Clonezilla镜像的底层…...
Kubernetes中的StatefulSet应用实践
Kubernetes中的StatefulSet应用实践 引言:StatefulSet的重要性 哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是有状态应用的部署问题。在云原生时代,StatefulSet是管理有状态应用的关键。今天&…...
python codecs
# 聊聊Python里的codecs模块 平时写Python处理文本文件,最常打交道的可能就是open()函数了。但不知道你有没有遇到过这种情况:打开一个文件,明明看着是中文,读出来却是一堆乱码。或者从某个老系统导出的数据,用普通方式…...
用Unity 2D碰撞体+Effector,5分钟实现《星露谷物语》式的磁铁吸附效果
用Unity 2D碰撞体Effector实现《星露谷物语》式磁铁吸附效果 在《星露谷物语》这类农场模拟游戏中,角色靠近可收集物品时自动吸附的设计极大提升了操作流畅度。这种看似简单的交互背后,其实隐藏着Unity物理系统的巧妙运用。本文将手把手教你如何用2D碰撞…...
ZenTimings终极指南:解锁AMD Ryzen内存性能的完整解决方案
ZenTimings终极指南:解锁AMD Ryzen内存性能的完整解决方案 【免费下载链接】ZenTimings 项目地址: https://gitcode.com/gh_mirrors/ze/ZenTimings ZenTimings是一款专为AMD Ryzen平台设计的专业内存时序监控与优化工具,能够帮助用户深入了解和调…...
