kubectl cordon [옵션]
- 노드를 스케줄 불가(unschedulable) 상태로 만드는 명령어
- 새 Pod가 해당 노드에 더 이상 배치되지 않도록 하는
- 사용처
- 노드 점검, 패치, 커널 업데이트 등 유지보수 작업 시
- 노드 Drain 작업 전
- 노드에 문제가 발생하여 디버깅 시
- cordon 과 drain 의 차이
- cordon은 새 Pod가 그 노드에 배치되지 않도록 막음
- drain은 기존 Pod를 다른 노드로 강제 옮김
- 주로 사용되는 옵션
- --dry-run
- none
- 실제로 적용 시
- client
- 클라이언트에서 보낼 JSON 만 출력
- 실제로 요청은 하지 않음
- server
- 서버에 요청은 보내지만 리소스는 저장 안함
- none
- --selector
- --dry-run
kubectl uncordon [옵션]
- cordon이나 drain으로 스케줄링 불가로 만들었던 노드를 다시 스케줄링 가능으로 변경 시 사용하는 명령
- kubectl uncordon 노드명 [옵션]
- 주로 사용되는 옵션
- --dry-run
- --selector
kubectl drain <노드명> [옵션]
- 노드를 비우고 유지보수 준비상태로 만들기
=> 기존에 있던 Pod들을 다른 노드에 옮김 - 작업순서
- 노드를 자동으로 unschedulable 상태로 변경(cordon)
- Pod를 하나씩 축출(Evict) 또는 삭제
- 축출 시, PDB(PodDisruptionBudget) 지키면서 종료
- 축출이나 삭제를 하지않는 경우
- mirror Pods
- kubelet이 만든 static Pod는 삭제 불가
- DaemonSet의 Pod의 경우 Drain이 중단
- 강제로 하려면 --ingnore-daemonsets 필요 - 고아 파드의 경우 --force 가 없다면 Drain 중단
- emptyDir Pod 를 제거 시 --delete-emptydir-data 가 없다면 Drain 중단
- mirror Pods
- 옵션의 종류
- --chunk-size
- 청크 사이즈 설정
- --delete-emptydir-data
- false 시, emptydir 발견 시, Drain 중단 true면 삭제
- --disabled-eviction
- 축출을 사용할 수 있어도 Delete 로 Pod 삭제
- PDB 무시 됨
- --dry-run
- --grace-period
- --force
- --ignore-daemonsets
- --pod-selector
- 특정 Pod만 골라서 Drain 시, 사용
- -selector
- --skip-wait-for-delete-timeout
- 삭제가 완료되지 않은 파드를 일정 시간 기다렸다가 다음으로 넘길 때 사용
- --timeout
- Drain 의 전체 실행 타임아웃
- --chunk-size
kubectl taint node <노드 명>
- 노드에 조건을 추가/수정/삭제 하는 명령
- taint는 노드에만 적용이 가능
- taint의 의미는 노드가 특정 Pod를 거부하도록 하는 규칙
- Pod느 특정 toleration(관용)을 가져서 특정 taint를 허용 가능
- 키값:이펙트 구성을 가짐
- 키는 taint 이름을 의미
- 값은 선택적이므로 없어도 됨
- 이펙트는 파드에 어떤 영향을 줄지 지정
- taint 삭제 시
- ~~~ 키에 '-' 붙임
- ~~~ 키=값에 '-' 붙임
- ~~~ 키=값:이펙트에 '-' 붙임
- 키 규칙
- 영문이나 숫자로 시작
- 영문, 숫자, '-', '_', '.' 가능
- 최대 253자
- DNS prefix + '/' + 키 형태도 가능
- 값 규칙
- 없어도 됨
- 영문이나 숫자로 시작
- 영문, 숫자, '-', '_', '.' 가능
- 최대 63자
- 이펙트의 종류
- NoSchedule
- toleration 없는 Pod는 이 노드에 새로 스케줄되지 않음
- PreferNoSchedule
- 가능하면 오지 않을 뿐, 강제는 아님
- 소프트 룰
- NoExcute
- toleration이 없는 Pod는 노드에서 즉시 퇴출당하고 새로 스케줄 되지도 않음
- NoSchedule
- kubectl taint node 노드명 [옵션]
- 옵션의 종류
- --all
- --dry-run
- --field-manager
- 서버사이드 어플라이에서 필드 소유자 이름 명시 시
- -o
- --selector
- --show-managed-field
- --template
- go 템플릿 사용 시 템플릿 문자열 또는 파일 지정
- --validate
- strict
- 기본
- 엄격히
- warn
- 경고만
- ignore
- 검증 없음
- strict
'Cloud Native > K8s' 카테고리의 다른 글
| k8s 실전: 메타데이터와 구성 및 레이블 관리 (0) | 2026.02.24 |
|---|---|
| k8s 실전: 클러스터 리소스 및 헬스 체크 (0) | 2026.02.24 |
| k8s 실전: 파일 및 네트워크 조작과 운영 (0) | 2026.02.24 |
| k8s 실전: 트러블슈팅 실전 (0) | 2026.02.24 |
| k8s 실전: 앱 배포 및 스케일링 실전 (0) | 2026.02.24 |