시작하기 전에
이 페이지의 CLI 및curl 예시는 모두 CoreWeave API 액세스 토큰으로 인증합니다. Cloud Console의 Tokens 페이지에서 토큰을 생성하고 Token Secret 값을 복사하세요. 토큰에 대한 자세한 내용은 API 액세스 토큰 관리를 참조하세요.
CLI: CoreWeave Intelligent CLI(cwic)를 설치한 다음 cwic auth login을 실행하고, 메시지가 표시되면 토큰을 붙여넣으세요. 토큰은 로컬 cwic 설정에 저장되며, 이후 명령어를 실행할 때 자동으로 사용됩니다. 별도로 환경 변수를 설정할 필요는 없습니다.
curl: 이 페이지의 예시에서 토큰을 사용할 수 있도록 셸에서 토큰을 export하세요. [API-ACCESS-TOKEN]을 CoreWeave API 액세스 토큰으로 바꾸세요.
러너 명령어
cwic sandbox runner 그룹은 러너를 관리합니다. 다음 table은 각 라이프사이클 작업과 이를 수행하는 명령어를 연결합니다. 이후 섹션에서는 실제 사용 맥락에서 이러한 명령어를 설명합니다.
모든 입력은 YAML 또는 JSON을 허용합니다.
러너 배포
조직 내에서 각 CKS 클러스터는 최대 하나의 관리형 러너를 호스팅합니다. 배포하려면 다음을 제공하세요:- 러너 ID: 클라이언트가 할당한 사람이 읽을 수 있는 ID로, 조직 내에서 고유합니다.
- 영역: 클러스터가 속한 지리적 영역.
- Cluster ID (또는 cluster name): 러너가 실행되는 CKS 클러스터. Cloud Console의 Clusters 페이지에서 둘 다 찾을 수 있습니다.
- Policy: 클러스터의 샌드박스에 대해 러너가 강제 적용하는 규칙. 샌드박스를 실행하려면 정책이 있어야 합니다. 정책을 생략하면 러너가 연결될 때 CoreWeave가 기본 정책을 제공합니다. 정책에서 기본 샌드박스 수명을 지정할 수 있으며, 최대 수명인 30일은 플랫폼이 강제 적용합니다. 샌드박스 정책 설정 참조.
- CLI
- curl
마법사가 클러스터, 릴리스 채널 및 유지 관리 창을 대화식으로 수집한 다음 제출하기 전에 미리 채워진 사양으로 편집기를 엽니다:파일 모드는 YAML 또는 JSON을 허용하므로 반복 가능한 설정에 선호되는 경로이며, 대신 러너 사양을 생성하는 Claude Code 또는 Codex와 같은 에이전트에 적합합니다. CLI는 사양을 제출하세요:
-f -로 표준 입력에서도 읽습니다. 러너를 배포할 CKS 클러스터 이름으로 [CLUSTER-NAME]을 교체하세요:runner.yaml
maintenance_policy.windows는 선택 사항입니다. 설정하면 자동 업데이트가 지정된 cron 창 동안에만 적용됩니다.runner_group_id는 선택 사항입니다. 동일한 영역에 여러 러너가 있을 때 스케줄링 어피니티에 사용하세요.
일반적인 검증 오류
러너 상태 확인
생성 후 러너의 상태를 확인하여 성공적으로 배포되었는지 확인하고, 그렇지 않은 경우 문제를 진단하세요.- CLI
- curl
get을 사용하세요:prod-us-east-1) 또는 서버에서 부여한 UUID를 입력으로 받습니다.installStatus: 클러스터에 러너를 배포하는 진행 상태(PENDING,PROVISIONING,READY또는FAILED).connectionStatus: 실시간 연결 상태(CONNECTED또는DISCONNECTED). 러너의 하트비트가 이 값을 업데이트합니다. 최대 30초의 지연이 발생할 수 있습니다.
installStatus == FAILED인 경우 응답에 구조화된 installError가 포함됩니다:
remediationHints는 수행해야 할 조치입니다. diagnosticDetail에는 지원 요청을 제출할 때 첨부하면 유용한 내부 로그도 포함되어 있습니다.
러너 업데이트
러너 편집 명령은 대화형 마법사와 파일 기반 패치를 모두 지원합니다. 내부적으로 업데이트는 필드 마스크를 사용하여 변경한 필드만 적용합니다.installStatus, connectionStatus, 타임스탬프, 최종 배포 사양을 포함한 나머지 모든 항목은 읽기 전용입니다.
다음 경로는 수정할 수 있습니다.
identity.zoneidentity.runner_group_idspec(전체 객체)spec.release_channelspec.maintenance_policyspec.overridesspec.enforce_resource_limitspolicy(전체 문서)
PATCH 본문은 요청 래퍼 없이 관리형 러너 자체이며, 필드 마스크는 updateMask 쿼리 매개변수로 전달됩니다. 마스크가 없거나 updateMask=*인 경우 수정 가능한 리소스 전체를 대체합니다.
다음 두 경로는 기존 v1beta2 API에서만 허용되며 v1 관리형 러너 쓰기 작업에서는 거부됩니다. profile_bindings (대신 policy를 설정하세요) 및 spec.allow_privileged_profile_annotations.
일반적인 러너 업데이트
다음 예시는 러너에 가장 자주 적용하는 변경 사항을 보여줍니다. 릴리스 채널 전환, 러너에 적용된 정책 교체, 클러스터 내 러너 파드 배치 위치 조정, 기존 프로필 템플릿에 특권 보안 설정 허용이 포함됩니다.예시: 릴리스 채널 전환
- CLI
- curl
표준 입력에서 한 줄 패치를 적용하세요:또는 패치를 파일에 작성한 후 제출하세요:
patch.yaml
예시: 정책 교체
정책은 전체 문서로 교체됩니다. 현재 정책을 조회하고 필요한 부분을 변경한 후 다시 전송하세요.policy 내부에는 필드 수준 마스크가 없으므로, 부분 본문을 전송하면 생략한 그룹이 모두 지워집니다.
정책 업데이트에는 etag도 포함되며, 이는 러너를 조회할 때 러너가 반환하는 불투명한 리비전 토큰입니다. 더 최신 값이 아니라, 편집할 때 기준으로 삼은 조회에서 받은 값을 전송하세요. 오래된 토큰은 FAILED_PRECONDITION 오류와 함께 실패하며 아무것도 변경되지 않습니다. 따라서 동시 편집이 발생하면 조용히 덮어써지지 않고 오류로 보고됩니다.
- CLI
- curl
policy.json을 편집한 후, 같은 조회에서 받은 etag로 고정하여 제출하세요:policy get은 etag 없이 정책을 내보내고, --etag 없이 실행한 policy edit -f는 제출하는 시점에 러너의 현재 리비전을 조회합니다. 따라서 둘 다 파일을 가져온 리비전을 고정하지 않습니다. 내보낸 후 policy describe 등으로 토큰을 따로 조회해도 같은 문제가 생깁니다. 문서보다 새로운 토큰은 검사를 통과하므로 그 사이에 이루어진 변경 사항을 덮어쓰게 됩니다. cwic sandbox runner edit 템플릿을 사용하면 이런 추가 단계가 필요 없습니다. --print-template은 변경 가능한 설정, 정책, etag를 한꺼번에 내보내고, -f는 파일에 있는 값을 사용합니다.예시: 배포 오버라이드로 노드 배치 고정하기
spec.overrides 필드는 샌드박스 파드가 아니라 러너 자체의 파드를 조정합니다. 러너 파드를 올바른 노드에 배치하는 데 특정 toleration, 노드 셀렉터 또는 런타임 클래스가 필요한 경우에 사용하세요.
흔히 사용하는 방식은 러너 파드를 SUNK Pod Scheduler로 라우팅하여 SUNK 클러스터에서 Slurm 작업과 함께 실행하는 것입니다. 러너 오버라이드에 스케줄러 이름과 SUNK 어노테이션을 설정하세요. 사용 가능한 어노테이션과 필요한 설정은 SUNK Pod Scheduler 인테그레이션을 참조하세요.
- CLI
- curl
overrides.yaml
예시: 특권 프로필 보안 설정 허용
allow_privileged_profile_annotations는 러너에 바인딩된 기존 프로필 템플릿에 특권 보안 설정을 허용할지 제어합니다. 정책 대신 프로필 바인딩을 여전히 사용하는 러너에 적용되므로 요청은 v1beta2 API로 전송됩니다. 기본값은 false이며, 이 플래그가 설정되지 않은 러너에서는 특권 보안 설정을 포함한 템플릿이 거부됩니다.
이름과 달리 이 플래그는 두 가지 유형의 콘텐츠를 제어합니다.
- 권한 있는 파드 어노테이션으로, 런타임 및 스케줄러 접두사를 의미합니다.
serviceAccountName, 호스트 namespace,hostPath볼륨, 권한 있는 컨테이너 또는 권한 상승이 가능한 컨테이너와 같은 권한 있는 구조화된 파드 사양 필드.
permission_denied를 반환하고 문제가 되는 필드를 명시합니다. 예를 들어, securityContext.appArmorProfile과 securityContext.seccompProfile을 설정하는 템플릿은 다음과 같이 실패합니다.
Example output
- CLI
- curl
필요 시 러너 업데이트 트리거
러너의updateAvailable이 true이면 다음 유지 관리 창까지 기다리지 않고 업데이트를 즉시 적용할 수 있습니다:
- CLI
- curl
target_revision을 갱신합니다. 클러스터 내 컨트롤러가 이를 배포합니다.
러너 목록 조회
조직의 모든 러너를 확인하거나 특정 존, 클러스터 또는 연결 상태로 범위를 좁혀 보려면 다음 목록 명령어를 사용하세요.- CLI
- curl
러너 삭제
클러스터에서 더 이상 샌드박스 용량이 필요하지 않거나 같은 클러스터에 새 러너를 다시 배포하기 전에 러너를 제거하세요.- CLI
- curl
--yes를 전달하세요:참고 항목
- 노드 할당 예산 설정: Node Pool 또는 노드 그룹별로 샌드박스의 CPU 및 메모리 요청량을 제한합니다.
- 샌드박스 아키텍처: 리소스 모델, 컨트롤 플레인과 데이터 플레인 비교, 다중 클러스터 토폴로지를 설명합니다.
- 정책 개요: 샌드박스에 정책이 적용되는 방식을 설명합니다.
- 샌드박스 정책 설정: 모든 제약 조건 그룹을 구체적인 예시와 함께 설명합니다.
- 컨트롤 플레인 API 개요: 인증, 필드 마스크, 모든 엔드포인트의 요청 및 응답 구조를 설명합니다.
- 정책 레퍼런스: 정책에서 설정할 수 있는 모든 필드를 설명합니다.