본문 바로가기
INFRA/Operation

쿠버네티스 이론 STEP13 Scheduling 3 Cordon & Uncordon & Drain

by BTC_주먹쥐고 일어서 2022. 10. 5.

pod- scheduling 정책을 변경할 수 있는 명령어 

kubectl cordon, drain, taint

 

 

cordon

kubectl cordon <node name>

특정 노드를 선택하여 스케줄 대상에서 제외시킴.

현재 노드에 배포된 pod는 그대로 유지하면서 추가적인 pod의 배포를 제한하는 명령어.

cordon명령어를 실행하면 선택한 특정 노드가 SchedulingDisabled 상태가 됨

 

 

uncordon

kubectl uncordon <node name>

특정 노드를  SchedulingDisabled 상태를 제거하고 노드에 pod가 정상적으로 스케줄링 될 수 있도록 복구하는 명령어.

 

 

drain

kubectl drain <node name>

선택한 특정 노드가 SchedulingDisabled 상태가 될 뿐만 아니라 노드에 남아있는 pod를 모두 삭제하고 재생성 함.

  • kubectl drain 명령어는 새로운 Pod을 배포할 수 있는 추가적인 노드가 있는 경우에 유효함
  • Replicaset, DaemonSet, StatefulSet 등에 의해 관리되고 있는 Pod만 새로운 노드에 스케쥴링됨.
    따라서, Standalone Pod은 다른 노드에 배포되지 않고 그냥 사라짐.
  • drain 과정에서 Daemonset을 무시하려면 --ignore-daemonsets 옵션을 추가하면 됨.
  • kubelet에 의해 자체적으로 관리되고 있는 Static Pod은 다른 노드에 scheduling 되지 않고 계속 남아있음.

댓글