Skip to main content
マネージドランナーは、CKS クラスター内でサンドボックスを実行する、CoreWeave が管理するコンポーネントです。このページでは、ランナーのデプロイ、健全性の確認、ニーズの変化に応じた設定の調整、不要になった場合の削除まで、ライフサイクル全体を説明します。サンドボックスのアーキテクチャにおけるランナーの位置付けと、ゲートウェイがランナーへのリクエストを仲介する仕組みについては、サンドボックスのアーキテクチャを参照してください。 ランナーの有効化から最初のサンドボックスの実行までの手順ガイドについては、独自のコンピュートを使用するを参照してください。 ランナーをコードとしてのインフラストラクチャで管理するには、Terraform でランナーを管理するを参照してください。

事前準備

このページの CLI、curl、Terraform の例は、いずれも CoreWeave API アクセストークンで認証します。Cloud Console の Tokens ページでトークンを生成し、Token Secret の値をコピーしてください。トークンの詳細については、API アクセストークンの管理を参照してください。 CLI: CoreWeave Intelligent CLI (cwic) をインストールし、cwic auth login を実行して、プロンプトが表示されたらトークンを貼り付けます。トークンはローカルの cwic 設定に保存され、以降のコマンドでは自動的に読み込まれます。環境変数を設定する必要はありません。
curl: このページの例からトークンを参照できるよう、シェルでトークンをエクスポートします。[API-ACCESS-TOKEN] は、ご自身の CoreWeave API アクセストークンに置き換えてください。
Terraform: Terraform と CoreWeave Terraform プロバイダーをインストールし、sandbox_admin 権限を持つトークンを使用します。このデプロイメントの例では、0.x 系のプロバイダー 0.26.0 以降を使用します。前述のシェルコマンドでエクスポートしたトークンを使用して、プロバイダーの認証変数を次のように設定します。
クラスターにすでにランナーが存在する場合は、適用する前にランナーを Terraform の state にインポートしてください。プロバイダーのセットアップと Terraform の完全なライフサイクルについては、Terraform でランナーを管理するを参照してください。

ランナーコマンド

cwic sandbox runner グループはランナーを管理します。以下の表は、各ライフサイクルタスクとそれを実行するコマンドの対応を示しています。以降のセクションでは、これらのコマンドについてコンテキストに沿って順を追って説明します。 すべての入力は YAML または JSON を受け入れます。

ランナーをデプロイする

組織内の各 CKS クラスターでホストできるマネージドランナーは最大 1 つです。デプロイするには、以下を指定します。
  • ランナー ID: クライアント側で割り当てる、人が読める形式の ID。組織内で一意である必要があります。
  • ゾーン: クラスターが属する地理的ゾーン。
  • クラスター ID (またはクラスター名): ランナーを実行する CKS クラスター。どちらも Cloud Console の Clusters ページで確認できます。
  • ポリシー: ランナーがそのクラスター上のサンドボックスに適用するルール。サンドボックスを実行するにはポリシーが必要です。省略した場合は、ランナーの接続時に CoreWeave がデフォルトのポリシーを適用します。ポリシーではサンドボックスのデフォルトのライフタイムを指定できます。ただし、上限である 30 日はプラットフォーム側で強制されます。サンドボックスポリシーを設定する を参照してください。
ウィザードでは、クラスター、リリースチャンネル、メンテナンス期間をインタラクティブに入力します。その後、送信前に値が入力済みの spec がエディターで開きます。
ファイルモードは YAML または JSON を受け入れます。そのため、再現可能なセットアップにはこの方法が推奨されます。また、Claude Code や Codex など、ユーザーに代わってランナーの spec を生成するエージェントとの併用にも適しています。CLI は -f - を指定すると stdin からも読み込めます。[CLUSTER-NAME] は、ランナーをデプロイする CKS クラスターの名前に置き換えてください。
runner.yaml
spec を送信します。
以下の動作に注意してください。
  • maintenance_policy.windows はオプションです。設定すると、自動更新は指定した cron ウィンドウの間にのみ適用されます。
  • runner_group_id はオプションです。同じゾーンに複数のランナーがある場合、スケジューリングのアフィニティ指定に使用します。

よくある検証エラー

ランナーのステータスを確認する

作成後、ランナーのステータスを確認して、正常にロールアウトされたかどうかを確認します。ロールアウトに失敗した場合は、ステータスをもとに問題を診断します。
表形式で概要をすばやく確認するには、エイリアス get を使用します。
どちらのコマンドでも、作成時に指定したランナー ID (prod-us-east-1) またはサーバーが割り当てた UUID を指定できます。
応答には、トラッキングすべき 2 つのステータスフィールドが含まれます。
  • installStatus: クラスターへのランナーのデプロイメントの進行状況 (PENDING、PROVISIONING、READY、または FAILED) 。
  • connectionStatus: 現在の接続状態 (CONNECTED または DISCONNECTED) 。この値はランナーのハートビートによって更新されるため、最大 30 秒の遅延が生じることがあります。
