
pod와 node의 관계에 대해pod로 스케줄링할 수 있는지 제한을 설정하기 위해 사용$ kubectl taint nodes <node-name> <key=value>:<taint-effect>
# taint-effect = NoSchedule | PreferNoSchedule | NoExecute
$ kubectl taint nodes node1 app=blue:NoSchedule
# pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: nginx-container
image: nginx
tolerations:
- key: app
operator: “Equal”
value: blue
effect: NoSchedule
kubectl taint node node01 app=blue:NoSchedule 명령어에서 key, operator, value, NoSchedule 필드를 채워준다.특정 노드에 파드를 배치하는것이 아닌 특정 노드에 수용할 수 있는 파드를 명시해 놓은 개념
만약 특정 노드에 한 포드를 제한하는 게 요구 사항이라면 노드 선호도라는 개념을 통해 구현
추가로 스케줄러는 마스터노드에는 어떠한 파드도 스케줄링 하지 않음!
쿠버네티스 클러스터가 처음 설정되면 마스터노드에 taint 설정이 기본으로 되어 이 노드에 pod가 지정 되는것을 막는다
필요하면 이 동작을 수정할 수 있지만 마스터 노드에 응용프로그램 작업을 배포하지 않는것이 best practice
kubectl describe node kubemaster | grep Taint