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

k8s 学习记录 (六)_Pod 污点和容忍性详解

一、前言

在 Kubernetes 集群中,我们已经了解了节点亲和性和 Pod 亲和性,它们在 Pod 调度方面提供了很大的灵活性。今天,我们来探讨另外两个重要的概念 ——Pod 污点(Taints)和容忍性(Tolerations),它们同样在 Pod 的调度和节点资源分配中扮演着关键角色。

二、Pod 污点(Taints)

污点是应用在节点上的一种标记,它的作用是让节点拒绝接受某些 Pod 的调度,除非这些 Pod 明确表示可以容忍这些污点。可以将污点看作是节点对 Pod 的一种 “排斥规则”。

使用kubectl taint`命令来给节点添加污点。命令格式如下:

kubectl taint nodes <node-name> <taint-key>=<taint-value>:<taint-effect>

其中:

  • node-name:要添加污点的节点名称。
  • taint-key:污点的键,用于标识污点的类型。
  • taint-value:污点的值,与键一起构成污点的具体标识。
  • taint-effect:污点的效果,常见的有以下三种:
    • NoSchedule:表示 Pod 不能被调度到带有该污点的节点上,即使 Pod 已经在该节点上运行,也不会被重新调度到其他节点。
    • PreferNoSchedule:这是一种软限制,尽量避免将 Pod 调度到带有该污点的节点上,但如果没有其他合适的节点,还是会调度过去。
    • NoExecute:不仅 Pod 不能被调度到带有该污点的节点上,而且如果 Pod 正在该节点上运行,当污点被添加时,Pod 会根据其容忍性决定是否被驱逐。

例如,我们给名为node1的节点添加一个污点,使其不允许普通 Pod 调度:

kubectl taint nodes node1 dedicated=special-user:NoSchedule

这个命令表示node1节点被标记为仅供特定用户使用,普通 Pod 如果没有相应的容忍性,将无法被调度到该节点。

三、Pod 容忍性(Tolerations)

容忍性是 Pod 的一种属性,它允许 Pod 调度到带有特定污点的节点上。也就是说,容忍性是 Pod 对节点污点的一种 “免疫能力”。

在 Pod 的配置文件中定义容忍性,示例如下:

yaml

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:tolerations:- key: "dedicated"operator: "Equal"value: "special-user"effect: "NoSchedule"containers:- name: my-containerimage: nginx:1.14.2ports:- containerPort: 80

在上述配置中:

  • key:对应节点污点的键。
  • operator:用于指定匹配操作符,有Equal(表示值必须完全匹配)和Exists(表示只要存在该键的污点就匹配,忽略值)两种。
  • value:对应节点污点的值,当opera为Equal时需要指定。
  • effect:对应节点污点的效果,只有当 Pod 的容忍性中effect与节点污点的effect相匹配时,才会考虑容忍该污点。

如果一个 Pod 需要容忍多种污点,可以在=spec.tolerations字段中定义多个容忍项。

四、深入理解容忍性的应用场景

1. 独占节点资源:在集群中,某些节点可能配置了特殊的硬件资源,如 GPU。为了确保这些节点仅被特定的任务使用,可以给这些节点添加污点,然后让需要使用这些资源的 Pod 设置相应的容忍性,这样就实现了资源的独占。
2. 维护和升级节点:当需要对某个节点进行维护或升级时,可以给该节点添加` NoExecute` 类型的污点。此时,具有相应容忍性的 Pod 可以继续在该节点上运行,而没有容忍性的 Pod 会被驱逐,避免了服务中断。

五、总结

Pod 污点和容忍性是 Kubernetes 调度系统中非常重要的特性,它们通过节点和 Pod 之间的 “排斥” 与 “容忍” 机制,实现了更加精细的资源分配和调度控制。合理使用污点和容忍性,可以让集群的资源管理更加高效,确保不同类型的 Pod 能够在合适的节点上运行,提高整个集群的稳定性和性能。
http://www.xdnf.cn/news/213319.html

相关文章:

  • 日常开发小Tips:后端返回带颜色的字段给前端
  • 数据结构:实验7.3Huffman树与Huffman编码
  • 【18】爬虫神器 Pyppeteer 的使用
  • 信息科技伦理与道德3-4:面临挑战
  • 宾馆一次性拖鞋很重要,扬州卓韵酒店用品详细介绍其材质与卫生标准
  • 论文导读 - 基于特征融合的电子鼻多任务深度学习模型研究
  • 【无基础】小白解决Docker pull时报错:https://registry-1.docker.io/v2/
  • Html 2
  • verl - 火山引擎大语言模型强化学习训练库
  • Wi-SUN与LoRa和NB-IoT通信技术的对比
  • AI+零售:智能推荐、无人店与供应链管理的未来
  • 基于STM32、HAL库的DS28E15P安全验证及加密芯片驱动程序设计
  • Kafka 消息可靠性深度解析:大流量与小流量场景下的设计哲学
  • [逆向工程]如何理解小端序?逆向工程中的字节序陷阱与实战解析
  • 搜索引擎中的检索模型(布尔模型、向量空间模型、概率模型、语言模型)
  • 贵族运动项目有哪些·棒球1号位
  • CSR社会责任报告是什么?CSR社会责任报告定义
  • C++ 如何计算两个gps 的距离
  • 基于 ARM 的自动跟拍云台设计
  • 【无标题】好用的远程链接插件
  • 水安题库:水利水电安全员ABC精选练习题
  • 阿里巴巴Qwen3发布:登顶全球开源模型之巅,混合推理模式重新定义AI效率
  • 如何个人HA服务器地址和长期密钥
  • 精益管理是什么?如何才能实现精益管理?
  • WinSW注册服务
  • n8n 工作流自动化工具, 幷与 Al Agent 进行集成工作流
  • CPU 空转解析
  • 5G技术在工业4.0中的应用:连接未来,驱动智能制造
  • Linux0.11系统调用:预备知识
  • 双向流热固耦合的收敛