kubectl drain, cordon, uncordon은 쿠버네티스 노드의 상태를 조정하고 관리하기 위한 명령어입니다. 주로 노드에서 유지보수 작업이나 업그레이드가 필요할 때 사용되며, 파드가 안전하게 옮겨지거나 배치되지 않도록 도와줍니다.
1. kubectl cordon
- 기능: 노드를 스케줄링 불가 상태로 만듭니다. 이 상태에서는 새로운 파드가 해당 노드에 스케줄링되지 않습니다.
- 용도: 유지보수가 필요하거나 더 이상 파드를 배포하지 않을 노드를 잠시 제외할 때 사용합니다.
- 예시:
kubectl cordon <node-name>
2. kubectl uncordon
- 기능: cordon 상태에서 해제하여 노드를 스케줄링 가능 상태로 만듭니다.
- 용도: 유지보수가 끝나거나 다시 파드를 배포할 준비가 된 노드를 활성화할 때 사용합니다.
- 예시:
kubectl uncordon <node-name>
3. kubectl drain
- 기능: 노드에서 실행 중인 모든 파드를 안전하게 퇴거(evict) 시키고, 노드를 스케줄링 불가 상태로 만듭니다.
- 용도: 노드가 다운되거나 제거될 예정일 때 파드를 안전하게 옮기기 위해 사용합니다.
- drain 명령은 디플로이먼트, 레플리카셋, 데몬셋 등에서 관리되는 파드를 다른 노드로 옮기고, 일반 파드나 상태가 없는 파드의 경우 삭제할 수 있습니다.
- 예시:
- --ignore-daemonsets: 데몬셋으로 생성된 파드를 무시합니다.
- --delete-emptydir-data: emptyDir 볼륨을 사용하는 파드의 데이터를 삭제합니다.
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
요약
명령어기능용도
cordon | 노드를 스케줄링 불가 상태로 변경 | 파드를 새로 스케줄링하지 않도록 설정 |
uncordon | 노드를 스케줄링 가능 상태로 변경 | 노드에 다시 파드를 스케줄링할 때 |
drain | 파드를 안전하게 퇴거하고 스케줄링 불가 설정 | 유지보수나 제거 전 파드 이동 및 정리 |
이 명령어들은 노드의 관리와 유지보수에 있어 필수적인 도구들로, 클러스터의 안정성과 가용성을 유지하는 데 도움을 줍니다.
'DevOps' 카테고리의 다른 글
Kubernetes - upgrade 간략한 요약 (0) | 2024.11.03 |
---|---|
Kubernetes - upgrade (0) | 2024.11.03 |
CKA 예제 리마인더 - 18. OS Upgrades (0) | 2024.11.03 |
CKA 예제 리마인더 - 17. Multi Container PODs (1) | 2024.11.02 |
CKA 예제 리마인더 - 16. Secrets (1) | 2024.11.02 |