Skip to main content
Un exécuteur géré est le composant géré par CoreWeave qui exécute les sandboxes dans votre cluster CKS. Cette page couvre l’ensemble de son cycle de vie : déployer un exécuteur, vérifier qu’il est en bonne santé, ajuster sa configuration à mesure que vos besoins évoluent, puis le supprimer lorsque vous n’en avez plus l’utilité. Pour savoir quelle place occupe l’exécuteur dans l’architecture des sandboxes et comment la passerelle lui relaie les requêtes, consultez Architecture des sandboxes. Pour un guide pas à pas, de l’activation d’un exécuteur au lancement de votre première sandbox, consultez Utiliser votre propre infrastructure de calcul. Pour gérer un exécuteur selon l’approche infrastructure en tant que code, consultez Gérer les exécuteurs avec Terraform.

Avant de commencer

Les exemples CLI, curl et Terraform de cette page s’authentifient à l’aide d’un jeton d’accès à l’API CoreWeave. Générez-en un depuis la page Tokens de la Cloud Console, puis copiez la valeur Token Secret. Pour en savoir plus sur les jetons, consultez Gérer les jetons d’accès à l’API. CLI : installez la CoreWeave Intelligent CLI (cwic), puis exécutez cwic auth login et collez le jeton lorsque vous y êtes invité. Le jeton est enregistré dans votre configuration cwic locale, et les commandes suivantes le lisent automatiquement. Il n’est pas nécessaire de définir une variable d’environnement.
curl : exportez le jeton dans votre shell pour que les exemples de cette page puissent l’utiliser. Remplacez [API-ACCESS-TOKEN] par votre jeton d’accès à l’API CoreWeave :
Terraform : installez Terraform et le fournisseur Terraform CoreWeave, puis utilisez un jeton disposant de l’autorisation sandbox_admin. L’exemple de déploiement nécessite la version 0.26.0 ou ultérieure du fournisseur, dans la série 0.x. Définissez la variable d’authentification du fournisseur à partir du jeton exporté par la commande shell précédente :
Si votre cluster dispose déjà d’un exécuteur, importez-le dans l’état Terraform avant d’appliquer la configuration. Pour configurer le fournisseur et découvrir le cycle de vie complet de Terraform, consultez Gérer les exécuteurs avec Terraform.

Commandes des exécuteurs

Le groupe cwic sandbox runner permet de gérer les exécuteurs. Le tableau suivant indique, pour chaque tâche du cycle de vie, la commande correspondante. Les sections suivantes présentent ces commandes en contexte. Toutes les entrées acceptent le format YAML ou JSON.

Déployer un exécuteur

Au sein de votre organisation, chaque cluster CKS héberge au plus un exécuteur géré. Pour en déployer un, fournissez les éléments suivants :
  • Identifiant de l’exécuteur : un identifiant lisible attribué par le client, unique au sein de votre organisation.
  • Zone : la zone géographique à laquelle appartient le cluster.
  • Identifiant du cluster (ou nom du cluster) : le cluster CKS sur lequel l’exécuteur s’exécute. Vous trouverez ces deux informations sur la page Clusters de la Cloud Console.
  • Politique : les règles que l’exécuteur applique aux sandboxes de son cluster. Une politique est requise pour exécuter des sandboxes. Si vous l’omettez, CoreWeave en fournit une par défaut lorsque l’exécuteur se connecte. La politique peut définir une durée de vie par défaut des sandboxes ; la plateforme impose une limite maximale de 30 jours. Voir Configurer une politique de sandbox.
