K8S基本操作-11-Node Affinitty
Node Affinitty
在 Kubernetes 中,Node affinity(節點親和性)是一種用於控制 Pod 調度到哪些節點上的機制。它允許您根據節點的屬性和標籤,指定 Pod 應該调度到哪些節點上。
我們先用 Label
在 node01
上頭標記顏色 color=blue
:
kubectl label node node01 color=blue
接著在 Deployment 的設置上設置 Node affinity:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: blue
spec:
replicas: 3
selector:
matchLabels:
run: nginx
template:
metadata:
labels:
run: nginx
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: color
operator: In
values:
- blue
這個 pod 就會優先跑到有 color=blue 的 label 的 Node 上了。
關於強制調度,或者更傾向於調度
nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
此屬性可強制將 Pod 調度到具有匹配標籤的節點上。如果沒有匹配標籤的節點,則 Pod 將無法調度。
nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
此屬性僅使 Pod 更傾向於調度到具有匹配標籤的節點上。如果沒有匹配標籤的節點,Pod 仍會調度到其他節點。