K8S taint(污点)和tolerations(污点容忍)


一、Taint(污点)

1.1概念

节点亲和性是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点 。 这可能出于一种偏好,也可能是硬性要求。 Taint(污点)则相反,它使节点能够排斥一类特定的 Pod。

1.2设置污点

kubectl taint nodes [Node Name] key=value:[effect]

effect可取三种值:

NoSchedule			#一定不能被调度【常用】
PreferNoShedule		#尽量不要调度
NoExecute			#不仅不会调度,而且还会驱逐Node上所有的Pod

例如:

kubectl taint node k8smaster type=dev:NoSchedule

给k8smaster节点增加一个污点,它的键名是type,键值是 dev,效果是 NoSchedule。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 这个节点。

取消污点

kubectl taint nodes [Node Name] key:[effect]-

二、tolerations(污点容忍)

2.1概念

允许Pod调度到持有Taints的Node上(并不是强制调度到持有Taints的Node上,如果有干净的节点,也会往其上调度)

污点容忍+nodeSelector可以实现只调度到专用节点上

一个容忍度和一个污点相“匹配”是指它们有一样的键名和效果,并且:

如果 operator 是 Exists (此时容忍度不能指定 value)
如果 operator 是 Equal ,则它们的 value 应该相等

2.2示例

在这里插入图片描述

tolerations:
- key: "type"
  operator: "Exists"
  effect: "NoSchedule"

或者

tolerations:
- key: "type"
  operator: "Equal"
  value: "dev"
  effect: "NoExecute"
  tolerationSeconds: 3600

表示该Pod可以调度到key等于type,且动作为NoSchedule的节点上。

tolerationSeconds: 3600表示如果这个 Pod 已经在这个带污点且 effect 为 NoExecute 的 node 上。这个 pod 可以一直运行到 3600s 后再被踢掉。如果这时候 Node 的污点被移除了,这个 Pod 就不会被踢掉。

三、Node 和 Pod 对于污点与容忍基本概念

  • 一个 node 可以有多个污点;
  • 一个 pod 可以有多个容忍;
  • kubernetes 执行多个污点和容忍方法类似于过滤器

如果一个 node 有多个污点,且 pod 上也有多个容忍,只要 pod 中容忍能包含 node 上设置的全部污点,就可以将 pod 调度到该 node 上。

如果 pod 上设置的容忍不能够包含 node 上设置的全部污点,且 node 上剩下不能被包含的污点 effect 为 PreferNoSchedule,那么也可能会被调度到该节点。

注意:

  • 当 pod 总存在 容忍,首先 pod 会选择没有污点的节点,然后再选择容忍污点的节点。
  • 如果 node 上带有污点 effect 为 NoSchedule,而 pod 上不带相应的容忍,kubernetes 就不会调度 pod 到这台 node 上。
  • 如果 Node 上带有污点 effect 为 PreferNoShedule,这时候 Kubernetes 会努力不要调度这个 Pod 到这个 Node 上。
  • 如果 Node 上带有污点 effect 为 NoExecute,这个已经在 Node 上运行的 Pod 会从 Node 上驱逐掉。没有运行在 Node 的 Pod 不能被调度到这个 Node 上。一般使用与当某个节点处于 NotReady 状态下,pod 迅速在其他正常节点启动。

参考资料

参考视频:https://ke.qq.com/course/1709963
三只兔子的故事理解 Kubernetes 污点和容忍,真的很简单!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值