L’assistant vous demande de manière interactive le cluster, le canal de publication et les fenêtres de maintenance, puis ouvre votre éditeur avec une spécification préremplie avant de la soumettre :
Le mode fichier accepte le YAML ou le JSON : c’est donc la méthode à privilégier pour des configurations reproductibles, et elle convient particulièrement aux agents comme Claude Code ou Codex qui génèrent des spécifications d’exécuteur à votre place. La CLI peut également lire depuis stdin avec -f -. Remplacez [CLUSTER-NAME] par le nom du cluster CKS sur lequel déployer l’exécuteur :
runner.yaml
Soumettez la spécification :
Tenez compte des points suivants :
  • maintenance_policy.windows est facultatif. S’il est défini, les mises à jour automatiques ne s’appliquent que pendant les fenêtres cron spécifiées.
  • runner_group_id est facultatif. Utilisez-le pour définir une affinité d’ordonnancement lorsque vous disposez de plusieurs exécuteurs dans la même zone.

Erreurs de validation courantes

Vérifier le statut de l’exécuteur

Après la création, vérifiez le statut de l’exécuteur pour confirmer qu’il a bien été déployé ou, le cas échéant, pour diagnostiquer les problèmes.
Pour obtenir une synthèse rapide sous forme de tableau, utilisez l’alias get :
Ces deux commandes acceptent l’identifiant de l’exécuteur que vous avez indiqué lors de la création (prod-us-east-1) ou l’UUID attribué par le serveur.
La réponse contient deux champs de statut à surveiller :
  • installStatus : progression du déploiement de l’exécuteur dans votre cluster (PENDING, PROVISIONING, READY ou FAILED).
  • connectionStatus : état de la connectivité en temps réel (CONNECTED ou DISCONNECTED). Cette valeur est mise à jour par le signal de pulsation (heartbeat) de l’exécuteur. Prévoyez un délai pouvant atteindre 30 secondes.
Lorsque installStatus == FAILED, la réponse inclut un objet installError structuré :
remediationHints indique les actions à entreprendre. diagnosticDetail contient également des journaux internes qu’il est utile de joindre si vous ouvrez un ticket d’assistance.

Mettre à jour un exécuteur

Pour un runner géré avec Terraform, modifiez la configuration de sa ressource, examinez la sortie de terraform plan, puis appliquez le plan. Conservez dans la configuration l’intégralité de la politique et des remplacements souhaités. Toute application ultérieure peut annuler les modifications effectuées via la CLI ou l’API. Pour en savoir plus sur la dérive et le comportement de remplacement, consultez Mettre à jour la configuration Terraform. La commande de modification de l’exécuteur prend en charge un assistant interactif ainsi qu’un patch basé sur un fichier. En interne, les mises à jour s’appuient sur un masque de champs : seuls les champs que vous modifiez sont appliqués. Tout le reste est en lecture seule, notamment installStatus, connectionStatus, les horodatages et la spécification de déploiement résolue. Pour connaître les chemins de champs modifiables, consultez Masques de champs lors des mises à jour. Dans l’API REST v1, le corps de la requête PATCH est le runner géré lui-même, sans encapsuleur de requête, et le masque de champs est transmis dans le paramètre de requête updateMask. Si le masque est omis ou vide, l’intégralité de la ressource modifiable est remplacée. Deux chemins ne sont acceptés que sur l’ancienne interface v1beta2 et sont rejetés lors des écritures de runner géré en v1 : profile_bindings (configurez plutôt policy) et spec.allow_privileged_profile_annotations.

Mises à jour courantes d’un exécuteur

Les exemples suivants présentent les modifications les plus fréquemment apportées à un exécuteur : changer de canal de publication, remplacer la politique qui lui est associée, ajuster le placement du pod de l’exécuteur dans votre cluster et autoriser les anciens modèles de profil à comporter une posture privilégiée.

Exemple : changer de canal de publication

Appliquez un patch d’une ligne depuis stdin :
Vous pouvez aussi écrire le patch dans un fichier, puis le soumettre :
patch.yaml

Exemple : remplacer la politique

La politique est remplacée en tant que document complet. Lisez la politique actuelle, modifiez ce dont vous avez besoin, puis renvoyez-la. Il n’existe aucun masque au niveau des champs dans policy : un corps partiel efface donc les groupes que vous omettez. Pour les procédures par la CLI et l’API REST, suivez Mettre à jour une politique. Capturez la politique et son etag lors d’une seule et même lecture, puis soumettez le document modifié avec cet etag afin de détecter les modifications concurrentes.

