AMI Amazon Linux optimisées pour Amazon EKS - Amazon EKS

AMI Amazon Linux optimisées pour Amazon EKS

L'AMI Amazon Linux optimisée pour Amazon EKS est conçue sur la base d'Amazon Linux 2, et est configurée pour servir d'image de base pour les nœuds Amazon EKS. L'AMI est configurée pour fonctionner avec Amazon EKS et elle comprend les composants suivants :

  • kubelet

  • Authentification IAM AWS

  • Docker (Version Amazon EKS 1.23 et version antérieure)

  • containerd

Note
  • Vous pouvez suivre les évènements de sécurité et de confidentialité pour Amazon Linux 2 via le centre de sécurité Amazon Linux ou souscrire au flux RSS associé. Les événements de sécurité et de confidentialité incluent une présentation du problème, les packages concernés et la manière de mettre à jour vos instances pour résoudre le problème.

  • Avant de déployer une AMI accélérée ou Arm, consultez les informations se trouvant dans AMI Amazon Linux accélérée optimisée pour Amazon EKS et AMI Amazon Linux Arm optimisées pour Amazon EKS.

  • Vous pouvez utiliser un indicateur d'amorçage facultatif pour activer l'environnement d'exécution containerd pour les AMI Amazon Linux 2 optimisées par Amazon EKS. Cette fonctionnalité offre une voie claire pour migrer vers containerd lors de la mise à jour vers la version 1.24 ou ultérieure. Amazon EKS a mis fin à la prise en charge de Docker à partir du lancement de la version 1.24 de Kubernetes. L'environnement d'exécution containerd est largement adopté par la communauté Kubernetes et est un projet gradué de la CNCF. Vous pouvez le tester en ajoutant un groupe de nœuds à un cluster nouveau ou existant. Pour de plus amples informations, consultez Activez l'indicateur d'amorçage d'exécution containerd.

  • À partir de la version Kubernetes 1.28, vous ne pourrez plus utiliser les instances P2 Amazon EC2 avec les instances AMI Amazon Linux accélérées et optimisées pour Amazon EKS prêtes à l'emploi. Ces AMI pour les versions Kubernetes 1.28 ou ultérieures prendront en charge les pilotes NVIDIA de la série 525 ou ultérieurs, qui sont incompatibles avec les instances P2. Toutefois, les pilotes NVIDIA de la série 525 ou ultérieurs sont compatibles avec les instances P3, P4 et P5, ce qui vous permet d'utiliser ces instances avec les instances AMI pour la version Kubernetes 1.28 ou ultérieure. Avant la mise à niveau de vos clusters Amazon EKS vers la version 1.28, migrez toutes les instances P2 vers les instances P3, P4 et P5. Vous devez également mettre à jour vos applications de manière proactive pour qu'elles fonctionnent avec les pilotes NVIDIA de la série 525 ou ultérieure.

Activez l'indicateur d'amorçage d'exécution containerd

L'AMI Amazon Linux 2 optimisée pour Amazon EKS contient un indicateur d'amorçage en option pour activer l'exécution containerd. Cette fonctionnalité fournit une voie claire pour migrer vers containerd. Amazon EKS a mis fin à la prise en charge de Docker à partir du lancement de la version 1.24 de Kubernetes. Pour de plus amples informations, consultez Amazon EKS a mis fin à la prise en charge de Dockershim.

Vous pouvez activer l'indicateur d'amorçage en créant l'un des types de groupes de nœuds suivants.

Autogéré

Créez le groupe de nœuds à l'aide des instructions contenues dans Lancement de nœuds Amazon Linux autogérés. Spécifiez une AMI optimisée pour Amazon EKS et le texte suivant pour le paramètre BootstrapArguments.

--container-runtime containerd
Gérées

Si vous utilisez eksctl, créez un fichier nommé my-nodegroup.yaml avec le contenu suivant. Remplacez chaque example value par vos propres valeurs. Le nom du groupe de nœuds ne peut pas dépasser 63 caractères. Il doit commencer par une lettre ou un chiffre, mais peut également inclure des tirets et des traits de soulignement pour les autres caractères. Pour récupérer un ID d'AMI optimisée pour ami-1234567890abcdef0, veuillez consulter la rubrique Récupération des ID d'AMI Amazon Linux optimisées pour Amazon EKS.

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: 1.23 managedNodeGroups: - name: my-nodegroup ami: ami-1234567890abcdef0 overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh my-cluster --container-runtime containerd
Note

Si vous lancez de nombreux nœuds simultanément, vous pouvez également spécifier des valeurs pour le --apiserver-endpoint, --b64-cluster-ca, et les arguments bootstrap d'amorçage --dns-cluster-ip pour éviter les erreurs. Pour de plus amples informations, consultez Spécification d'une AMI.

Exécutez les commandes suivantes pour créer le groupe de nœuds.

eksctl create nodegroup -f my-nodegroup.yaml

Si vous préférez utiliser un autre outil pour créer votre groupe de nœuds gérés, vous devez déployer le groupe de nœuds à l'aide d'un modèle de lancement. Dans votre modèle de lancement, spécifiez un ID d'AMI optimisée pour Amazon EKS, puis déployez le groupe de nœuds avec un modèle de lancement et fournissez les données utilisateur suivantes. Ces données utilisateur transmettent des arguments dans le fichier bootstrap.sh. Pour plus d'informations sur le fichier d'amorçage, consultez bootstrap.sh sur GitHub.

/etc/eks/bootstrap.sh my-cluster --container-runtime containerd