installStatus == FAILED の場合、応答には構造化された installError が含まれます。
remediationHints は、実行すべき action を示します。diagnosticDetail には、サポートチケットを作成する際に添付すると役立つ内部ログも含まれています。

ランナーを更新する

Terraform で管理しているランナーの場合は、リソース設定を編集し、terraform plan の内容を確認してからプランを適用します。目的のポリシーとオーバーライドは、すべて設定内に完全な形で記述しておいてください。CLI または API で行った変更は、その後の適用によって元に戻される可能性があります。ドリフトとリソースの置き換えの動作については、Terraform 設定を更新する を参照してください。 ランナーの編集コマンドは、対話型ウィザードとファイルによるパッチの両方をサポートします。内部的には、更新にフィールドマスクを使用し、変更したフィールドのみが適用されます。それ以外はすべて読み取り専用で、installStatus、connectionStatus、タイムスタンプ、解決済みのデプロイメント仕様も含まれます。 変更可能なフィールドのパスについては、更新時のフィールドマスク を参照してください。 v1 REST API では、PATCH の本文はマネージドランナー自体であり、リクエストのラッパーはありません。フィールドマスクは updateMask クエリパラメーターとして渡されます。マスクが省略されている場合、または空の場合は、変更可能なリソース全体が置き換えられます。 次の 2 つのパスは、従来の v1beta2 サーフェスでのみ受け付けられ、v1 のマネージドランナーへの書き込みでは拒否されます。profile_bindings (代わりに policy を設定してください) と spec.allow_privileged_profile_annotations です。

ランナーの一般的な更新

以下の例では、ランナーに対して最も頻繁に行われる編集を紹介します。リリースチャネルの切り替え、ランナーが保持するポリシーの置き換え、クラスター内でランナー Pod を配置する場所の調整、そしてレガシーのプロファイルテンプレートに特権構成を許可する方法です。

例: リリースチャンネルを切り替える

stdin から 1 行のパッチを適用します:
または、パッチをファイルに書き込んで送信します:
patch.yaml

例: ポリシーを置き換える

ポリシーはドキュメント全体として置き換えられます。現在のポリシーを読み取り、必要な箇所を変更して送り返してください。policy 内にはフィールド単位のマスクがないため、本文の一部だけを送信すると、省略したグループは消去されます。 CLI および REST の手順については、ポリシーを更新するを参照してください。ポリシーとその etag は同じ読み取りで取得し、編集したドキュメントをその etag とともに送信してください。これにより、同時に行われた変更を検出できます。

例: デプロイメントのオーバーライドによるノード配置の固定

spec.overrides フィールドは、サンドボックスの Pod ではなく、ランナー自体の Pod を調整します。ランナーの Pod を適切なノードに配置するために、特定のトレランス、ノードセレクター、またはランタイムクラスが必要な場合に使用します。 よくあるケースは、SUNK クラスター内で Slurm ジョブと並行して実行できるように、ランナーの Pod を SUNK Pod Scheduler 経由で配置することです。ランナーのオーバーライドにスケジューラー名と SUNK アノテーションを設定します。使用可能なアノテーションと必要な設定については、SUNK Pod Scheduler インテグレーションを参照してください。
overrides.yaml

例: ランナーのアフィニティを設定する

spec.overrides.affinity を使用して、ランナー自身の Pod に対する Kubernetes のノードアフィニティ、Pod アフィニティ、または Pod アンチアフィニティを設定します。値は Kubernetes の Affinity オブジェクトで、その内部のキーには Kubernetes のキャメルケースを使用します。ランナーのアフィニティは、サンドボックス Pod の配置を設定するものではなく、ノードの予算も変更しません。 次の例では、example.com/capacity-class: on-demand というラベルが付いたノードを優先しつつ、条件を満たすその他のノードも引き続き使用できるようにします。この例示用のラベルは、ご使用のクラスターで使用しているラベルに置き換えてください。
ランナーのアフィニティをサポートするバージョンの CoreWeave Intelligent CLI を使用してください。コマンドで affinity フィールドが不明であると報告される場合は、CLI をアップグレードするか、REST の例を使用してください。
  1. アフィニティのパッチを保存します。
    affinity.yaml
  2. ランナーに適用します。
