Kubernetes
Kubernetes Control-Plane Node에 Taint 해제
김 정출
2024. 7. 8. 14:54
Kubernetes는 Pod Spec의 Node Selector
를 통해 특정 Node
로 Schedule 수행 가능하며 Taint
와 Tolerate
를 통해 특정 노드에 스케줄링 할 수 있습니다.
kubectdl label nodes worker computetype=gpu
apiVersion: apps/v1
kind: Deployment
...
spec:
replicas: 1
selector:
...
spec:
containers:
- name: inference
...
nodeSelector:
computetype=gpu
Toleration
Taint
를 무시할 수 있습니다.
tolerations:
- key: "computetype"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
Taint
Taint
를 설정한 노드에는 Pod들을 스케줄링 하지 않습니다.
Taint에는 key, value, effect가 있고 =: 표시
kubectl taint node {nodename} {key}={value}:{effect}
Taint effect
Schedule 동작 방식 설정
NoSchedule
: Taint를 Tolerate 허용하지 않을 경우 Pod가 스케줄링 되지 않습니다.PreferNoSchedule
: Schedule을 피하지만, 다른 곳에 불가한 경우 해당 Node에서 스케줄링합니다.NoExecute
: Scheduling 이 Node 뿐만 아니라 실행 중인 Pod도 제거됩니다.
Master 노드의 Taint를 살펴보겠습니다.
kubectl describe node master | grep Taints
---
Taints: node-role.kubernetes.io/control-plane:NoSchedule
Master 노드의 Taint 해제합니다.
kubectl taint nodes master node-role.kubernetes.io=control-plane:NoSchedule-
Master 노드의 Taint 재설정합니다.
kubectl taint nodes master node-role.kubernetes.io=control-plane:NoSchedule
Reference