Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Recette : empêcher la planification de pods sur des nœuds spécifiques
Présentation
Les nœuds dotés de processeurs spécialisés, tels que les GPU, peuvent être plus coûteux à exploiter que les nœuds sur des machines standard. Pour protéger ces nœuds des charges de travail qui ne nécessitent pas de matériel spécial, vous pouvez utiliser les rejets Kubernetes. Les rejets marquent les nœuds afin de repousser les pods qui ne disposent pas de tolérances correspondantes, garantissant ainsi que seules les charges de travail compatibles sont planifiées. Pour plus d’informations, consultez Rejets et tolérances
Les taints de nœuds Kubernetes peuvent être appliqués à des groupes de nœuds gérés, nouveaux ou existants, à l'aide de AWS Management Console ou de l'API Amazon EKS. Cette recette montre comment appliquer des rejets à des groupes de nœuds gérés Amazon EKS à l’aide de l’AWS CLI. Pour plus d'informations sur la création d'un groupe de nœuds avec un rejet à l'aide de la AWS Management Console, consultez Création d’un groupe de nœuds gérés pour votre cluster.
Prérequis
-
AWS CLI installé et configuré avec les autorisations appropriées.
Étapes
Étape 1 : créer un groupe de nœuds avec des rejets
Utilisez la commande aws eks create-nodegroup pour créer un nouveau groupe de nœuds gérés avec des rejets. Cet exemple applique un rejet avec la clé dedicated, la valeur gpuGroup et l’effet NO_SCHEDULE.
aws eks create-nodegroup \ --cli-input-json ' { "clusterName": "my-cluster", "nodegroupName": "node-taints-example", "subnets": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890", "subnet-021345abcdef67890" ], "nodeRole": "arn:aws:iam::111122223333:role/AmazonEKSNodeRole", "taints": [ { "key": "dedicated", "value": "gpuGroup", "effect": "NO_SCHEDULE" } ] }'
Pour plus d’informations et d’exemples, consultez rejet
Étape 2 : mettre à jour les rejets sur un groupe de nœuds existant
Utilisez la commande AWS CLI aws eks update-nodegroup-config pour ajouter, supprimer ou remplacer des rejets pour les groupes de nœuds gérés.
aws eks update-nodegroup-config --cluster-name my-cluster --nodegroup-name node-taints-example --taints 'removeTaints=[{key=dedicated,value=gpuGroup,effect=NO_SCHEDULE}]'
Remarques
-
Les rejets peuvent être mis à jour après avoir créé le groupe de nœuds à l'aide de l'API
UpdateNodegroupConfig. -
La clé de rejet doit commencer par une lettre ou un chiffre. Il peut contenir des lettres, des chiffres, des traits d'union (
-), des points (.) et des traits de soulignement (_). Il peut comporter jusqu'à 63 caractères. -
Éventuellement, la clé de rejet peut commencer par un préfixe de sous-domaine DNS et un simple
/. Si elle commence par un préfixe de sous-domaine DNS, elle peut comporter 253 caractères. -
La valeur est facultative et doit commencer par une lettre ou un chiffre. Il peut contenir des lettres, des chiffres, des traits d'union (
-), des points (.) et des traits de soulignement (_). Il peut comporter jusqu'à 63 caractères. -
Lorsque vous utilisez directement Kubernetes ou la AWS Management Console, l’effet du rejet doit être
NoSchedule,PreferNoScheduleouNoExecute. Cependant, lorsque vous utilisez l’AWS CLI ou l’API, l’effet de rejet doit êtreNO_SCHEDULE,PREFER_NO_SCHEDULEouNO_EXECUTE. -
Un maximum de 50 rejets est autorisé pour un groupe de nœuds.
-
Si les rejets créés à l’aide d’un groupe de nœuds gérés sont supprimés manuellement d’un nœud, Amazon EKS ne les ajoute pas à nouveau au nœud. Ceci est vrai même si les rejets sont spécifiés dans la configuration du groupe de nœuds gérés.