Création d'un pool de nœuds pour le 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 sur 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.

Création d'un pool de nœuds pour le mode automatique EKS

Les pools de nœuds Amazon EKS constituent un moyen flexible de gérer les ressources de calcul de votre cluster Kubernetes. Cette rubrique explique comment créer et configurer des pools de nœuds à l'aide de Karpenter, un outil de provisionnement de nœuds qui permet d'optimiser le dimensionnement des clusters et l'utilisation des ressources. Avec les NodePool ressources de Karpenter, vous pouvez définir des exigences spécifiques pour vos ressources de calcul, notamment les types d'instances, les zones de disponibilité, les architectures et les types de capacité.

Vous ne pouvez pas modifier les pools intégrés system et les pools de general-purpose nœuds. Vous pouvez uniquement les activer ou les désactiver. Pour de plus amples informations, veuillez consulter Activer ou désactiver la fonction intégrée NodePools.

La NodePool spécification permet un contrôle précis des ressources de calcul de votre cluster EKS grâce à diverses étiquettes et exigences prises en charge. Il s'agit notamment des options permettant de spécifier les catégories d' EC2 instances, les configurations du processeur, les zones de disponibilité, les architectures (ARM64/AMD64) et les types de capacité (ponctuel/à la demande). Vous pouvez également définir des limites de ressources pour l'utilisation du processeur et de la mémoire, afin de garantir que votre cluster respecte les limites opérationnelles souhaitées.

Le mode automatique d'EKS utilise des étiquettes Kubernetes bien connues pour fournir des méthodes cohérentes et standardisées d'identification des caractéristiques des nœuds. Ces labels, tels que ceux topology.kubernetes.io/zone pour les zones de disponibilité et kubernetes.io/arch pour l'architecture du processeur, suivent les conventions Kubernetes établies. En outre, les étiquettes spécifiques à EKS (préfixées pareks.amazonaws.com/) étendent cette fonctionnalité avec des attributs AWS spécifiques tels que les types d'instances, les fabricants de processeurs, les capacités du GPU et les spécifications réseau. Ce système d'étiquetage standardisé permet une intégration parfaite avec les outils Kubernetes existants tout en fournissant une intégration approfondie de l'infrastructure. AWS

Créez un NodePool

Suivez ces étapes pour créer un cluster Amazon EKS NodePool pour votre cluster Amazon EKS :

  1. Créez un fichier YAML portant le nom nodepool.yaml de la NodePool configuration souhaitée. Vous pouvez utiliser l'exemple de configuration ci-dessous.

  2. Appliquez le NodePool à votre cluster :

    kubectl apply -f nodepool.yaml
  3. Vérifiez que le NodePool a été créé avec succès :

    kubectl get nodepools
  4. (Facultatif) Surveillez l' NodePool état :

    kubectl describe nodepool default

Assurez-vous que votre NodePool référence est valide NodeClass et existe dans votre cluster. NodeClass définit des AWS configurations spécifiques pour vos ressources de calcul. Pour de plus amples informations, veuillez consulter Création d'une classe de nœuds pour Amazon EKS.

Exemple NodePool

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: my-node-pool spec: template: metadata: labels: billing-team: my-team spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m", "r"] - key: "eks.amazonaws.com/instance-cpu" operator: In values: ["4", "8", "16", "32"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a", "us-west-2b"] - key: "kubernetes.io/arch" operator: In values: ["arm64", "amd64"] limits: cpu: "1000" memory: 1000Gi

Étiquettes compatibles avec le mode automatique EKS

Le mode automatique EKS prend en charge les labels bien connus suivants.

Étiquette exemple Description

topology.kubernetes.io/zone

us-east-2a

AWS région

node.kubernetes.io/instance-type

g4dn.8xlarge

AWS type d'instance

kubernetes.io/arch

amd64

Les architectures sont définies par les valeurs GOARCH sur l'instance

karpenter.sh/capacity type

place

Les types de capacité incluent : spot on-demand

eks.amazonaws.com/instance-hypervisor

nitro

Types d'instances utilisant un hyperviseur spécifique

eks.amazonaws.com/compute-type

auto

Identifie les nœuds gérés en mode automatique EKS

