污点
**污点(Taint)**表示此节点已被 key=value 污染,容器组调度不允许(PodToleratesNodeTaints 策略)或尽量不(TaintTolerationPriority 策略)调度到此节点,除非是能够容忍(Tolerations)key=value 污点的容器组。
- 不允许调度 (NoSchedule)
- 尽量不调度 (PreferNoSchedule)
- 不允许并驱逐已有容器组 (NoExecute)

master nodes上有个污点
kubectl describe node master | grep Taint
`Taints: node-role.kubernetes.io/master:NoSchedule`去除污点
bash
#!/bin/bash
read -p "请输入要去除污点的master节点的hostname(比如: master1):" node
kubectl taint nodes $node node-role.kubernetes.io/master:NoSchedule-所以默认创建的Pod不会被调度master节点,除非被设置了容忍tolerations
yaml
# pod_toleration.yaml
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: pod1
spec:
containers:
- image: httpd:2.4.41-alpine
name: pod1-container
command: ["sleep", "3600"]
# 容忍这个污点
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
nodeSelector:
node-role.kubernetes.io/master: ""参考
https://kubernetes.io/zh/docs/concepts/scheduling-eviction/taint-and-toleration/