Skip to main content

k8s에서 노드 taint설정

사전정보

  1. 별도 설정이 없는 경우 배포하는 pod은 전체 worker노드를 대상으로 배포하는데
  2. 특정 pod을 특정노드에 배포해야 하는 경우 node selector나 taint설정을 진행하면 가능하다.

taint 설정방법

  1. taint 설정정보
    $ kubectl taint nodes worker1 key1=nginx:NoSchedule
    node/worker1 tainted

  2. taint 설정정보 확인
    $ kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints --no-headers
    master1   [map[effect:NoSchedule key:node-role.kubernetes.io/master]]
    master2   [map[effect:NoSchedule key:node-role.kubernetes.io/master]]
    master3   [map[effect:NoSchedule key:node-role.kubernetes.io/master]]
    worker1   [map[effect:NoSchedule key:key1 value:nginx]]
    worker2   <none>

  3. Taint정보 삭제
    $ kubectl taint nodes worker1 key1=nginx:NoSchedule-
    node/worker1 untainted

  4. Taint정보 삭제 확인
    $ kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints --no-headers
    master1   [map[effect:NoSchedule key:node-role.kubernetes.io/master]]
    master2   [map[effect:NoSchedule key:node-role.kubernetes.io/master]]
    master3   [map[effect:NoSchedule key:node-role.kubernetes.io/master]]
    worker1   <none>
    worker2   <none>