eks.amazonaws.com/ - pris instance-encryption-in-transit en charge

true

Types d'instances prenant en charge (ou non) le chiffrement en transit

eks.amazonaws.com/instance-category

g

Types d'instances de la même catégorie, généralement la chaîne précédant le numéro de génération

eks.amazonaws.com/instance-generation

4

Numéro de génération du type d'instance dans une catégorie d'instance

eks.amazonaws.com/instance-family

g4dn

Types d'instances présentant des propriétés similaires mais des quantités de ressources différentes

eks.amazonaws.com/instance-size

8xlarge

Types d'instances présentant des quantités de ressources similaires mais des propriétés différentes

eks.amazonaws.com/instance-cpu

32

Numéro de CPUs sur l'instance

eks.amazonaws.com/ instance-cpu-manufacturer

aws

Nom du fabricant du processeur

eks.amazonaws.com/instance-memory

131072

Nombre de mégaoctets de mémoire sur l'instance

eks.amazonaws.com/ instance-ebs-bandwidth

9500

Nombre maximal de mégabits d'EBS disponibles sur l'instance

eks.amazonaws.com/ instance-network-bandwidth

131072

Nombre de mégabits de référence disponibles sur l'instance

eks.amazonaws.com/ instance-gpu-name

t4

Nom du GPU de l'instance, s'il est disponible

eks.amazonaws.com/ instance-gpu-manufacturer

nvidia

Nom du fabricant du GPU

eks.amazonaws.com/ instance-gpu-count

1

Numéro de GPUs sur l'instance

eks.amazonaws.com/ instance-gpu-memory

16384

Nombre de mégaoctets de mémoire sur le GPU

eks.amazonaws.com/ instance-local-nvme

900

Nombre de gibioctets de stockage NVME local sur l'instance

Note

Le mode automatique d'EKS ne prend en charge que certaines instances et impose des exigences de taille minimale. Pour de plus amples informations, veuillez consulter Référence d'instance prise en charge par EKS Auto Mode.

Étiquettes EKS Auto non prises en charge

Le mode automatique EKS ne prend pas en charge les libellés suivants.

  • Le mode automatique d'EKS ne fonctionne que sous Linux

    • node.kubernetes.io/windows-build

    • kubernetes.io/os

Désactiver les pools de nœuds intégrés

Si vous créez des pools de nœuds personnalisés, vous pouvez désactiver les pools de nœuds intégrés. Pour de plus amples informations, veuillez consulter Activer ou désactiver la fonction intégrée NodePools.

Cluster sans pools de nœuds intégrés

Vous pouvez créer un cluster sans les pools de nœuds intégrés. Cela est utile lorsque votre organisation a créé des pools de nœuds personnalisés.

Vue d'ensemble :

  1. Créez un cluster EKS avec les deux nodePools et nodeRoleArn les valeurs vides.

  2. Création d'une classe de nœud personnalisée avec un rôle de nœud ARN

  3. Créez une entrée d'accès pour la classe de nœud personnalisée

  4. Créez un pool de nœuds personnalisé, comme décrit ci-dessus.

Perturbation

Vous pouvez configurer le mode automatique d'EKS pour perturber les nœuds NodePool de différentes manières. Vous pouvez utiliser spec.disruption.consolidationPolicyspec.disruption.consolidateAfter, ouspec.template.spec.expireAfter. Vous pouvez également limiter le taux d'interruption du mode automatique EKS par le biais NodePool spec.disruption.budgets de Vous pouvez également contrôler les fenêtres temporelles et le nombre de nœuds interrompus simultanément. Pour obtenir des instructions sur la configuration de ce comportement, consultez la section Interruption dans la documentation de Karpenter.

Vous pouvez configurer les interruptions pour les pools de nœuds afin de :

  • Identifiez les cas de sous-utilisation des instances et consolidez les charges de travail.

  • Créez un budget d'interruption du pool de nœuds afin de limiter le taux de terminaison des nœuds en raison de la dérive, du vide et de la consolidation.

Par défaut, mode automatique EKS :

  • Consolide les instances sous-utilisées.

  • Met fin aux instances au bout de 720 heures.

  • Définit un budget d'interruption unique de 10 % des nœuds.