시작하기 전에
예산을 설정하기 전에 다음 사전 요구 사항을 완료하세요.- 클러스터에서 노드 할당 예산 지원과 필요한 권한이 활성화되어 있는지 CoreWeave에 확인하세요.
- 필요한 managed runner 업데이트를 적용한 다음, 러너가 준비 상태가 되어 연결될 때까지 기다리세요.
- CoreWeave Intelligent CLI v1.44.0 이상을 사용하고, Sandbox Admin 권한으로 올바른 조직에 인증하세요.
jq를 설치하세요.- 노드 레이블과 게시된 예산을 검사할 수 있는 Kubernetes 액세스 권한이 필요합니다. 예산을 줄이려면 영향을 받는 노드를 코든하고 코든을 해제할 수 있는 권한도 있어야 합니다.
- 기본 Kubernetes 스케줄러를 사용하거나, 사용 중인 스케줄러가 예산 확장 리소스를 강제 적용하는지 확인하세요.
- 샌드박스가 RuntimeClass를 선택하는 경우, 해당 RuntimeClass에 비어 있지 않은
overhead.podFixed맵이 선언되어 있는지 클러스터 Admin에게 확인하세요. 오버헤드가 없는 런타임도 0 값을 명시적으로 선언해야 합니다. RuntimeClass를 사용하지 않는 샌드박스에는 이 설정이 필요하지 않습니다.
러너 및 노드 레이블 파악
업데이트할 러너와 예산 선택자에 사용할 노드 레이블을 파악하세요. 사용 가능한 러너 목록을 조회하세요:[CLUSTER-ID]를 CoreWeave Kubernetes Service(CKS) 클러스터 ID로 바꾸세요:
[RUNNER-ID]를 러너 ID로, [KUBE-CONTEXT]를 해당 러너의 Kubernetes 컨텍스트로 바꾸세요:
클러스터에 있는 레이블 키와 값을 사용하세요.
예산 선택자는 Kubernetes 노드를 선택합니다. API 러너 그룹을 선택하거나 샌드박스 배치 제약 조건, 테인트, 톨러레이션 또는 RuntimeClasses를 재정의하지는 않습니다.
예산 설정 생성
다음 예시 중 하나를node-budget.json 파일로 저장하세요.
"mode": "prepare"로 시작하세요. 준비 단계에서는 예산 리소스를 게시합니다. 강제 적용은 이후 단계에서 활성화됩니다.
모든 노드에서 CPU 및 메모리의 95%
빈 선택자는 모든 노드와 일치합니다.0부터 100까지의 정수여야 합니다. 값이 0이면 샌드박스에 할당할 수 있는 리소스가 없음을 의미합니다.
선택한 Node Pool에만 50% 적용
두 Node Pool 중 하나에 속한 노드를 선택합니다.[BATCH-POOL]과 [INTERACTIVE-POOL]을 해당 Node Pool의 레이블 값으로 바꾸세요:
managedNodes.selector에 포함되지 않는 노드에는 샌드박스 예산이 0으로 할당됩니다. 강제 적용이 활성화되면 예산 토큰이 필요한 샌드박스는 해당 노드를 사용할 수 없습니다.
선택 항목을 미리 확인하세요:
Node Pool과 맞춤형 그룹에 서로 다른 예산 적용
이 설정은 다음 예산을 제공합니다:- 기본적으로 CPU 및 메모리의 95%.
[CPU-POOL]Node Pool의 노드에 CPU 및 메모리의 50%.[BUDGET-GROUP-LABEL]=[TRAINING-GROUP]레이블이 지정된 노드에 CPU의 25% 및 메모리의 40%.
[CPU-POOL]을 Node Pool 레이블 값으로 바꾸세요. [BUDGET-GROUP-LABEL]을 맞춤형 레이블 키로, [TRAINING-GROUP]을 해당 값으로 바꾸세요.
- 일치하는 재정의가 기본 백분율을 대체합니다.
- 여러 재정의가 일치하면 각 차원에서 최소 백분율이 적용됩니다.
- 규칙 순서는 우선순위를 결정하지 않습니다.
- 중복은
selector_conflict로 보고됩니다. 의도하지 않은 중복을 방지하려면 서로 겹치지 않는 그룹을 사용하세요. matchLabels의 항목과 별도의 표현식은 모두 일치해야 합니다.- 하나의
In표현식 내 값은 대안입니다.
특정 노드의 50%
[HOSTNAME-A]와 [HOSTNAME-B]를 선택하려는 노드에서 확인한 kubernetes.io/hostname 레이블 값으로 바꾸세요:
설정 적용
설정을 JavaScript Object Notation(JSON)string으로 다음 필드에 저장하세요:
BUDGET_FILE을 변경한 후 이 블록을 다시 사용하세요:
spec.overrides는 객체 단위로 교체되므로 같은 수준의 필드를 보존해야 합니다.
CoreWeave Intelligent CLI v1.44.0에서는 이 환경 전용 패치를 사용하세요. 해당 릴리스의 이전 정책 스키마는 최신 서버에서 이름이 변경된 HTTPS 호스트 이름 필드를 완전히 내보낼 수 없습니다. 따라서 전체 러너 문서를 다시 적용하면 정책이 불완전한 데이터로 교체될 수 있습니다. 앞서 설명한 패치는 정책을 포함하거나 업데이트하지 않습니다.
내보낸 러너 데이터는 비공개로 유지하고 작업 후 임시 파일을 삭제하세요:
준비 상태 확인
준비 과정에서는 노드 status에 다음 확장 리소스를 게시합니다:- 예산 토큰 없이 이미 바인딩된 샌드박스는 종료될 때까지 게시된 예산에서 차감됩니다.
- 다른 워크로드도 물리적 리소스를 사용하므로 사용 가능한 샌드박스 용량은 설정된 예산보다 적을 수 있습니다.
- 샌드박스 리소스 사용량 계산에는 보조 컨테이너, 초기화 컨테이너의 최대 사용량, RuntimeClass 오버헤드가 포함됩니다.
- CPU 및 메모리 비율은 GPU 용량을 분할하지 않습니다.
sandbox_runner_node_budget_policy 메트릭은 mode 및 policy_hash 레이블을 노출합니다. 클러스터의 모든 러너가 mode="prepare" 및 동일한 policy_hash 값을 보고하는지 확인하세요. 이러한 메트릭에 액세스할 수 없는 경우, 강제 적용을 활성화하기 전에 CoreWeave에 준비 상태 확인을 요청하세요.
강제 적용 활성화
준비 상태가 정상임을 확인한 후 모드만 변경하세요:cwic sandbox runner describe "$RUNNER_ID"를 사용하여 러너 롤아웃을 확인하고, CoreWeave에 클러스터의 워크로드 수락 전환이 완료되었는지 확인을 요청하세요. 이 전환은 클러스터가 예산을 강제 적용하기 시작하는 시점을 조율합니다. 여기에는 기존 샤드를 폐기하고 강제 적용 이전부터 대기 중이던 워크로드가 바인딩되거나 종료되도록 허용하는 작업이 포함됩니다.
강제 적용을 확인하려면 다음 단계를 완료하세요:
- 각 러너에 소규모 샌드박스를 생성하세요.
- 해당 파드가 두 예산 리소스를 모두 요청하는지 확인하세요.
- 통제된 포화 테스트를 수행하는 경우, CPU 또는 메모리 예산 중 하나라도 소진되면 새로운 할당이 중단되는지 확인하세요.
- 테스트 샌드박스를 삭제하세요.
Terraform으로 관리되는 러너 설정
Terraform으로 러너를 관리하는 경우, 다음spec.overrides.env 설정을 기존 coreweave_sandbox_managed_runner 리소스에 병합하세요:
prepare에서 enforce로 업데이트하고 해당 Terraform 변경 사항을 적용하세요.
Terraform이 러너를 관리하는 경우 Terraform에서 변경 사항을 유지하여 후속 적용 시 의도한 설정이 유지되도록 하십시오.
예산 줄이기 또는 노드 구성 변경
노드는 자동으로 코든되거나 드레인되지 않습니다. 비율을 줄이거나 선택자 또는 레이블을 변경하여 가용 리소스를 줄이기 전에 다음 단계를 완료하세요:- 영향을 받는 노드를 코든하세요.
- 해당 클러스터의 모든 러너에 업데이트된 설정을 적용하세요.
- 예산이 수렴할 때까지 기다리세요.
- 이번 변경을 위해 코든한 노드만 코든을 해제하세요.