Kubernetes-Taint、Toleartions
Taint、Tolerations
Taint在一类服务器上打上污点,让不能容忍这个污点的Pod不能部署在打了污点的服务器上。
查看节点污点情况
污点值有三个
- NoSchedule: # 一定不被调度
- PreferNoSchedule: # 尽量不被调度
- NoExecute: # 不会调度,并且驱逐Node已有的Pod
$ kubectl describe node k8s-master|grep Taint
Taints: master-test=test:PreferNoSchedule
为节点添加污点
$ kubectl taint node [node] key=value:污点三个值
移除污点
$ kubectl taint nodes k8s-node1 key:NoExecute-
节点上有多个Taint,每个Taint都需要容忍Pod才能部署上去
tolerations:
- effect: NoSchedule
key: test1
operator: Exists # 匹配到key为test1的污点就能容忍
tolerations:
- operator: Exists # 容忍所有的污点
tolerations:
- operator: Exists
key: test1 # 只要污点存在这个key,就能容忍
tolerationSeconds: 60 # 需要和NoExecute一起配置,Pod只能在这个节点停留60秒,之后还是会被清除。当node节点不正常时,master节点会将node节点打上NoSchdule和NoExecute两个污点,导致Pod全部被删除,这个参数就避免Pod因为网络波动导致Pod被清除