アフィニティのみのパッチは spec.overrides.affinity だけを対象とするため、他のオーバーライドは保持されます。同じパッチに他のオーバーライドフィールドが含まれる場合、CLI は spec.overrides オブジェクト全体を置き換えます。保持したい兄弟のオーバーライドはすべて含めてください。
Kubernetes は、優先アフィニティを他のスケジューリングスコアと組み合わせて評価します。この優先設定は、on-demand を優先した配置を保証するものではありません。また、優先するキャパシティが利用可能になっても、すでに実行中の Pod が移動されることはありません。既存の node_selector による制限は引き続き適用されます。NoSchedule または NoExecute の taint を持つノードには、一致するトレランスが必要です。spot へのフォールバックを許可する場合は、spot ノードを除外するノードセレクターを使用しないでください。 配置を厳密に制限するには、requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms を使用します。必須のノードアフィニティと node_selector の両方に一致する必要があります。各 term は論理 OR で、term 内の式は論理 AND で結合されます。必須のノードアフィニティは、ランナーのプリフライトチェックの対象となります。優先アフィニティと Pod アフィニティまたはアンチアフィニティは、スケジューリング時に Kubernetes によって評価されます。 更新後は、cwic sandbox runner describe prod-us-east-1 を使用してロールアウトの進行状況を確認します。API 応答で、activeRevision が targetRevision と一致していること、installStatus が RUNNER_INSTALL_STATUS_READY であること、connectionStatus が RUNNER_CONNECTION_STATUS_CONNECTED であることを確認します。解決後の設定は、出力専用の deploymentSpec.affinity フィールドに表示されます。 アフィニティはルール単位でマージされるのではなく、全体が置き換えられます。継承されたルールも含めてすべてのアフィニティルールを削除するには、空のオブジェクトを明示的に適用します。
オーバーライドを削除してプラットフォームのデフォルトをリストアするには、アフィニティのみを対象とする CLI パッチで affinity: null を使用します。REST の場合は、updateMask=spec.overrides.affinity はそのままにして {"spec":{"overrides":{}}} を送信します。アフィニティをクリアしても、ノードセレクターとトレランスは変更されません。 従来の v1beta2 のフィールドは managed_spec.overrides.affinity です。新しいインテグレーションでは、ここに示す v1 のフィールド spec.overrides.affinity を使用してください。

例: 特権プロファイルの構成を許可する

allow_privileged_profile_annotations は、ランナーにバインドされたレガシーのプロファイルテンプレートが特権的な構成を保持できるかどうかを制御します。ポリシーではなくプロファイルバインディングを引き続き使用しているランナーに適用されるため、リクエストは v1beta2 サーフェスに送信されます。既定値は false で、このフラグが設定されていないランナーでは、特権的な構成を含むテンプレートは拒否されます。 名前から受ける印象とは異なり、このフラグは次の 2 種類の内容を制御します。
  • 特権 Pod アノテーション、つまりランタイムおよびスケジューラーのプレフィックス。
  • serviceAccountName、ホスト名前空間、hostPath ボリューム、特権コンテナや権限昇格コンテナなど、特権的な構造化 Pod スペックフィールド。
ランナーが拒否したテンプレートは permission_denied を返し、問題となったフィールド名を示します。たとえば、securityContext.appArmorProfile と securityContext.seccompProfile を設定するテンプレートは、次のように失敗します。
Example output
テンプレートを拒否したランナーにフラグを設定します。このフラグは 1 つのランナーにのみ適用されるため、特権構成が必要なランナーごとにこの操作を繰り返してください。
更新が成功したら、拒否されたプロファイルテンプレートを再度適用します。
このフラグを設定すると、ホストリソースへのアクセスを含め、ランナー上のサンドボックスが実行できる操作の範囲が広がります。特権構成が必要なランナーにのみ設定してください。Sandbox Admin ロールを持つユーザーであれば、誰でもこのフラグを設定できます。設定すると、クラスター管理者に匹敵するノードアクセス権がサンドボックスに付与される可能性があります。

ランナーの更新をオンデマンドで実行する

ランナーの updateAvailable が true の場合、次のメンテナンス期間を待たずに、すぐに更新を適用できます。
コントロールプレーンは、ランナーのリリースチャンネルで最新のバージョンを特定し、target_revision を更新します。クラスター内のコントローラーがその更新をロールアウトします。

ランナーの一覧表示

組織内のすべてのランナーを確認する場合や、特定のゾーン、クラスター、接続状態に絞り込んで表示する場合は、次の一覧コマンドを使用します。
ゾーン、クラスター、接続状態でフィルタリングします。

ランナーを削除する

クラスター上のサンドボックスのキャパシティが不要になった場合、または同じクラスターに新しいランナーを再デプロイする前に、ランナーを削除します。
CLI で確認を求められます。スクリプトで使用する場合は、--yes を指定して確認を省略します。
ランナーを削除すると、クラスター内のランナーのデプロイメントが撤去されます。そのランナーで実行中のサンドボックスはすべて停止します。ポリシーはランナーの一部なので、ランナーとともに削除されます。クラスターを再デプロイする予定がある場合は、ポリシードキュメントをバージョン管理下に保存してください。
削除は元に戻せません。トラフィックを一時停止したいだけの場合は、このランナーを削除する前にサンドボックスを別のランナーに移動してください。

関連情報

最終更新日 2026年11月4日