目录

Taint(污点)与Toleration(容忍)

Taint(污点):节点的排斥标记

Toleration(容忍):Pod的适配声明

与节点亲和性的对比

警戒(cordon)和转移(drain)

Cordon:节点隔离(阻止新 Pod 调度)

Drain:节点驱逐(安全迁移所有 Pod)

Cordon vs Drain:核心区别

亲和性和非亲和性

节点亲和性(Node Affinity)

硬性要求(Required During Scheduling Ignored During Execution)

软性偏好(Preferred During Scheduling Ignored During Execution)

Pod 亲和性(Pod Affinity)

硬性要求(Required During Scheduling Ignored During Execution)

软性偏好(Preferred During Scheduling Ignored During Execution)

亲和性规则的核心操作符

亲和性与非亲和性的关系

关键对比与注意事项


Taint(污点)与Toleration(容忍)

在Kubernetes(K8s)中,Taint(污点)Toleration(容忍)是用于控制Pod调度到节点的核心机制,二者协同工作以实现灵活的节点资源分配。

Taint(污点):节点的排斥标记

  • 作用:Taint是节点级别的属性,用于标记节点的特殊限制或要求,阻止不符合条件的Pod被调度到该节点。
  • 组成:每个Taint由三部分构成:
    • Key(键):标识污点的唯一名称(如dedicated=special中的dedicated)。
    • Value(值):可选的附加标识(如special),与Key共同构成唯一标识。
    • Effect(效果):定义污点对Pod的排斥行为,支持以下三种类型:
      • NoSchedule:禁止Pod调度到该节点(除非Pod有匹配的Toleration)。
      • PreferNoSchedule:尽量避免调度,但无其他可用节点时仍可调度。
      • NoExecute:不仅禁止新Pod调度,还会驱逐节点上已存在的、无匹配Toleration的Pod。

Toleration(容忍):Pod的适配声明

  • 作用:Toleration是Pod级别的属性,声明Pod可以容忍哪些节点的污点,从而允许调度到这些节点。
  • 匹配规则:Toleration需与节点的Taint在KeyEffect上完全一致,且满足以下条件之一:
    • Operator为Equal:Value必须相同(如key: "dedicated", operator: "Equal", value: "special", effect: "NoSchedule")。
    • Operator为Exists:忽略Value(如key: "dedicated", operator: "Exists",表示容忍所有以dedicated为Key的污点)。
    • 空Key和Exists:匹配所有污点(如operator: "Exists",表示容忍所有污点)。
  • 特殊参数
    • tolerationSeconds:仅对NoExecute有效,指定Pod在节点被标记污点后继续运行的时间(超时后驱逐)。

与节点亲和性的对比

  • 污点/容忍:通过“排斥”机制控制调度,节点设置污点,Pod声明容忍。
  • 节点亲和性:通过“吸引”机制控制调度,Pod声明偏好或硬性要求,节点无需额外标记。

警戒(cordon)和转移(drain)

在 Kubernetes 中,Cordon 和 Drain 是用于节点管理的两个核心命令,分别通过“隔离”和“驱逐”机制控制 Pod 的调度与迁移,确保节点维护或故障处理时的服务连续性。

Cordon:节点隔离(阻止新 Pod 调度)

  • 作用:将节点标记为 不可调度(SchedulingDisabled),阻止新 Pod 被分配到该节点,但已运行的 Pod 不受影响
  • 典型场景
    • 节点维护:升级内核、更换硬件等操作前,避免新工作负载干扰。
    • 故障排查:节点异常但未完全宕机时,隔离新 Pod 以专注问题修复。
    • 资源优化:临时将节点从调度池中移除,平衡集群负载。