Exemple : fixer le placement sur des nœuds via les remplacements de déploiement

Le champ spec.overrides configure le pod de l’exécuteur lui-même, et non les pods des bacs à sable. Utilisez-le lorsque le pod de l’exécuteur a besoin de tolérances, de sélecteurs de nœuds ou de classes de runtime spécifiques pour être placé sur les bons nœuds. Un cas courant consiste à acheminer le pod de l’exécuteur via le SUNK Pod Scheduler afin qu’il puisse s’exécuter dans votre cluster SUNK aux côtés des tâches Slurm. Définissez le nom de l’ordonnanceur et les annotations SUNK dans les remplacements de l’exécuteur. Consultez Intégration du SUNK Pod Scheduler pour connaître les annotations disponibles et la configuration requise.
overrides.yaml

Exemple : configurer l’affinité de l’exécuteur

Utilisez spec.overrides.affinity pour définir l’affinité de nœud Kubernetes, l’affinité de Pod ou l’anti-affinité de Pod applicables aux Pods de l’exécuteur lui-même. La valeur est un objet Kubernetes Affinity, dont les clés suivent la convention camel case de Kubernetes. L’affinité de l’exécuteur ne configure pas le placement des Pods de sandbox et ne modifie pas les budgets des nœuds. L’exemple suivant privilégie les Nœuds portant l’étiquette example.com/capacity-class: on-demand, tout en laissant disponibles les autres Nœuds éligibles. Remplacez cette étiquette, donnée à titre d’exemple, par une étiquette utilisée dans votre cluster.
Utilisez une version de CoreWeave Intelligent CLI qui prend en charge l’affinité de l’exécuteur. Si la commande signale un champ affinity inconnu, mettez à niveau la CLI ou utilisez l’exemple REST.
  1. Enregistrez le patch d’affinité :
    affinity.yaml
  2. Appliquez-le à votre exécuteur :
Un patch qui ne contient que l’affinité cible spec.overrides.affinity et préserve les autres remplacements. Si le même patch inclut d’autres champs de remplacement, la CLI remplace l’intégralité de l’objet spec.overrides. Incluez alors tous les remplacements de même niveau que vous souhaitez conserver.
Kubernetes combine l’affinité préférée avec les autres scores d’ordonnancement. Cette préférence ne garantit pas un placement en priorité sur la capacité à la demande et ne déplace pas un Pod déjà en cours d’exécution lorsque la capacité préférée se libère. Les restrictions node_selector existantes restent applicables. Les Nœuds dotés de taints NoSchedule ou NoExecute nécessitent des tolérances correspondantes. Pour permettre un repli sur la capacité Spot, n’utilisez pas de sélecteur de nœud qui exclut les Nœuds Spot. Pour imposer une restriction de placement stricte, utilisez requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms. L’affinité de nœud requise et node_selector doivent toutes deux être satisfaites. Les termes sont combinés par un OU logique, et les expressions d’un même terme par un ET logique. L’affinité de nœud requise est prise en compte lors des vérifications préalables de l’exécuteur. Kubernetes évalue l’affinité préférée ainsi que l’affinité ou l’anti-affinité de Pod au moment de l’ordonnancement. Après une mise à jour, utilisez cwic sandbox runner describe prod-us-east-1 pour suivre la progression du déploiement. Dans la réponse de l’API, vérifiez que activeRevision correspond à targetRevision, que installStatus vaut RUNNER_INSTALL_STATUS_READY et que connectionStatus vaut RUNNER_CONNECTION_STATUS_CONNECTED. La configuration résolue apparaît dans le champ deploymentSpec.affinity, renseigné uniquement en sortie. L’affinité est remplacée dans son intégralité, et non fusionnée règle par règle. Pour supprimer toutes les règles d’affinité, y compris les règles héritées, appliquez explicitement un objet vide :
Pour supprimer le remplacement et rétablir les valeurs par défaut de la plateforme, utilisez affinity: null dans un patch CLI qui ne porte que sur l’affinité. Avec l’API REST, conservez updateMask=spec.overrides.affinity et envoyez {"spec":{"overrides":{}}}. Effacer l’affinité ne modifie ni les sélecteurs de nœuds ni les tolérances. Le champ hérité de v1beta2 est managed_spec.overrides.affinity. Les nouvelles intégrations utilisent le champ spec.overrides.affinity de v1 présenté ici.