AMI Amazon Linux accélérée optimisée pour Amazon EKS

L'AMI Amazon Linux accéléré optimisé pour Amazon EKS est construit sur l'AMI Amazon Linux standard optimisé pour Amazon EKS. Elle est configurée pour servir d'image optionnelle pour les nœuds Amazon EKS afin de prendre en charge les charges de travail basées sur le GPU et l'Inferentia.

Outre la configuration de l'AMI standard optimisée pour Amazon EKS, l'AMI accélérée inclut les éléments suivants :

  • Pilotes NVIDIA

  • L'environnement d'exécution nvidia-container-runtime (par défaut)

  • Conteneur d'environnement d'exécution AWS Neuron

Note
  • L'AMI accélérée optimisée pour Amazon EKS ne prend en charge que les types d'instance basés sur GPU et Inferentia. Veillez à spécifier ces types d'instance dans votre modèle AWS CloudFormation de nœud. En utilisant l'AMI accélérée optimisée pour Amazon EKS vous acceptez le Contrat de licence de l'utilisateur final NVIDIA (CLUF).

  • L'AMI accélérée optimisée pour Amazon EKS était auparavant appelée AMI optimisée pour Amazon EKS avec prise en charge du GPU.

  • Les versions précédentes de l'AMI accélérée optimisée pour Amazon EKS ont installé le référentiel nvidia-docker. Le référentiel n'est plus inclus dans l'AMI Amazon EKS version v20200529 et ultérieure.

Pour activer des applications basées sur GPU

La procédure suivante décrit comment exécuter une application sur une instance GPU avec l'AMI accélérée optimisée pour Amazon EKS. Pour les autres options, consultez les références suivantes :

  1. Une fois vos nœuds GPU ajoutés à votre cluster, vous devez mettre en œuvre le plugin de périphérique NVIDIA pour Kubernetes en tant que DaemonSet sur votre cluster. Remplacez vX.X.X par la version NVIDIA/k8s-device-plugin souhaitée avant d'exécuter la commande suivante.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/nvidia-device-plugin.yml
  2. Vous pouvez vérifier que vos nœuds ont des GPU répartis avec la commande suivante.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"
Pour déployer un Pod pour tester que vos nœuds GPU sont configurés correctement
  1. Créez un fichier nommé nvidia-smi.yaml avec les contenus suivants. Remplacez tag par la balise souhaitée pour nvidia/cuda. Ce manifeste lance un conteneur NVIDIA CUDA qui exécute nvidia-smi sur un nœud.

    apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: nvidia-smi image: nvidia/cuda:tag args: - "nvidia-smi" resources: limits: nvidia.com/gpu: 1
  2. Appliquez le manifeste ci-dessus avec la commande suivante.

    kubectl apply -f nvidia-smi.yaml
  3. Une fois que le Pod n'est plus en cours d'exécution, affichez ses journaux à l'aide de la commande suivante.

    kubectl logs nvidia-smi

    L'exemple qui suit illustre un résultat.

    Mon Aug 6 20:23:31 20XX +-----------------------------------------------------------------------------+ | NVIDIA-SMI XXX.XX Driver Version: XXX.XX | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 | | N/A 46C P0 47W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+

AMI Amazon Linux Arm optimisées pour Amazon EKS

Les instances Arm apportent des économies significatives en termes de coût et sont bien adaptées aux applications dimensionnables et basées sur Arm, telles que serveurs web, microservices conteneurisés, flottes de cache et magasins de données distribuées. Lorsque vous ajoutez des nœuds Arm à votre cluster, passez en revue les considérations suivantes.

Considérations
  • Si votre cluster a été déployé avant le 17 août 2020, vous devez effectuer une mise à niveau unique des manifestes des modules complémentaires critiques du cluster. Ceci afin que Kubernetes puisse extraire l'image correcte pour chaque architecture matérielle utilisée dans votre cluster. Pour plus d'informations sur la mise à jour des modules complémentaires de clusters, consultez Mise à jour de la version Kubernetes de votre cluster Amazon EKS . Si vous avez déployé votre cluster le 17 août 2020 ou après cette date, vos modules complémentaires CoreDNS, kube-proxy, et Amazon VPC CNI plugin for Kubernetes sont déjà compatibles avec plusieurs architectures.

  • Les applications déployées sur les nœuds Arm doivent être compilées pour Arm.

  • Vous ne pouvez pas utiliser le Pilote CSI Amazon FSx pour Lustre avec Arm.

  • Si vous avez déployé des DaemonSets dans un cluster existant, ou si vous souhaitez les déployer dans un nouveau cluster dans lequel vous souhaitez également déployer des nœuds Arm, vérifiez que votre DaemonSet peut s'exécuter sur toutes les architectures matérielles de votre cluster.

  • Vous pouvez exécuter des groupes de nœuds Arm et des groupes de nœuds x86 dans le même cluster. Si vous procédez de la sorte, envisagez de déployer des images de conteneur multi-architecture dans un référentiel de conteneurs tel qu'Amazon Elastic Container Registry, puis d'ajouter des sélecteurs de nœuds à vos manifestes afin que Kubernetes connaisse l'architecture matérielle dans laquelle un Pod peut être déployé. Pour de plus amples informations, consultez Transmission d'une image multi-architecture dans le Guide de l'utilisateur Amazon ECR et l'article de blog Présentation d'images de conteneurs multi-architectures pour Amazon ECR.

En savoir plus

Pour plus d'informations sur l'utilisation d'AMI Amazon Linux optimisées pour Amazon EKS, veuillez consulter les sections suivantes :