節點選擇器 nodeSelector
- 節點選擇器 通過匹配一個 節點的Label鍵值對告訴kube scheduler 將pod調度到哪個節點
kubectl lable node mynode zzz=xxx #給mynode節點添加 zzz=xxx標簽
apiVersion: v1
kind: Pod
metadata:
name: app01
labels:
app: redis
spec:
containers:
- name: redis
image: redis
ports:
- name: redisport
containerPort: 6379
protocol: TCP
nodeSelector:
zzz: xxx
節點親和力和反親和力 Node Affinity and Anti-Affinity
-
如果 nodeSelector 與節點上的標簽不匹配,則不會調度 pod。Node Affinity and Anti-Affinity
-
spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
- Soft NodeAffinity 和 Anti-Affinity:如果節點標簽存在,Pod 將在那里運行。如果沒有,那么 Pod 將被重新調度到集群內的其他地方。
-
spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
- Hard NodeAffinity 和 Anti-Affinity:如果節點標簽不存在,則根本不會調度 Pod。
pod親和力和反親和力 Pod Affinity and Anti-Affinity
pod親和力
- spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution
- 用於Soft Pod Affinity。如果首選選項可用,Pod 將在那里運行。如果沒有,Pod 仍然可以安排在其他地方。
- spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution
- 用於Hard Pod Affinity。如果所需選項不可用,則 Pod 無法運行。
pod反親和力
-
spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
- 用於Soft Pod Anti-Affinity。如果首選選項可用,Pod 將在那里運行。如果沒有,Pod 仍然可以被調度到其他地方。
-
spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution
- 用於Hard Pod Anti-Affinity。如果所需選項不可用,則 Pod 無法運行。
如果節點上有 xxx=yyy的標簽,反親和力Pod anti-affinity 不會將pod調度到該節點
- 用於Hard Pod Anti-Affinity。如果所需選項不可用,則 Pod 無法運行。