事前準備
このページの CLI とcurl の例は、いずれも CoreWeave API アクセストークンで認証します。Cloud Console の Tokens ページでトークンを生成し、Token Secret の値をコピーしてください。トークンの詳細については、API アクセストークンの管理を参照してください。
CLI: CoreWeave Intelligent CLI (cwic) をインストールし、cwic auth login を実行して、プロンプトが表示されたらトークンを貼り付けます。トークンはローカルの cwic 設定に保存され、以降のコマンドでは自動的に読み込まれます。環境変数を設定する必要はありません。
curl: このページの例からトークンを参照できるよう、シェルでトークンをエクスポートします。[API-ACCESS-TOKEN] は、ご自身の CoreWeave API アクセストークンに置き換えてください。
ランナーコマンド
cwic sandbox runner グループはランナーを管理します。以下の表は、各ライフサイクルタスクとそれを実行するコマンドの対応を示しています。以降のセクションでは、これらのコマンドについてコンテキストに沿って順を追って説明します。
すべての入力は YAML または JSON を受け入れます。
ランナーをデプロイする
組織内の各 CKS クラスターでホストできるマネージドランナーは最大 1 つです。デプロイするには、以下を指定します。- ランナー ID: クライアント側で割り当てる、人が読める形式の ID。組織内で一意である必要があります。
- ゾーン: クラスターが属する地理的ゾーン。
- クラスター ID (またはクラスター名): ランナーを実行する CKS クラスター。どちらも Cloud Console の Clusters ページで確認できます。
- ポリシー: ランナーがそのクラスター上のサンドボックスに適用するルール。サンドボックスを実行するにはポリシーが必要です。省略した場合は、ランナーの接続時に CoreWeave がデフォルトのポリシーを適用します。ポリシーではサンドボックスのデフォルトのライフタイムを指定できます。ただし、上限である 30 日はプラットフォーム側で強制されます。サンドボックスポリシーを設定する を参照してください。
- CLI
- curl
ウィザードでは、クラスター、リリースチャンネル、メンテナンス期間をインタラクティブに入力します。その後、送信前に値が入力済みの spec がエディターで開きます。ファイルモードは YAML または JSON を受け入れます。そのため、再現可能なセットアップにはこの方法が推奨されます。また、Claude Code や Codex など、ユーザーに代わってランナーの spec を生成するエージェントとの併用にも適しています。CLI は spec を送信します。
-f - を指定すると stdin からも読み込めます。[CLUSTER-NAME] は、ランナーをデプロイする CKS クラスターの名前に置き換えてください。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 は、実行すべき action を示します。diagnosticDetail には、サポートチケットを作成する際に添付すると役立つ内部ログも含まれています。
ランナーを更新する
ランナーの編集コマンドは、対話型ウィザードとファイルによるパッチの両方をサポートします。内部的には、更新にフィールドマスクを使用し、変更したフィールドのみが適用されます。それ以外はすべて読み取り専用で、installStatus、connectionStatus、タイムスタンプ、解決済みのデプロイメント仕様も含まれます。
次のパスは変更可能です。
identity.zoneidentity.runner_group_idspec(オブジェクト全体)spec.release_channelspec.maintenance_policyspec.overridesspec.enforce_resource_limitspolicy(ドキュメント全体)
PATCH の本文はマネージドランナー自体であり、リクエストのラッパーはありません。フィールドマスクは updateMask クエリパラメーターとして渡されます。マスクが指定されていない場合、または updateMask=* の場合は、変更可能なリソース全体が置き換えられます。
次の 2 つのパスは、従来の v1beta2 サーフェスでのみ受け付けられ、v1 のマネージドランナーへの書き込みでは拒否されます。profile_bindings (代わりに policy を設定してください) と spec.allow_privileged_profile_annotations です。
ランナーの一般的な更新
以下の例では、ランナーに対して最も頻繁に行われる編集を紹介します。リリースチャネルの切り替え、ランナーが保持するポリシーの置き換え、クラスター内でランナー Pod を配置する場所の調整、そしてレガシーのプロファイルテンプレートに特権構成を許可する方法です。例: リリースチャンネルを切り替える
- CLI
- curl
stdin から 1 行のパッチを適用します:または、パッチをファイルに書き込んで送信します:
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 フィールドは、サンドボックスの Pod ではなく、ランナー自体の Pod を調整します。ランナーの Pod を適切なノードに配置するために、特定のトレランス、ノードセレクター、またはランタイムクラスが必要な場合に使用します。
よくあるケースは、SUNK クラスター内で Slurm ジョブと並行して実行できるように、ランナーの Pod を SUNK Pod Scheduler 経由で配置することです。ランナーのオーバーライドにスケジューラー名と SUNK アノテーションを設定します。使用可能なアノテーションと必要な設定については、SUNK Pod Scheduler インテグレーションを参照してください。
- CLI
- curl
overrides.yaml
例: 特権プロファイルの構成を許可する
allow_privileged_profile_annotations は、ランナーにバインドされたレガシーのプロファイルテンプレートが特権的な構成を保持できるかどうかを制御します。ポリシーではなくプロファイルバインディングを引き続き使用しているランナーに適用されるため、リクエストは v1beta2 サーフェスに送信されます。既定値は false で、このフラグが設定されていないランナーでは、特権的な構成を含むテンプレートは拒否されます。
名前から受ける印象とは異なり、このフラグは次の 2 種類の内容を制御します。
- 特権 Pod アノテーション、つまりランタイムおよびスケジューラのプレフィックス。
serviceAccountName、ホスト名前空間、hostPathボリューム、特権コンテナや権限昇格コンテナなど、特権的な構造化 Pod スペックフィールド。
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 の概要: 認証、フィールドマスク、および各エンドポイントのリクエストと応答の構造について説明します。
- ポリシーリファレンス: ポリシーで設定できるすべてのフィールドを説明します。