Kubernetes

Kubernetes Control-Plane Node에 Taint 해제

김 정출 2024. 7. 8. 14:54

Kubernetes는 Pod Spec의 Node Selector를 통해 특정 Node 로 Schedule 수행 가능하며 TaintTolerate 를 통해 특정 노드에 스케줄링 할 수 있습니다.

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