k8s pod汙點與汙點容忍
阿新 • • 發佈:2021-10-29
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]-