Drain:节点驱逐(安全迁移所有 Pod)

  • 作用主动驱逐节点上的所有 Pod,并将节点标记为不可调度,确保负载平稳迁移至其他节点。
  • 典型场景
    • 节点下线:替换故障节点或退役旧硬件。
    • 批量维护:同时操作多个节点(如滚动升级集群)。
    • 资源回收:释放节点资源以重新分配。
  • 关键特性
    • Pod 驱逐策略
      • 默认忽略 DaemonSet 管理的 Pod(如日志收集器),因其与节点强绑定。
      • 可通过 --force 强制驱逐所有 Pod(慎用,可能导致数据丢失)。
    • 优雅终止
      • 尊重 Pod 的 terminationGracePeriodSeconds,允许进程完成清理。
      • 若 Pod 定义了 PodDisruptionBudget(PDB),Kubernetes 会检查驱逐是否违反最小可用副本数限制。
    • 数据安全
      • --delete-emptydir-data:强制删除使用 emptyDir 卷的 Pod(数据会丢失)。
      • 对于持久化卷(PV),需确保数据可跨节点访问(如云盘或分布式存储)。

Cordon vs Drain:核心区别

特性CordonDrain
作用对象节点调度状态节点上的 Pod
已运行 Pod不影响主动驱逐
典型场景临时隔离节点节点下线或长期维护
数据安全无影响需处理 emptyDir 或本地存储
命令组合常单独使用通常与 cordon 隐式配合(drain 会自动标记节点为不可调度)

亲和性和非亲和性

在 Kubernetes 中,亲和性(Affinity) 主要分为 节点亲和性(Node Affinity) 和 Pod 亲和性(Pod Affinity) 两大类,每类又包含 硬性要求(Required) 和 软性偏好(Preferred) 两种规则。

节点亲和性(Node Affinity)

作用:控制 Pod 调度到满足特定节点标签条件的节点。

硬性要求(Required During Scheduling Ignored During Execution)
  • 规则:Pod 必须调度到满足条件的节点,否则调度失败。
  • 适用场景
    • 节点必须具备特定硬件(如 GPU、SSD)。
    • 节点必须运行特定软件(如特定内核版本)。
    • 节点必须属于特定环境(如生产环境、测试环境)。
软性偏好(Preferred During Scheduling Ignored During Execution)
  • 规则:调度器优先选择满足条件的节点,但不强制。
  • 适用场景
    • 优先使用高性能节点,但允许回退到普通节点。
    • 优先选择负载较低的节点。
    • 优先选择与当前节点标签匹配的节点(如相同区域)。

Pod 亲和性(Pod Affinity)

作用:控制 Pod 调度到与已运行的特定 Pod 共存(或靠近)的节点。

硬性要求(Required During Scheduling Ignored During Execution)
  • 规则:Pod 必须与满足条件的 Pod 运行在同一拓扑域(如节点、可用区)。
  • 关键参数
    • topologyKey:定义拓扑域的范围(如 kubernetes.io/hostname 表示节点级,topology.kubernetes.io/zone 表示可用区级)。
  • 适用场景
    • 确保相关服务(如 Web 和缓存)共存以减少网络延迟。
    • 确保数据库副本分散在不同节点以避免单点故障。
软性偏好(Preferred During Scheduling Ignored During Execution)
  • 规则:调度器优先将 Pod 与满足条件的 Pod 共存,但不强制。
  • 适用场景
    • 优先将 Pod 调度到与目标 Pod 相同的节点或可用区,但允许分散。
    • 优化数据本地性(如计算任务靠近数据存储节点)。

亲和性规则的核心操作符

在定义亲和性条件时,可通过以下操作符匹配节点或 Pod 的标签:

  • In:标签值在指定列表中。
  • NotIn:标签值不在指定列表中。
  • Exists:标签键存在(忽略值)。
  • DoesNotExist:标签键不存在。
  • Gt(仅节点亲和性):标签值为数字且大于指定值。
  • Lt(仅节点亲和性):标签值为数字且小于指定值。

亲和性与非亲和性的关系

  • 亲和性(Affinity):通过标签匹配实现 Pod 与节点或其他 Pod 的吸引
  • 非亲和性(Anti-Affinity):通过标签匹配实现 Pod 与节点或其他 Pod 的排斥
    • 例如:Pod 非亲和性可确保同一服务的副本不运行在同一节点,提高高可用性。

关键对比与注意事项

