Taints
Node에 Pod가 배치될 수 없도록 Node에 설정한다.
Tolerations
Pod에 설정하며, 일치하는 Taint가 있는 Node에 스케쥴링될 수 있도록 한다.
Taints와 Tolerations은 함께 동작하면서 포드가 적절하지 않은 노드에 배치되지 않도록 한다. 포드가 특정 노드에 배치되도록 설정하는 것이 아니다.
설정 방법
- Taint
taint-effect는 스케쥴링된 포드에 동일한 toleration이 없는 경우 포드 처리 방식이다. taint-effect에는 아래의 세 개 값을 설정할 수 있다.kubectl taint nodes <NODE_NAME> <KEY=VALUE:taint-effect> # 예시 kubectl taint nodes node1 app=blue:NoSchedule
NoSchedule 포드를 노드에 배치하지 않음 PreferNoSchedule 포드를 노드에 배치시키지 않으나, 그것을 항상 보장하지는 않음 NoExecute 포드가 노드에 배치되지 않거나, 제거한다. - Toleration
포드 정의 파일에서 toleration 항목 추가하여 설정할 수 있다. 모든 값은 큰따옴표로 묶여야 한다.
apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: nginx image: nginx tolerations: - key: "app" operator: "Equal" value: "blue" effect: "NoSchedule"
+
마스터 노드의 경우,
쿠버네티스가 클러스터를 처음 설정할 때 포드가 스케쥴링되지 않도록 자동으로 taint를 설정한다. 그 내용은 describe 명령으로 확인할 수 있다.
kubectl describe node <NODE_NAME> | grep Taints