1. Node Affinity
Node Affinity는 파드가 특정 라벨이 있는 노드에 스케줄링되도록 요구하거나 선호하도록 설정할 수 있습니다.
- 필수 설정: 특정 조건이 충족되지 않으면 파드가 해당 노드에 배치되지 않습니다.
-
yaml
apiVersion: v1 kind: Pod metadata: name: my-pod spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "node-type" operator: In values: ["high-performance"]
- 선호 설정: 조건이 충족되는 노드를 선호하되, 필수는 아닙니다.
-
yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: "zone"
operator: In
values: ["us-west-1", "us-west-2"]
2. Taint Toleration
노드에 Taint를 설정하고 파드가 이를 Toleration(허용)할 수 있도록 설정하여, 특정 파드만 해당 노드에 배치할 수 있게 합니다.
- Taint 설정 (노드에 적용)예를 들어, key=value Taint를 NoSchedule로 설정하면, 이를 허용하는 Toleration이 없는 파드는 해당 노드에 스케줄링되지 않습니다.
kubectl taint nodes <node-name> key=value:NoSchedule
- yaml
-
apiVersion: v1 kind: Node metadata: name: my-node spec: taints: - key: "key1" value: "value1" effect: "NoSchedule" - key: "key2" value: "value2" effect: "NoExecute"
- Toleration 설정 (파드에 적용)이 Toleration을 설정한 파드는 key=value:NoSchedule Taint가 있는 노드에 스케줄링될 수 있습니다.
-
yaml
apiVersion: v1
kind: Pod
metadata:
name: toleration-pod
spec:
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"
'DevOps' 카테고리의 다른 글
CKA 예제 리마인더 - 10. DaemonSets (0) | 2024.10.30 |
---|---|
CKA 예제 리마인더 - 9. Resource Limits (0) | 2024.10.30 |
Kubernetes - Node Affinity.Operator (0) | 2024.10.29 |
CKA 예제 리마인더 - 8. Node Affinity (0) | 2024.10.29 |
CKA 예제 리마인더 - 7. Taints and Tolerations (0) | 2024.10.28 |