分类类型规则类型核心作用
节点亲和性硬性要求RequiredDuringScheduling强制匹配节点标签
软性偏好PreferredDuringScheduling优先匹配节点标签
Pod 亲和性硬性要求RequiredDuringScheduling强制共存于指定拓扑域
软性偏好PreferredDuringScheduling优先共存于指定拓扑域
特性亲和性(Affinity)非亲和性(Anti-Affinity)
目的吸引 Pod 共存或选择特定节点排斥 Pod 共存或避开特定节点
类型节点亲和性、Pod 亲和性节点非亲和性、Pod 非亲和性
硬性/软性支持 Required 和 Preferred支持 Required 和 Preferred
拓扑域(TopologyKey)用于 Pod 亲和性定义共存范围用于 Pod 非亲和性定义隔离范围
性能影响复杂规则可能增加调度延迟同上
  • 亲和性:通过标签匹配实现 Pod 与节点或其他 Pod 的吸引,适用于性能优化、共存等场景。
  • 非亲和性:通过标签匹配实现 Pod 与节点或其他 Pod 的排斥,适用于高可用、资源隔离等场景。
  • 灵活组合:结合硬性/软性规则、拓扑键和权重,可构建复杂的调度策略,满足多样化业务需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88971.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88971.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88971.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于OpenCV的深度学习人脸识别系统开发全攻略(DNN+FaceNet核心技术选型)

核心技术选型表 技术组件版本/型号用途OpenCV DNN4.5.5人脸检测FaceNet (facenet-pytorch)0.5.0人脸特征提取MiniConda最新版Python环境管理PyTorch1.8.0FaceNet运行基础OpenVINO2021.4模型加速(可选)SSD Caffe模型res10_300x300高精度人脸检测 一、环境准备与项目搭建 1.1 M…

【AI News | 20250714】每日AI进展

AI Repos 1、All-Model-Chat All Model Chat 是一款为Google Gemini API家族设计的网页聊天应用,支持多模态输入(图片、音频、PDF等)和多种模型(如Gemini Flash、Imagen)。它提供了丰富的自定义功能,包括高…

C 语言(二)

主要包括变量与常量、数据类型、存储方式、数制转换以及字符处理等内容一、变量与常量在 C 语言中,变量是用来存储数据的命名空间,它会在内存中分配地址。例如:int i; i 12345; 其中 i 是变量,12345 是常量。常量表示在程序运行过…

原型继承(prototypal inheritance)的工作原理

这是一个非常常见的 JavaScript 问题。所有 JS 对象都有一个__proto__属性,指向它的原型对象。当试图访问一个对象的属性时,如果没有在该对象上找到,它还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索&…

OpenCV 视频处理与摄像头操作详解

1. 引言大家都来写OpenCV😊,学的好开心!2. 视频基础与OpenCV简介2.1 视频的定义视频(Video)是由一系列静态图像(帧)以一定速率连续播放形成的动态影像。其本质是利用人眼的视觉暂留效应&#xf…

Agentic AI 的威胁与缓解措施

原文:https://www.aigl.blog/content/files/2025/04/Agentic-AI—Threats-and-Mitigations.pdf AI Agent 的定义 1. 定义与基础 智能代理(Agent)的定义: 智能代理是一种能够感知环境、进行推理、做出决策并自主采取行动以实现特定…

ArrayList列表解析

ArrayList集合 ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。 ArrayList 继承…

《恋与深空》中龙和蛇分别是谁的代表

在《恋与深空》宏大而神秘的世界观中,每一个符号都蕴含着深意。当玩家们热议“龙”和“蛇”这两种强大而古老的生物究竟代表着谁时,所有的线索都默契地指向了同一个名字——秦彻。 他不仅是力量与权威的象征“恶龙”,也是背负着宿命与纠葛的“…

gitignore添加后如何生效?

清除 Git 缓存: git rm -r --cached .添加文件到 Git:git add .使用 git commit 命令提交这些更改git commit -m "Update .gitignore"

多尺度频率辅助类 Mamba 线性注意力模块(MFM),融合频域和空域特征,提升多尺度、复杂场景下的目标检测能力

