Kubernetes中污点(Taints)和容忍度(Tolerations)介绍

目录

  • 一、污点(Taints)
  • 二、容忍度(Tolerations)
  • 三、使用场景

在 Kubernetes 中,污点(Taints)是一种节点级别的特性,用于标记节点具有某种“特殊”属性或限制条件,从而影响调度器对Pod的分配决策。污点与容忍度(Tolerations)配合使用,共同构成了节点的准入控制机制,确保只有能够容忍相应污点的Pod才能被调度到带有特定污点的节点上。这种机制有助于实现节点的隔离、资源保护以及特定工作负载的定向部署。

一、污点(Taints)

污点是由集群管理员或自动化流程添加到节点上的键值对标签,通常包含以下三个部分:

  1. 键(Key):标识污点的类型,如 dedicated, environment, node-role.kubernetes.io/worker, 等。
  2. 值(Value):提供污点的具体信息,如 special-use, production, true, 等。
  3. 效应(Effect)
    • NoSchedule:禁止调度器将新的Pod调度到带有此污点的节点上,除非Pod具有匹配的容忍度。
    • PreferNoSchedule:类似 NoSchedule,但不是硬性约束。调度器会尽量避免将Pod调度到带有此污点的节点,但在没有其他合适节点时,仍可能调度。
    • NoExecute:除了阻止新Pod调度外,还可能导致已经运行在该节点上的、无法容忍该污点的Pod被驱逐(evicted)。对于已存在的Pod,是否立即执行驱逐取决于tolerationSeconds字段的设置。
apiVersion: v1
kind: Node
metadata:
  name: my-node
spec:
  taints:
  - key: dedicated
    value: special-use
    effect: NoSchedule

二、容忍度(Tolerations)

容忍度是PodSpec中的一项配置,表示Pod愿意接受并能在具有特定污点的节点上运行。一个容忍度包含以下信息:

  1. 键(Key):与污点的键相匹配。
  2. 值(Value):可选,与污点的值相匹配。如果不指定,则认为Pod能容忍任何值的同名污点。
  3. 效应(Effect):与污点的效应相匹配。
  4. 容忍期限(TolerationSeconds):仅对NoExecute效应有效,指定Pod在节点被赋予匹配的NoExecute污点后,可以继续运行的时间(秒)。
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  tolerations:
  - key: "dedicated"
    operator: "Equal"
    value: "special-use"
    effect: "NoSchedule"

三、使用场景

污点与容忍度的组合常用于以下场景:

  • 资源隔离:为特定用途(如GPU节点、大数据节点、专用服务节点等)的节点添加污点,确保只有具有对应容忍度的Pod才能被调度到这些节点上。
  • 维护操作:在计划维护或升级节点时,添加带有NoExecute效应的污点,促使Pod自动迁移到其他节点,避免影响服务。
  • 故障隔离:当检测到节点异常(如硬件故障、网络问题、软件错误等)时,自动添加NoExecute污点,驱逐Pod以防止进一步的服务中断。
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值