污点taint和容忍tolerations
污点(taint) 在k8s中控制POD调度的,node打上了taint 新创建的Pod 自然不能调度到该node上。除非加了:容忍 (toleration )才能被忽略,pod才会调度到该node上。
打污点的语法和指令。
kubectl taint nodes node1 key=value:NoSchedule
kubectl taint node [node] key=value[effect]
其中[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ]
NoSchedule: 一定不能被调度
PreferNoSchedule: 尽量不要调度
NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod
可以在PodSpec中为容器设定容忍标签。以下两个容忍标签都与上面的 kubectl taint
创建的污点“匹配”, 因此具有任一容忍标签的Pod都可以将其调度到“ node1”上:
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"
tolerations:
- key: "key"
operator: "Exists"
effect: "NoSchedule"
删除 taint
kubectl taint node node1 key1:NoSchedule- # 这里的key可以不用指定value
kubectl taint node node1 key1:NoExecute-
# kubectl taint node node1 key1- 删除指定key所有的effect
kubectl taint node node1 key2:NoSchedule-
生活就应该向往美好