navicat怎么添加check约束
314
2022-09-24
K8S taint(污点)和tolerations(污点容忍)
文章目录
一、Taint(污点)
`1.1概念``1.2设置污点`取消污点
二、tolerations(污点容忍)
`2.1概念``2.2示例`
三、Node 和 Pod 对于污点与容忍基本概念参考资料
一、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 迅速在其他正常节点启动。
参考资料
参考视频:Kubernetes 污点和容忍,真的很简单!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~