Avant de commencer
Avant de configurer les budgets, remplissez les prérequis suivants :- Vérifiez auprès de CoreWeave que la prise en charge des budgets d’allocation de Nœud et les autorisations requises sont activées pour votre cluster.
- Appliquez toute mise à jour requise du runner géré et attendez que le runner soit prêt et connecté.
- Utilisez CoreWeave Intelligent CLI v1.44.0 ou une version ultérieure, authentifié auprès de la bonne organisation avec des autorisations d’administrateur Sandbox.
- Installez
jq. - Disposez d’un accès Kubernetes permettant d’inspecter les libellés des Nœuds et les budgets publiés. Pour réduire un budget, vous devez également disposer de l’autorisation de marquer les Nœuds concernés comme non planifiables (cordon), puis de les rétablir (uncordon).
- Utilisez l’ordonnanceur Kubernetes par défaut, ou vérifiez que votre ordonnanceur applique les ressources étendues de budget.
- Si les bacs à sable sélectionnent une RuntimeClass, vérifiez auprès de l’administrateur de votre cluster qu’elle déclare une map
overhead.podFixednon vide. Un runtime sans surcharge doit déclarer explicitement des valeurs nulles. Ce paramètre n’est pas nécessaire pour les bacs à sable sans RuntimeClass.
Identifier l’exécuteur et les libellés de Nœud
Identifiez l’exécuteur à mettre à jour ainsi que les libellés de Nœud à utiliser dans vos sélecteurs de budget. Listez les exécuteurs disponibles :[CLUSTER-ID] par l’ID de votre cluster CoreWeave Kubernetes Service (CKS) :
[RUNNER-ID] par l’identifiant de l’exécuteur et [KUBE-CONTEXT] par son contexte Kubernetes :
Utilisez les clés et les valeurs de libellés présentes dans votre cluster.
Un sélecteur de budget sélectionne des Nœuds Kubernetes. Il ne sélectionne pas les groupes d’exécuteurs d’API et ne remplace ni les contraintes de placement des sandboxes, ni les taints, ni les tolérances, ni les RuntimeClasses.
Créer une configuration de budget
Enregistrez l’un des exemples suivants dans le fichiernode-budget.json.
Commencez par "mode": "prepare". La préparation publie les ressources de budget. L’application est activée lors d’une étape ultérieure.
95 % du CPU et de la mémoire sur chaque nœud
Un sélecteur vide correspond à tous les nœuds.0 et 100. Une valeur de 0 correspond à une capacité de sandbox nulle.
50 % uniquement sur certains Node Pools
Cette configuration sélectionne les Nœuds de l’un ou l’autre de deux Node Pools. Remplacez[BATCH-POOL] et [INTERACTIVE-POOL] par les valeurs de label de ces Node Pools :
managedNodes.selector reçoivent un budget de sandbox nul. Une fois l’application activée, les bacs à sable qui nécessitent des jetons de budget ne peuvent plus utiliser ces Nœuds.
Prévisualisez la sélection :
Budgets différents pour les Node Pools et les groupes personnalisés
Cette configuration définit les budgets suivants :- 95 % du CPU et de la mémoire par défaut.
- 50 % du CPU et de la mémoire pour les Nœuds du Node Pool
[CPU-POOL]. - 25 % du CPU et 40 % de la mémoire pour les Nœuds portant le label
[BUDGET-GROUP-LABEL]=[TRAINING-GROUP].
[CPU-POOL] par la valeur du label du Node Pool. Remplacez [BUDGET-GROUP-LABEL] par une clé de label personnalisée et [TRAINING-GROUP] par sa valeur.
- Un remplacement correspondant remplace les pourcentages par défaut.
- Si plusieurs remplacements correspondent, le pourcentage minimum de chaque dimension l’emporte.
- L’ordre des règles n’établit aucune priorité.
- Tout chevauchement est signalé par
selector_conflict. Privilégiez des groupes disjoints si le chevauchement n’est pas voulu. - Les entrées de
matchLabelset les expressions distinctes doivent toutes correspondre. - Les valeurs d’une même expression
Insont des alternatives.
50 % sur des nœuds spécifiques
Remplacez[HOSTNAME-A] et [HOSTNAME-B] par les valeurs de l’étiquette kubernetes.io/hostname relevées sur les nœuds que vous souhaitez sélectionner :
Appliquer la configuration
Stockez la configuration sous forme destring JavaScript Object Notation (JSON) dans le champ suivant :
BUDGET_FILE, puis réutilisez ce bloc :
spec.overrides est remplacé en tant qu’objet entier : vous devez donc conserver les champs situés au même niveau.
Pour CoreWeave Intelligent CLI v1.44.0, utilisez ce patch limité à l’environnement. L’ancien schéma de politique de cette version ne permet pas d’exporter intégralement les champs de nom d’hôte HTTPS renommés depuis les serveurs plus récents. Si vous réappliquez un document d’exécuteur complet, vous risquez donc de remplacer sa politique par des données incomplètes. Le patch précédent n’inclut ni ne modifie la politique.
Gardez les exports d’exécuteur privés et supprimez ensuite les fichiers temporaires :
Vérifier la préparation
La préparation publie les ressources étendues suivantes dans le statut du nœud :- Les bacs à sable existants déjà liés et dépourvus de jetons de budget sont déduits du budget publié jusqu’à ce qu’ils se terminent.
- D’autres charges de travail consomment des ressources physiques ; la capacité disponible pour les bacs à sable peut donc être inférieure au budget configuré.
- La consommation imputée aux bacs à sable inclut les conteneurs auxiliaires, les pics des conteneurs d’initialisation et la surcharge liée à la RuntimeClass.
- Les pourcentages de CPU et de mémoire ne servent pas à répartir la capacité GPU.
sandbox_runner_node_budget_policy expose les libellés mode et policy_hash. Vérifiez que chaque exécuteur du cluster signale mode="prepare" et une valeur policy_hash identique. Si vous n’avez pas accès à ces métriques, demandez à CoreWeave de vérifier l’état de préparation avant d’activer l’application des budgets.
Activer l’application
Une fois que la préparation est en bon état de santé, modifiez uniquement le mode :cwic sandbox runner describe "$RUNNER_ID" pour vérifier le déploiement de l’exécuteur, puis demandez à CoreWeave de confirmer que la transition d’admission du cluster est terminée. Cette transition détermine à quel moment le cluster commence à appliquer les budgets. Elle comprend le retrait des anciennes partitions, ainsi que la liaison ou l’arrêt des charges de travail en attente antérieures à l’application des budgets.
Pour vérifier l’application des budgets, procédez comme suit :
- Créez une petite sandbox sur chaque exécuteur.
- Vérifiez que les demandes de ressources de son Pod incluent les deux ressources de budget.
- Si vous effectuez un test de saturation contrôlé, vérifiez que les nouvelles allocations sont bloquées dès que le budget CPU ou le budget mémoire est épuisé.
- Supprimez les bacs à sable de test.
Configurer les runners gérés par Terraform
Si le runner est géré par Terraform, fusionnez le paramètrespec.overrides.env suivant dans sa ressource coreweave_sandbox_managed_runner existante :
prepare par enforce dans le fichier JSON, puis appliquez la modification Terraform correspondante.
Si l’exécuteur est géré par Terraform, effectuez vos modifications dans Terraform afin que les terraform apply ultérieurs conservent la configuration prévue.
Réduire les budgets ou modifier l’appartenance des Nœuds
Les Nœuds ne sont ni isolés (cordon) ni drainés automatiquement. Avant de réduire les pourcentages ou de modifier les sélecteurs ou les libellés d’une manière qui réduit la capacité, effectuez les étapes suivantes :- Isolez (cordon) les Nœuds concernés.
- Appliquez la configuration mise à jour à chaque exécuteur de ce cluster.
- Attendez la convergence du budget.
- Levez l’isolement (uncordon) des seuls Nœuds que vous avez isolés pour cette modification.