PodGroup 스케줄링 정책
PodGroup 스케줄링 정책 (policies)
기능 상태: Kubernetes v1.35 [alpha] (기본적으로 비활성화됨)
모든 PodGroup은 spec.schedulingPolicy 필드에 스케줄링 정책을 선언해야 해요. 이 정책은 스케줄러가 그룹의 파드 집합을 어떻게 다루는지 결정해요.
정책 유형
schedulingPolicy 필드는 basic과 gang 두 가지 정책 유형을 지원해요. 반드시 정확히 하나를 지정해야 해요.
Basic 정책
basic 정책은 스케줄러가 모든 파드를 최선 노력(best-effort) 기준으로 평가하라고 지시해요. gang 정책과 달리 basic 정책을 쓰는 PodGroup은 자기의 파드 중 현재 얼마나 많은 파드가 스케줄링 가능한지와 무관하게 실행 가능한 것으로 간주돼요.
basic 정책을 쓰는 주된 이유는 파드를 그룹으로 묶어 관찰성과 관리를 개선하면서도, 단일 원자적 PodGroup 스케줄링 주기 안에서 함께 평가하기 위해서예요. 이 정책은 동시 시작이 필요하지 않지만 논리적으로 함께 속하는 그룹에 적합하며, '전부 아니면 전무' 배치를 의미하지 않는 그룹 수준 제약의 길을 열어줘요.
schedulingPolicy:
basic: {}
Gang 정책
gang 정책은 '전부 아니면 전무(all-or-nothing)' 스케줄링을 강제해요. 부분 시작이 교착 상태나 리소스 낭비를 초래하는 밀접하게 결합된 워크로드에 필수적이에요. 진행되려면 모든 워커가 동시에 실행돼야 하는 Job이나 다른 배치 프로세스에 사용할 수 있어요.
gang 정책은 minCount 필드를 요구해요. 이것은 그룹이 실행 가능하기 위해 동시에 스케줄링 가능해야 하는 파드의 최소 개수예요.
schedulingPolicy:
gang:
# 그룹이 인정(admit)되기 위해 동시에
# 스케줄링 가능해야 하는 파드 수.
minCount: 4
PodGroupTemplates로 정책 설정하기
Workload API를 사용할 때 PodGroupTemplates 안에 스케줄링 정책을 정의해요. 워크로드 컨트롤러는 템플릿의 정책을 만들어지는 각 PodGroup에 복사해서, PodGroup이 자족적(self-contained)이 되게 해요. Workload의 템플릿 변경은 새로 만들어지는 PodGroup에만 영향을 주고, 기존 PodGroup에는 영향을 주지 않아요.
독립형 PodGroup(Workload 없이 만들어진)의 경우 spec.schedulingPolicy를 PodGroup 자체에 직접 설정해요.
다음 내용
- PodGroup API에서 정책이 런타임에 어떻게 전달되는지 확인하세요.
- PodGroupTemplates를 정의하는 Workload API에 대해 알아보세요.
- PodGroup 스케줄링을 읽어보세요.
- gang 스케줄링 알고리즘을 읽어보세요.