1. k8s-pod污点与污点容忍
-
Taints:避免Pod调度到特定Node上
-
Tolerations:允许Pod调度到持有Taints的Node上
-
应用场景:
- 专用节点:根据业务线将Node分组管理,希望在默认情况下不调度该节点,只有配置了污点容忍才允许分配
- 配备特殊硬件:部分Node配有SSD硬盘、GPU,希望在默认情况下不调度该节点,只有配置了污点容忍才允许分配
- 基于Taint的驱逐
-
示例:给节点添加污点
-
格式:
kubectl taint node [node] key=value:[effect]
-
例如:
kubectl taint node k8s-node1 gpu=yes:NoSchedule
-
验证:
kubectl describe node k8s-node1 |grep Taint
-
-
其中[effect] 可取值:
- NoSchedule :一定不能被调度
- PreferNoSchedule:尽量不要调度,非必须配置容忍
- NoExecute:不仅不会调度,还会驱逐Node上已有的Pod
-
如果希望Pod可以被分配到带有污点的节点上,要在Pod配置中添加污点容忍(tolrations)字段
apiVersion: v1 kind: Pod metadata: name: pod-taints spec: containers: - name: pod-taints image: busybox:latest tolerations: - key: "gpu" operator: "Equal" # Equal等于 下面的值就 value: "yes" effect: "NoSchedule"
-
去掉污点
kubectl taint node [node] key:[effect]-