스케줄러가 파드를 특정 노드에 배치시키지 않도록 설정하는 것 ↔ node affinity
노드에 설정함
노드에 살충제처럼 뿌려지면 내성을 가진 파드를 제외하고는 접근이 불가능해짐
파드에 설정함
노드에 뿌려진 taint라는 살충제에 대한 내성을 가져서 무시하게 됨 = 평소처럼 스케줄링 수행
taint살충제를 이겨내지 못하는 나약한 파드를 어떻게 처리할지에 대한 정책
kubectl taint nodes
명령어 실행
kubectl taint nodes [node이름] [key]=[value]:[effect]
# effect => NoSchedule | PreferNoSchedule | NoExecute
예시) kubectl taint node node1 app=blue:NoSchedule
kubectl taint nodes [node이름] [key]=[value]:[effect]-
# 예시
kubectl taint nodes node1 key1=value1:NoSchedule-
yaml파일에 spec.tolerations
작성
예시) kubectl taint node node1 app=blue:NoSchedule
을 견딜 수 있는 파드 생성
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: nginx-container
image: nginx
tolerations:
- key: "app"
operator: "Equal"
value: "blue"
effect: "NoSchedule"
spec.tolerations은 반드시 큰따옴표(” “)로 감싸줌
spec.tolerations.operator
“Equal"
, “Exists”
2가지 중 택1 가능Equal
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"
Exists
value
지정하지 않아야함tolerations:
- key: "key1"
operator: "Exists"
effect: "NoSchedule"