在伪装物体检测领域,现有方法大多依赖空间局部特征,难以有效捕捉全局信息,而 Transformer 类方法虽能建模长距离依赖关系,却存在计算成本高、网络结构复杂的问题。同时,频域特征虽具备全局建模能力,可频繁的…

Dify的默认端口怎么修改

1.定位配置文件 在 Dify 的安装目录中找到 .env 文件(通常位于 docker/ 子目录下)。此文件定义了 Docker 容器的环境变量,包括端口配置。 2.调整端口参数 修改以下两个关键配置项: # Docker 容器内部 Nginx 监听的端口&#xf…

Go内存分配

图解Go语言内存分配 - 知乎 go内置运行时,采用了自主管理,实现更好的内存使用模式,不需要每次内存分配都进行系统调用 采用TCMalloc算法:把内存分为多级管理,从而降低锁的粒度 将可用的堆内存采用二级分配的方式进行…

cursor使用mcp连接mysql数据库,url方式

背景。 用cursor生成后端代码。让cursor可以创建响应的表结构以及插入数据。使用的cursor版本是1.2.1 cursor 官网 mcp 说明smithery 中mysql mcp这个mcp具有建表的本领。 在cursor中是这样配置的。 以上这种配置方式是是通过在smithery 网站中配置好自己的mysql数据库连接后才…

Twisted study notes[1]

文章目录serverreferencesserver Twisted usually using subclass twisted.internet.protocol.Protocol to treat protocols .Protocol is a fundamental class in Twisted for implementing network protocols.protocol class instant don’t exists forever because of it w…

Python 数据建模与分析项目实战预备 Day 6 - 多模型对比与交叉验证验证策略

✅ 今日目标 引入多种常见分类模型(随机森林、支持向量机、K近邻等)比较不同模型的训练效果使用交叉验证提升评估稳定性🧾 一、对比模型列表模型类名(sklearn)适用说明逻辑回归LogisticRegression基础线、易于解释KNNK…

xss-labs 1-8关

level1打开检查&#xff0c;发现test直接放入h2标签中此时通过script绕过h2标签构造payload127.0.0.1/xss-labs/lvel1.php?name<script>alert(111)</script>直接使用script标签绕过h2,并执行alert,通过level2打开检查&#xff0c;输入的123被放在input标签里面的v…

Conda 核心命令快速查阅表

本表旨在提供一个简洁、高效的 Conda 命令参考&#xff0c;专注于最常用功能的快速查找。 1. 环境管理 (Environment Management)功能 (Function)命令 (Command)示例 (Example)创建新环境conda create -n <env_name> [packages...]conda create -n myenv python3.9 panda…

音视频学习(三十九):IDR帧和I帧

主要区分&#xff1a;I 帧 是帧内编码帧&#xff0c;IDR 帧 是一种特殊的 I 帧&#xff0c;它是“清除参考帧链的强制切断点”。H.264 视频结构 结构 H.264 视频由多个 NAL&#xff08;Network Abstraction Layer&#xff09;单元 构成&#xff0c;每一帧图像可由一个或多个 NA…

人工智能与机器学习暑期科研项目招募(可发表论文)

人工智能与机器学习暑期科研项目招募 华中科技大学博士论文指导我是计算机专业的研二学生&#xff1a;从大二开始接触科研&#xff0c;至今已发表1篇CCF-A类会议论文、1篇CCF-B类会议论文&#xff0c;以及2篇Top期刊论文。正是这段从本科开始的科研经历&#xff0c;让我在保研和…

C盘爆满?一键清理恢复极速体验!“小番茄C盘清理”彻底解放你的电脑

目录 前言 C盘变红&#xff1f;&#xff01;那么你的电脑将会出现下面糟糕的情况&#xff1a; 一、小番茄C盘清理介绍——拯救你的C盘爆红&#xff01; 二、安装登录小番茄C盘清理 2.1 安装小番茄C盘清理 2.2 登录—拥有专属自己电脑的小番茄C盘清理 三、手把手教你深度…