Taints and Toleration
Taints는 벌레 퇴치제, Toleration은 내성을 말한다.
Kubernetes에서 이 두 개념은 특정 파드가 어떤 노드에 배치되지 않도록 하거나 특정한 파드만 배치될 수 있도록 노드의 수준을 제한하는 설정에 사용되는 개념이다.
Taint는 노드에 설정되며 Toleration은 파드에 설정된다.
동작 예시
node1, node2, node3 세 노드가 존재하고
pod1,pod2,pod3,pod4 네 pod이 존재한다고 가정하자
node1에 `taint: app=blue:NoSchedule` 로 설정하고 pod에 아무런 설정도 하지 않는 경우 어떤 pod도 node1에 배치될 수 없다.
tolerations:
- key: "app"
operator: "Equal"
value: "blue"
effect: "NoSchedule"
위와 같은 toleration 설정을 pod4에 추가하면 pod4는 node1에 배치될 수 있다.
taint 적용은 다음과 같은 방식으로 진행할 수 있다.
kubectl taint nodes node1 app=blue:NoSchedule
여기서 `app=blue`는 taint의 key=value 페어를 의미하며, `NoSchedule`은 해당 taint를 toleration 하지 않으면 파드 스케줄링이 불가능하다는 것을 의미한다.
Toleration은 Pod 정의에서 다음과 같이 작성한다.
spec:
tolerations:
- key: "app"
operator: "Equal"
value: "blue"
effect: "NoSchedule"
Taint Effect의 종류
1. NoSchedule
toleration이 없으면 스케줄링이 불가능하다
2. PreferNoSchedule
가능하면 스케줄링하지 않는다
3. NoExecute
toleration이 없으면 기존의 파드도 제거된다.
적용 예시
Kubernetes에서 Pod를 아무리 생성하여도 Master Node에는 배치되지 않는데, 이는 쿠버네티스가 마스터노드에 기본적으로 다음과 같은 Taint를 자동으로 설정하기 때문이다.
node-role.kubernetes.io/master:NoSchedule
마스터는 관리 작업 전용으로, 워크로드 파드가 스케줄링되지 않도록 차단하기위해 기본적으로 위와같은 설정을 적용한다.
'CKA' 카테고리의 다른 글
(TIL) Kubernetes Taints & Toleration 와 Node Affinity (0) | 2025.03.25 |
---|---|
(TIL)Kubernetes의 Node Selector와 Node Affinity (0) | 2025.03.25 |
(TIL) Kubernetes Labels & Selectors (0) | 2025.03.23 |
(TIL) Kubernetes Manual Scheduling (0) | 2025.03.23 |
(TIL) kubectl apply의 내부 동작 (0) | 2025.03.23 |