메인터넌스와 노드 정지
스케줄링 대상에서 제외와 북귀(cordon/uncordon)
- 쿠버네티스 노드는 두 상태를 가짐
- SchedulingDisabled: 노드가 스케줄링 대상에서 제외 (파드 신규 생성 x), 이미 실행 중인 파드에는 영향 없음
- SchedulingEnabled: 기본 상태
|
|
노드 배출 처리로 인한 파드 축출(drain)
- 실행 중인 파드를 축출해야 할 경우 사용
- SchedulingDisabled 상태로 바꾼 후 각 파드에 SIGTERM 신호를 보내므로 cordon을 실행할 필요 없음
|
|
- drain시 다음과 같은 케이스에서는 에러가 발생
- 디플로이먼트등으로 관리되지 않는 파드 삭제(단일 파드는 파드 삭제 후 재성성이 불가하기 때문)
- –force옵션으로 해결 가능
- 로컬 스토리지 사용하는 파드 삭제(로컬 스토리지 데이터가 삭제되므로)
- –delete-local-data로 해결 가능
- 데몬셋이 관리하는 파드 삭제
- –ignore-daemonset 옵션을 사용해 해결 가능
- 디플로이먼트등으로 관리되지 않는 파드 삭제(단일 파드는 파드 삭제 후 재성성이 불가하기 때문)
PodDisruptionBudget(PDB)을 사용한 안전한 축출
- 파드 축출 시 특정 디플로이먼트하에 있는 레플리카가 동시에 정지되면 다운타임이 발생
- 여러 노드에서 동시 배출 처리를 한 경우 해당 현상이 발생할 확률 증가
- 노드가 배출 처리를 할 때 파드를 정지할 수 있는 최대 수를 제한하는 리소스
- 최소 기동 개수와 최대 정지 개수를 보면서 노드상의 파드 축출
- HPA에 의해 파드 수가 변화하는 환경에서는 백분율로 지정하는 것이 좋음
- 동시에 여러 노드를 배출 처리하는 경우에도 효과적
- minAvailable, minUnavailable은 둘 중 하나만 설정 가능
- 파드에 여러 PDB가 연결되면 축출 실패