CompositePodGroup API
CompositePodGroup API (compositepodgroup-api)
기능 상태: Kubernetes v1.37부터 Alpha, 기본적으로 비활성화됨
이 기능에 대한 자세한 정보
이 기능을 쓰려면 사용자(또는 클러스터 관리자)가 클러스터의 모든 관련 컴포넌트에서 CompositePodGroup 기능 게이트(feature gate)를 활성화해야 해요. 자세한 내용은 Enable Or Disable Feature Gates 문서를 참고하세요.
CompositePodGroup은 다중 레벨 워크로드 계층구조에서 리프(leaf)가 아닌 노드를 나타내는 런타임 객체예요. Workload API가 정적 스케줄링 정책 템플릿을 정의하는 반면, CompositePodGroup과 PodGroup 객체는 특정 워크로드 인스턴스에 대한 정책과 계층구조 참조를 실어 나르는 런타임 대응물이에요.
CompositePodGroup이란?
CompositePodGroup API 리소스는 scheduling.k8s.io/v1alpha3 API 그룹의 일부예요. 이 API를 쓰려면 먼저 클러스터에서 해당 API 그룹과 CompositePodGroup 기능 게이트를 모두 활성화해야 해요.
CompositePodGroup은 하위 그룹(CompositePodGroup 또는 PodGroup 객체가 될 수 있어요)의 묶음을 나타내요. 하위 그룹 전체에 공통으로 적용되는 스케줄링 정책, 디스럽션 모드, 우선순위 설정, 그리고 선택적인 토폴로지 제약을 담죠.
API 구조
CompositePodGroup은 하위 그룹에 대한 원하는 스케줄링 동작을 정의하는 spec과 status 서브리소스로 구성돼요.
스케줄링 정책
각 CompositePodGroup은 spec.schedulingPolicy에 스케줄링 정책(basic 또는 gang)을 담아요. 워크로드 컨트롤러가 CompositePodGroup을 만들 때, 이 정책은 생성 시점에 Workload의 CompositePodGroupTemplate에서 복사돼요.
CompositePodGroup에 gang 정책을 쓰면 minGroupCount 필드가 동시에 스케줄링 가능해야 하는 하위 그룹의 최소 개수를 지정해요.
spec:
schedulingPolicy:
gang:
minGroupCount: 2
상위 그룹 참조
루트가 아닌 CompositePodGroup 리소스는 spec.parentCompositePodGroupName으로 상위 그룹을 지정해요. 루트 CompositePodGroup 객체는 이 필드를 비워 둬요.
spec:
parentCompositePodGroupName: root-group-0
워크로드 참조
spec.workloadRef 필드는 CompositePodGroup을 그것이 파생된 Workload 객체 안의 CompositePodGroupTemplate으로 다시 연결해줘요.
spec:
workloadRef:
workloadName: hierarchical-workload
templateName: replica-group
상태(status)
CompositePodGroup API 스키마에는 status 서브리소스가 포함돼요. 알파 릴리스에서는 status 필드가 API 타입에 존재하지만, kube-scheduler는 CompositePodGroup 객체에 대한 상태 조건을 업데이트하거나 채우지 않아요. 복합 그룹의 상태 추적은 향후 릴리스에서 구현될 예정이에요.
CompositePodGroup 만들기
워크로드 컨트롤러는 런타임에 Workload 템플릿에서 CompositePodGroup 객체를 자동으로 만들어요. 다음 매니페스트는 gang 스케줄링 정책을 요구하는 루트 CompositePodGroup을 만드는 예시예요.