Certified Kubernetes Administration - 22
2024-06-22
- Kubernetes
- Cloud
Kubernetes의 Taints와 Tolerations
-
Taints와 Tolerations 개념:
-
Taints: 노드에 설정하여 특정 포드가 해당 노드에 스케줄링되지 않도록 함.
-
Tolerations: 포드에 설정하여 특정 taint를 견디게 함.
-
-
비유 설명:
-
사람(노드)에 방충제(taint)를 뿌려 특정 벌레(포드)가 접근하지 못하게 함.
-
일부 벌레는 방충제를 견딜 수 있어 접근 가능.
-
-
Kubernetes에서의 사용 예:
-
노드 1에 전용 리소스가 있는 경우, 해당 노드에 특정 포드만 배치.
-
노드에 taint를 설정하여 기본적으로 모든 포드를 배치하지 않도록 함.
-
특정 포드(D)가 이 taint를 견디도록 toleration 설정.
-
명령어 사용:
-
kubectl taint nodes
명령어로 노드에 taint 설정. -
예시:
kubectl taint nodes node1 app=blue:NoSchedule
. -
taint 효과:
-
NoSchedule: 포드가 노드에 스케줄링되지 않음.
-
PreferNoSchedule: 가능하면 포드를 노드에 스케줄링하지 않으려 함.
-
NoExecute: 새로운 포드는 스케줄링되지 않으며, 기존 포드는 퇴출됨.
-
-
예시:
-
노드 1에
app=blue:NoSchedule
taint 설정. -
포드 D에 toleration 설정:
app=blue, effect=NoSchedule
. -
스케줄러가 포드 A, B, C를 노드 1에 배치하려 하지만, taint로 인해 다른 노드에 배치됨.
-
포드 D는 toleration을 가지고 있어 노드 1에 배치됨.
-
-
NoExecute 예시:
-
노드 1에
app=blue:NoExecute
taint 설정. -
포드 C는 노드 1에서 퇴출되고, 포드 D는 toleration으로 인해 계속 실행됨.
-
-
중요 사항:
-
Taints와 tolerations는 노드가 특정 포드를 수락하도록 제한할 뿐, 특정 노드에 포드를 배치하도록 지시하지 않음.
-
특정 노드에 포드를 제한적으로 배치하려면 노드 어피니티(node affinity) 사용.
-
-
마스터 노드:
-
클러스터 설정 시, 마스터 노드에 기본적으로 taint가 설정되어 포드가 스케줄링되지 않음.
-
kubectl describe node
명령어로 마스터 노드의 taint 확인 가능.
-
Certified ...
Certified ...