View a markdown version of this page

Contrôle du déploiement d’une charge de travail sur les nœuds du mode automatique EKS - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Contrôle du déploiement d’une charge de travail sur les nœuds du mode automatique EKS

Lors de l’exécution de charges de travail dans un cluster EKS utilisant le mode automatique EKS, il peut être nécessaire de contrôler si certaines charges de travail doivent s’exécuter sur des nœuds du mode automatique EKS ou sur d’autres types de calcul. Cette section explique comment utiliser des sélecteurs de nœuds et des règles d’affinité pour garantir que vos charges de travail soient planifiées sur l’infrastructure de calcul souhaitée.

Les exemples de cette rubrique montrent comment utiliser l’étiquette eks.amazonaws.com/compute-type pour imposer ou empêcher le déploiement d’une charge de travail sur les nœuds du mode automatique EKS. Cette approche est particulièrement utile dans les clusters en mode mixte, où vous utilisez à la fois le mode automatique EKS et d’autres types de calcul, tels que les fournisseurs Karpenter autogérés ou les groupes de nœuds gérés par EKS.

Les nœuds du mode automatique EKS définissent l’étiquette eks.amazonaws.com/compute-type sur auto. Vous pouvez utiliser cette étiquette pour contrôler si une charge de travail est déployée sur des nœuds gérés par le mode automatique EKS.

Exiger qu'une charge de travail soit déployée sur les nœuds EKS Auto Mode

Note

Cette valeur nodeSelector n’est pas obligatoire pour le mode automatique EKS. Cette valeur nodeSelector n’est pertinente que si vous exécutez un cluster en mode mixte, avec des types de nœuds non gérés par le mode automatique EKS. Par exemple, un cluster peut combiner une capacité de calcul statique fournie par les groupes de nœuds gérés par EKS et une capacité dynamique fournie par le mode automatique EKS.

Vous pouvez ajouter ce nodeSelector aux déploiements ou à d’autres charges de travail afin d’indiquer à Kubernetes à les planifier exclusivement sur des nœuds du mode automatique EKS.

apiVersion: apps/v1 kind: Deployment spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: auto

Exiger qu'aucune charge de travail ne soit déployée sur les nœuds EKS Auto Mode

Vous pouvez ajouter ce nodeAffinity aux déploiements ou à d’autres charges de travail afin d’indiquer à Kubernetes de ne pas les planifier sur des nœuds du mode automatique EKS.

affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - auto

Ciblez un objectif spécifique NodePool

Un cluster Amazon EKS Auto Mode peut en avoir plusieurs NodePool. Vous souhaiterez peut-être qu'une charge de travail ne s'exécute que sur les nœuds d'un nœud en particulier NodePool. Pour ce faire, les charges de travail peuvent correspondre à l'une des étiquettes suivantes :

  • Une étiquette personnalisée que vous définissez sur le NodePool. Lorsque vous ajoutez des étiquettes spec.template.metadata.labels sous un NodePool, le mode automatique Amazon EKS applique ces étiquettes à chaque nœud NodePool provisionné. Les étiquettes personnalisées constituent l'approche recommandée. Une étiquette personnalisée associe la charge de travail à une fonctionnalité, par exempleworkload-class: gpu-inference, plutôt qu'à un NodePool nom spécifique.

  • Le célèbre karpenter.sh/nodepool label. Amazon EKS Auto Mode applique cette étiquette à chaque nœud qu'il approvisionne, en utilisant le nom de NodePool comme valeur. Utilisez cette étiquette lorsque vous n'avez pas défini d'étiquette personnalisée et que vous souhaitez cibler une étiquette NodePool par son nom.

Ciblez une NodePool étiquette personnalisée

Tout d'abord, définissez une étiquette sur le NodePool.

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu spec: template: metadata: labels: workload-class: gpu-inference

Pour plus d'informations sur NodePool la configuration, consultezCréation d’un pool de nœuds pour le mode automatique EKS.

Ensuite, faites correspondre cette étiquette à la charge de travail.

apiVersion: apps/v1 kind: Deployment metadata: name: inference spec: template: spec: nodeSelector: workload-class: gpu-inference

Les pods de ce calendrier de déploiement sont uniquement destinés aux nœuds qu'il met à gpu NodePool disposition. Les charges de travail qui ne le sont pas nodeSelector continuent de s'exécuter par défaut NodePool.

Ciblez un NodePool par son nom

NodePool les changements de nom affectent la planification

L'épinglage d'une charge de travail par son nom peut laisser les pods dans Pending cet état si vous renommez ou supprimez la cible. NodePool Utilisez une étiquette de fonctionnalité personnalisée pour toute charge de travail dont vous pensez qu'elle durera plus longtemps qu'une seule NodePool définition.

apiVersion: apps/v1 kind: Deployment spec: template: spec: nodeSelector: karpenter.sh/nodepool: <your-nodepool-name>

Pour plus d'informations sur la façon dont Karpenter associe les pods aux pods NodePools, consultez la section Planification dans la documentation de Karpenter.