Exemple : autoriser une posture de profil privilégiée

allow_privileged_profile_annotations détermine si les modèles de profil hérités liés à un exécuteur peuvent comporter une posture privilégiée. Ce paramètre s’applique aux exécuteurs qui utilisent encore des liaisons de profil plutôt qu’une politique ; la requête est donc envoyée à la surface v1beta2. Sa valeur par défaut est false, et tout modèle comportant une telle posture est rejeté sur un exécuteur où l’option n’est pas définie. Malgré son nom, cette option régit deux types de contenu :
  • Les annotations de pod privilégiées, c’est-à-dire les préfixes du runtime et de l’ordonnanceur.
  • Les champs structurés privilégiés de la spécification de pod, tels que serviceAccountName, les namespace de l’hôte, les volumes hostPath, ainsi que les conteneurs privilégiés ou avec élévation de privilèges.
Un modèle rejeté par un exécuteur renvoie permission_denied et indique les champs en cause. Par exemple, un modèle qui définit securityContext.appArmorProfile et securityContext.seccompProfile échoue avec l’erreur suivante :
Example output
Définissez l’option sur l’exécuteur qui a rejeté le modèle. L’option est limitée à un seul exécuteur : répétez donc cette opération pour chaque exécuteur qui nécessite la posture privilégiée.
Une fois la mise à jour effectuée, appliquez de nouveau le modèle de profil qui avait été rejeté.
Cette option étend les capacités des Sandbox de l’exécuteur, notamment l’accès aux ressources de l’hôte. Ne la définissez que sur les exécuteurs qui requièrent la posture privilégiée. Tout utilisateur disposant du rôle Sandbox Admin peut définir cette option. Définir cette option peut conférer aux Sandbox un accès aux nœuds comparable à celui d’un administrateur de cluster.

Déclencher à la demande une mise à jour de l’exécuteur

Lorsque updateAvailable vaut true sur l’exécuteur, vous pouvez appliquer la mise à jour immédiatement plutôt que d’attendre la prochaine fenêtre de maintenance :
Le plan de contrôle détermine la dernière version disponible sur le canal de publication de l’exécuteur et incrémente target_revision. Le contrôleur exécuté dans le cluster en assure ensuite le déploiement.

Lister les exécuteurs

Pour afficher tous les exécuteurs de votre organisation, ou pour restreindre la vue à une zone, un cluster ou un état de connexion donné, utilisez les commandes de liste suivantes.
Filtrez par zone, cluster ou statut de connexion :

Supprimer un exécuteur

Supprimez un exécuteur lorsque vous n’avez plus besoin de capacité de sandbox sur son cluster, ou avant de redéployer un nouvel exécuteur sur le même cluster.
La CLI demande une confirmation. Dans un script, passez --yes pour ignorer cette confirmation :
La suppression d’un exécuteur entraîne le démontage de son déploiement dans votre cluster. Toutes les sandboxes en cours d’exécution sur cet exécuteur s’arrêtent. La politique faisant partie de l’exécuteur, elle est supprimée en même temps que lui. Conservez le document de politique dans un système de gestion de versions si vous prévoyez de redéployer le cluster.
La suppression est définitive. Si vous souhaitez simplement suspendre le trafic, déplacez les sandboxes vers un autre exécuteur avant de supprimer celui-ci.

Voir aussi

Dernière modification le 4 novembre 2026