k8s污点和容忍度小计

污点taints是定义在节点之上的键值型属性数据,用于让节点拒绝将Pod调度运行于其上, 除非该Pod对象具有接纳节点污点的容忍度。而容忍度tolerations是定义在 Pod对象上的键值型属性数据,用于配置其可容忍的节点污点,而且调度器仅能将Pod对象调度至其能够容忍该节点污点的节点之上


查看污点
kubectl describe node 192.168.52.41 | grep Taints
设置节点污点
kubectl taint nodes 192.168.52.41 k1=v1:NoSchedule
删除污点
kubectl taint nodes 192.168.52.41 k1=v1:NoSchedule-
删除node节点上k1键的效用标识为NoSchedule的污点信息:
kubectl taint node 192.168.52.41 k1:NoSchedule-
删除使用指定键名的所有污点
kubectl taint node 192.168.52.41 k1-
删除节点上的全部污点信息,通过kubectl patch命令将节点属性spec.taints的值直接置空即可:
kubectl patch nodes 192.168.52.41 -p '{"spec":{"taints":[]}}'


NoSchedule
不能容忍此污点的新Pod对象不可调度至当前节点,属于强制型约束关系,节点上现存的Pod对象不受影响。
PreferNoSchedule
NoSchedule的柔性约束版本,即不能容忍此污点的新Pod对象尽量不要调度至当前节点,不过无其他节点可供调度时也允许接受相应的Pod对象。节点上现存的Pod对象不受影响。
NoExecute
不能容忍此污点的新Pod对象不可调度至当前节点,属于强制型约束关系,而且节点上现存的Pod对象因节点污点变动或Pod容忍度变动而不再满足匹配规则时,Pod对象将被驱逐。

在Pod对象上定义容忍度时,它支持两种操作符:一种是等值比较Equal,表示容忍度与污点必须在key、value和effect三者之上完全匹配;另一种是存在性判断Exists,表示二者的key和effect必须完全匹配,而容忍度中的value字段要使用空值。

nginx-deployment.ymal
tolerations: #容忍
- key: "k1"
operator: "Equal"
value: "v1"
effect: "NoSchedule"
operator为Equal的情况下,键值都对的情况下 deployment下创建的pod就能容忍在污点节点运行。

 

#Exists:

tolerations:

- key: "key"

  operator: "Exists"

  effect: "NoSchedule"

 

#设置容忍所有污点,防止节点被设置污点

tolerations:

  - operator: "Exists"

 

posted @ 2021-06-30 16:12  lpaxq  阅读(223)  评论(0编辑  收藏  举报