污点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-
 
 
posted @ 2020-04-27 16:05  石榴心  阅读(198)  评论(0编辑  收藏  举报