PodGroup 스케줄링 정책

PodGroup 스케줄링 정책 (PodGroup Scheduling Policies)

모든 PodGroupspec.schedulingPolicy 필드에 스케줄링 정책을 선언해야 해요. 이 정책은 스케줄러가 그룹의 파드 집합을 어떻게 취급하는지 결정합니다.

출처: 문서

본문

정책 유형

schedulingPolicy 필드는 basicgang 두 가지 정책 유형을 지원해요. 정확히 하나를 지정해야 합니다.

Basic 정책

basic 정책은 스케줄러가 모든 파드를 최선 노력(best-effort) 기준으로 평가하게 지시해요. gang 정책과 달리 basic 정책을 사용하는 PodGroup은 현재 몇 개의 파드가 스케줄 가능한지와 무관하게 실현 가능한 것으로 간주됩니다.

basic 정책을 사용하는 주된 이유는 더 나은 관측성과 관리를 위해 파드를 그룹으로 조직하면서, 단일 원자적 PodGroup 스케줄링 사이클 안에서 함께 평가하도록 하는 것입니다.

이 정책은 동시 시작이 필요하지 않지만 논리적으로 함께 속하는 그룹에 적합하고, "전부 또는 전무" 배치를 의미하지 않는 그룹 레벨 제약의 길을 여는 데 적합해요.

schedulingPolicy:
  basic: {}

Gang 정책

gang 정책은 "전부 또는 전무" 스케줄링을 강제해요. 부분 시작이 교착 상태나 리소스 낭비를 초래하는 긴밀하게 결합된 워크로드에 필수적입니다.

이는 Jobs 또는 모든 워커가 진행을 위해 동시에 실행되어야 하는 다른 배치 프로세스에 사용할 수 있어요.

gang 정책은 그룹이 실현 가능하려면 동시에 스케줄 가능해야 하는 최소 파드 수인 minCount 필드를 요구합니다:

schedulingPolicy:
  gang:
    # The number of Pods that must be schedulable simultaneously
    # for the group to be admitted.
    minCount: 4

PodGroupTemplates를 통한 정책 설정

Workload API를 사용할 때 PodGroupTemplates 안에 스케줄링 정책을 정의해요. 워크로드 컨트롤러는 템플릿의 정책을 만드는 각 PodGroup에 복사해 PodGroup을 자체 완결로 만듭니다. Workload 템플릿에 대한 변경은 새로 생성된 PodGroup에만 영향을 주고 기존 PodGroup에는 영향을 주지 않습니다.

독립형 PodGroup(Workload 없이 생성)의 경우 PodGroup 자체에 직접 spec.schedulingPolicy를 설정합니다.

CompositePodGroup의 정책

CompositePodGroup 피처 게이트와 scheduling.k8s.io/v1alpha3 API가 활성화되면, Workload의 CompositePodGroupTemplatesCompositePodGroup 오브젝트도 스케줄링 정책을 선언해요.

PodGroup의 스케줄링 정책이 개별 파드의 집합을 관리하는 반면, CompositePodGroup 스케줄링 정책은 직접 자식 그룹(둘 다 CompositePodGroupPodGroup 오브젝트일 수 있음)을 관리합니다.

CompositePodGroup의 정책 유형

PodGroup과 비슷하게 CompositePodGroupspec.schedulingPolicy 필드는 두 가지 유형을 지원해요:

  • basic: CompositePodGroup 안의 자식 그룹이 독립적으로 평가되고 허용된다.
  • gang: 자식 그룹 전반에 걸친 다중 레벨 전부 또는 전무 스케줄링을 강제한다. 최소 minGroupCount개의 자식 그룹이 동시에 스케줄될 수 있을 때만 CompositePodGroup이 스케줄 가능하다.
schedulingPolicy:
  gang:
    # The minimum number of child groups that must be schedulable
    # simultaneously for this composite group to be admitted.
    minGroupCount: 2

템플릿을 통한 복합 정책 설정

Workload API를 사용할 때 CompositePodGroup의 스케줄링 정책은 CompositePodGroupTemplates 안에 정의돼요. 워크로드 컨트롤러는 템플릿에 지정된 schedulingPolicy를 런타임에 생성된 각 CompositePodGroup에 복사합니다. minCount가 업데이트될 수 있는 리프 PodGroupTemplates와 달리 CompositePodGroupTemplateminGroupCount는 불변입니다.

더 알아보기 (Learn more)