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 되지 않고 계속 남아있음.
'INFRA > Operation' 카테고리의 다른 글
Terraform 리소스의 개념 이해 - AWS 5편 (0) | 2022.10.17 |
---|---|
쿠버네티스 이론 STEP14 Resource Management (0) | 2022.10.12 |
Terraform 리소스에 대한 이해 - AWS 2편 (0) | 2022.10.04 |
Terraform 리소스에 대한 이해 - AWS 3편 (0) | 2022.10.04 |
쿠버네티스 이론STEP12 Scheduling 2 Affinity & AntiAffinity (0) | 2022.10.04 |
댓글