Créez un groupe de nœuds gérés pour votre cluster - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

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éez un groupe de nœuds gérés pour votre cluster

Cette rubrique décrit comment lancer des groupes de nœuds EKS gérés par Amazon qui s'enregistrent auprès de votre EKS cluster Amazon. Une fois que les nœuds ont rejoint le cluster, vous pouvez y déployer des applications Kubernetes.

Si c'est la première fois que vous lancez un groupe de nœuds EKS géré par Amazon, nous vous recommandons de suivre plutôt l'un de nos Commencez avec Amazon EKS guides. Les guides fournissent des instructions détaillées pour créer un EKS cluster Amazon avec des nœuds.

Important
Prérequis

Vous pouvez créer un groupe de nœuds gérés avec eksctl ou la AWS Management Console.

eksctl
Pour créer un groupe de nœuds gérés eksctl

Cette procédure nécessite eksctl version 0.189.0 ou ultérieure. Vous pouvez vérifier votre version avec la commande suivante :

eksctl version

Pour les instructions d'installation ou de mise à niveau de eksctl, consultez la rubrique Installation dans la documentation eksctl.

  1. (Facultatif) Si la CNIpolitique gérée Amazon EKS _ IAM _Policy est associée à votre politiqueRôle IAM de nœud Amazon EKS, nous vous recommandons de l'attribuer à un IAM rôle que vous associez plutôt au compte de Kubernetes aws-node service. Pour de plus amples informations, veuillez consulter Configurer le VPC CNI plugin Amazon à utiliser IRSA.

  2. Créez un groupe de nœuds gérés avec ou sans modèle de lancement personnalisé. La spécification manuelle d'un modèle de lancement permet une plus grande personnalisation d'un groupe de nœuds. Par exemple, cela peut permettre de déployer une personnalisation AMI ou de fournir des arguments au boostrap.sh script dans un script EKS optimisé pour AmazonAMI. Pour obtenir la liste complète de toutes les options disponibles et des valeurs par défaut, saisissez la commande suivante.

    eksctl create nodegroup --help

    Dans la commande suivante, remplacez my-cluster par le nom de votre cluster et remplacez my-mng par le nom de votre groupe de nœuds. 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.

    Important

    Si vous n'utilisez pas de modèle de lancement personnalisé lors de la première création d'un groupe de nœuds gérés, n'en utilisez pas un ultérieurement pour ce groupe de nœuds. Si vous n'avez pas spécifié de modèle de lancement personnalisé, le système génère automatiquement un modèle de lancement que nous ne vous recommandons pas de modifier manuellement. La modification manuelle de ce modèle de lancement généré automatiquement peut entraîner des erreurs.

    Sans modèle de lancement

    eksctlcrée un modèle de EC2 lancement Amazon par défaut dans votre compte et déploie le groupe de nœuds à l'aide d'un modèle de lancement créé en fonction des options que vous spécifiez. Avant de spécifier une valeur pour --node-type, consultez Choisissez un type d'instance de EC2 nœud Amazon optimal.

    Remplacez ami-family par un mot clé autorisé. Pour plus d'informations, consultez la section Configuration de la AMI famille de nœuds dans la eksctl documentation. my-keyRemplacez-le par le nom de votre paire de EC2 clés Amazon ou de votre clé publique. Cette clé est utilisée pour SSH accéder à vos nœuds après leur lancement.

    Note

    Car Windows cette commande ne s'active pasSSH. Il associe plutôt votre paire de EC2 clés Amazon à l'instance et vous permet RDP d'y accéder.

    Si vous ne possédez pas encore de paire de EC2 clés Amazon, vous pouvez en créer une dans le AWS Management Console. Pour Linux plus d'informations, consultez les paires de EC2 clés et Linux instances Amazon dans le guide de EC2 l'utilisateur Amazon. Pour Windows plus d'informations, consultez les paires de EC2 clés et Windows instances Amazon dans le guide de EC2 l'utilisateur Amazon.

    Nous vous recommandons de bloquer l'Podaccès à IMDS si les conditions suivantes sont réunies :

    • Vous prévoyez d'attribuer IAM des rôles à tous vos comptes de Kubernetes service afin de Pods ne disposer que des autorisations minimales dont ils ont besoin.

    • Aucun Pods membre du cluster n'a besoin d'accéder au service de métadonnées d'EC2instance Amazon (IMDS) pour d'autres raisons, telles que la récupération du courant Région AWS.

    Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.

    Si vous souhaitez bloquer Pod l'accès àIMDS, ajoutez l'--disable-pod-imdsoption à la commande suivante.

    eksctl create nodegroup \ --cluster my-cluster \ --region region-code \ --name my-mng \ --node-ami-family ami-family \ --node-type m5.large \ --nodes 3 \ --nodes-min 2 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key my-key

    Vos instances peuvent éventuellement attribuer un nombre nettement plus élevé d'adresses IP àPods, attribuer des adresses IP Pods provenant d'un CIDR bloc différent de celui de l'instance et être déployées sur un cluster sans accès à Internet. Pour plus d'informations, consultez Attribuez davantage d'adresses IP aux EKS nœuds Amazon avec des préfixes, Déploiement pods dans des sous-réseaux alternatifs avec mise en réseau personnalisée et Déployez des clusters privés avec un accès Internet limité pour connaître les options supplémentaires à ajouter à la commande précédente.

    Les groupes de nœuds gérés calculent et appliquent une valeur unique pour le nombre maximum de Pods pouvant s'exécuter sur chaque nœud de votre groupe de nœuds, en fonction du type d'instance. Si vous créez un groupe de nœuds avec différents types d'instances, la plus petite valeur calculée sur tous les types d'instances est appliquée comme nombre maximal de Pods pouvant s'exécuter sur chaque type d'instance du groupe de nœuds. Les groupes de nœuds gérés calculent la valeur à l'aide du script référencé dans Maximum EKS recommandé par Amazon Pods pour chaque type d'EC2instance Amazon.

    Avec modèle de lancement

    Le modèle de lancement doit déjà exister et répondre aux exigences spécifiées dans Concepts de base de la configuration d'un modèle de lancement.

    Nous vous recommandons de bloquer l'Podaccès à IMDS si les conditions suivantes sont réunies :

    • Vous prévoyez d'attribuer IAM des rôles à tous vos comptes de Kubernetes service afin de Pods ne disposer que des autorisations minimales dont ils ont besoin.

    • Aucun Pods membre du cluster n'a besoin d'accéder au service de métadonnées d'EC2instance Amazon (IMDS) pour d'autres raisons, telles que la récupération du courant Région AWS.

    Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.

    Si vous souhaitez bloquer Pod l'accès àIMDS, spécifiez les paramètres nécessaires dans le modèle de lancement.

    1. Copiez les contenus suivants sur votre appareil. Remplacez les example values puis exécutez la commande modifiée pour créer le fichier eks-nodegroup.yaml. Plusieurs paramètres que vous spécifiez lors d'un déploiement sans modèle de lancement sont déplacés dans le modèle de lancement. Si vous ne spécifiez pas de version, la version par défaut est utilisée.

      cat >eks-nodegroup.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code managedNodeGroups: - name: my-mng launchTemplate: id: lt-id version: "1" EOF

      Pour obtenir la liste complète des paramètres du fichier de configuration eksctl, consultez Schéma de fichier de configuration dans la documentation eksctl. Vos instances peuvent éventuellement attribuer un nombre nettement plus élevé d'adresses IP àPods, attribuer des adresses IP à Pods partir d'un CIDR bloc différent de celui de l'instance, utiliser le containerd runtime et être déployées sur un cluster sans accès Internet sortant. Pour plus d'informations, consultez Attribuez davantage d'adresses IP aux EKS nœuds Amazon avec des préfixes, Déploiement pods dans des sous-réseaux alternatifs avec mise en réseau personnalisée, Testez la migration d'Amazon Linux 2 de Docker vers containerd et Déployez des clusters privés avec un accès Internet limité pour connaître les options supplémentaires à ajouter au fichier de configuration.

      Si vous n'avez pas spécifié d'AMIidentifiant dans votre modèle de lancement, les groupes de nœuds gérés calculent et appliquent une valeur unique pour le nombre maximum de nœuds Pods pouvant être exécutés sur chaque nœud de votre groupe de nœuds, en fonction du type d'instance. Si vous créez un groupe de nœuds avec différents types d'instances, la plus petite valeur calculée sur tous les types d'instances est appliquée comme nombre maximal de Pods pouvant s'exécuter sur chaque type d'instance du groupe de nœuds. Les groupes de nœuds gérés calculent la valeur à l'aide du script référencé dans Maximum EKS recommandé par Amazon Pods pour chaque type d'EC2instance Amazon.

      Si vous avez spécifié un AMI identifiant dans votre modèle de lancement, spécifiez le nombre maximum d'identifiants Pods pouvant être exécutés sur chaque nœud de votre groupe de nœuds si vous utilisez un réseau personnalisé ou si vous souhaitez augmenter le nombre d'adresses IP attribuées à votre instance. Pour de plus amples informations, veuillez consulter Maximum EKS recommandé par Amazon Pods pour chaque type d'EC2instance Amazon.

    2. Déployez le groupe de nœuds avec la commande suivante.

      eksctl create nodegroup --config-file eks-nodegroup.yaml
AWS Management Console
Pour créer un groupe de nœuds géré à l'aide du AWS Management Console
  1. Attendez que le statut de votre cluster s'affiche soit ACTIVE. Vous ne pouvez pas créer un groupe de nœuds gérés pour un cluster qui n'est pas déjà ACTIVE.

  2. Ouvrez la EKS console Amazon à l'adresse https://console.aws.amazon.com/eks/home#/clusters.

  3. Choisissez le nom du cluster dans lequel vous souhaitez créer un groupe de nœuds gérés.

  4. Sélectionner l'onglet Calcul.

  5. Choisissez Ajouter un groupe de nœuds.

  6. Sur la page Configurer un groupe de nœuds, définissez les paramètres en conséquence, puis choisissez Next (Suivant).

    • Nom : saisissez un nom unique pour votre groupe de nœuds gérés. 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.

    • IAMRôle de nœud : choisissez le rôle d'instance de nœud à utiliser avec votre groupe de nœuds. Pour de plus amples informations, veuillez consulter Rôle IAM de nœud Amazon EKS.

      Important
      • Vous ne pouvez pas utiliser le même rôle que celui utilisé pour créer des clusters.

      • Nous vous recommandons d'utiliser un rôle qui n'est pas actuellement utilisé par un groupe de nœuds autogérés. Sinon, vous prévoyez de l'utiliser avec un nouveau groupe de nœuds autogérés. Pour de plus amples informations, veuillez consulter Supprimer un groupe de nœuds gérés de votre cluster.

    • Utiliser le modèle de lancement : (facultatif) choisissez si vous souhaitez utiliser un modèle de lancement existant. Sélectionnez un Nom de modèle de lancement. Sélectionnez ensuite une Version du modèle de lancement. Si vous ne sélectionnez aucune version, Amazon EKS utilise la version par défaut du modèle. Les modèles de lancement permettent de personnaliser davantage votre groupe de nœuds, par exemple en vous permettant de déployer un module personnaliséAMI, d'attribuer un nombre nettement plus élevé d'adresses IPPods, d'attribuer des adresses IP Pods provenant d'un CIDR bloc différent de celui de l'instance, d'activer le containerd runtime pour vos instances et de déployer des nœuds sur un cluster sans accès Internet sortant. Pour plus d'informations, consultez Attribuez davantage d'adresses IP aux EKS nœuds Amazon avec des préfixes, Déploiement pods dans des sous-réseaux alternatifs avec mise en réseau personnalisée, Testez la migration d'Amazon Linux 2 de Docker vers containerd et Déployez des clusters privés avec un accès Internet limité.

      Le modèle de lancement doit répondre aux exigences décrites dans Personnalisez les nœuds gérés avec des modèles de lancement. Si vous n'utilisez pas votre propre modèle de lancement, Amazon EKS API crée un modèle de EC2 lancement Amazon par défaut dans votre compte et déploie le groupe de nœuds à l'aide du modèle de lancement par défaut.

      Si vous implémentez IAMdes rôles pour les comptes de service, Pod que vous attribuez les autorisations nécessaires directement à tous ceux qui ont besoin d'accéder aux AWS services et qu'aucun membre de votre cluster n'Podsen a besoin IMDS pour d'autres raisons, telles que la récupération du courant Région AWS, vous pouvez également désactiver l'accès à IMDS ceux Pods qui n'utilisent pas le réseau hôte dans un modèle de lancement. Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.

    • Étiquettes Kubernetes : (facultatif) vous pouvez choisir d'appliquer des étiquettes Kubernetes aux nœuds de votre groupe de nœuds gérés.

    • Rejets Kubernetes : (facultatif) vous pouvez choisir d'appliquer des rejets Kubernetes aux nœuds de votre groupe de nœuds gérés. Les options disponibles dans le menu Effet sont NoSchedule, NoExecute, et PreferNoSchedule. Pour de plus amples informations, veuillez consulter PodsEmpêcher d'être planifié sur des nœuds spécifiques.

    • Balises — (Facultatif) Vous pouvez choisir de baliser votre groupe de nœuds EKS géré par Amazon. Ces identifications ne se propagent pas aux autres ressources du groupe de nœuds, telles que les groupes ou instances Auto Scaling. Pour de plus amples informations, veuillez consulter Organisez les EKS ressources Amazon à l'aide de balises.

  7. Sur la page Définir la configuration de calcul et de mise à l'échelle, définissez les paramètres en conséquence, puis choisissez Next (Suivant).

    • AMItype — Sélectionnez un AMI type. Si vous déployez des instances Arm, veillez à tenir compte des considérations contenues dans Amazon a EKS optimisé Arm Amazon Linux AMIs avant le déploiement.

      Si vous avez spécifié un modèle de lancement sur la page précédente et que vous en avez spécifié un AMI dans le modèle de lancement, vous ne pouvez pas sélectionner de valeur. La valeur du modèle s'affiche. Les AMI informations spécifiées dans le modèle doivent répondre aux exigences duSpécifier un AMI.

    • Type de capacité : sélectionnez un type de capacité. Pour plus d'informations sur le choix d'un type de capacité, consultez Types de capacité des groupes de nœuds gérés. Vous ne pouvez pas combiner différents types de capacités au sein d'un même groupe de nœuds. Si vous souhaitez utiliser les deux types de capacités, créez des groupes de nœuds distincts, chacun avec son propre type de capacité et d'instance.

    • Types d'instance : par défaut, un ou plusieurs types d'instances sont spécifiés. Pour supprimer un type d'instance par défaut, sélectionnez la croix (X) sur le côté droit du type d'instance. Choisissez les types d'instances à utiliser dans votre groupe de nœuds gérés. Pour de plus amples informations, veuillez consulter Choisissez un type d'instance de EC2 nœud Amazon optimal.

      La console affiche un ensemble de types d'instances couramment utilisés. Si vous devez créer un groupe de nœuds géré avec un type d'instance qui n'est pas affichéeksctl, utilisez le AWS CLI AWS CloudFormation, ou an SDK pour créer le groupe de nœuds. Si vous avez spécifié un modèle de lancement à la page précédente, vous ne pouvez pas sélectionner une valeur car le type d'instance doit être spécifié dans le modèle de lancement. La valeur du modèle de lancement s'affiche. Si vous avez sélectionné Spot pour le type de capacité, nous vous recommandons de spécifier plusieurs types d'instances pour améliorer la disponibilité.

    • Taille du disque : saisissez la taille du disque (en GiB) à utiliser pour le volume racine du nœud.

      Si vous avez spécifié un modèle de lancement à la page précédente, vous ne pouvez pas sélectionner une valeur, car elle doit être spécifiée dans le modèle de lancement.

    • Taille souhaitée : spécifiez le nombre actuel de nœuds que le groupe de nœuds gérés doit conserver au lancement.

      Note

      Amazon EKS ne fait pas automatiquement évoluer votre groupe de nœuds vers l'intérieur ou vers l'extérieur. Cependant, vous pouvez configurer le Cluster Autoscaler Kubernetes pour qu'il le fasse pour vous.

    • Taille minimale : spécifiez le nombre minimal de nœuds vers lequel le groupe de nœuds gérés peut être mis à l'échelle.

    • Taille maximale : spécifiez le nombre maximal de nœuds vers lequel le groupe de nœuds gérés peut être mis à niveau.

    • Configuration des mises à jour du groupe : (facultatif) vous pouvez sélectionner le nombre ou le pourcentage de nœuds à mettre à jour en parallèle. Ces nœuds seront indisponibles pendant la mise à jour. Pour Maximum non disponible, sélectionnez l'une des options suivantes et spécifiez une valeur :

      • Nombre : sélectionnez et spécifiez le nombre de nœuds de votre groupe de nœuds pouvant être mis à jour en parallèle.

      • Pourcentage : sélectionnez et spécifiez le pourcentage de nœuds de votre groupe de nœuds pouvant être mis à jour en parallèle. Cela est pratique si votre groupe de nœuds contient de nombreux nœuds.

  8. Sur la page Spécifier les détails, définissez les paramètres en conséquence, puis choisissez Next (Suivant).

    • Sous-réseaux : choisissez les sous-réseaux dans lesquels vous souhaitez lancer vos nœuds gérés.

      Important

      Si vous exécutez une application dynamique dans plusieurs zones de disponibilité soutenues par des EBS volumes Amazon et que vous utilisez le KubernetesFaites évoluer le calcul en cluster avec Karpenter et Cluster Autoscaler, vous devez configurer plusieurs groupes de nœuds, chacun étant limité à une seule zone de disponibilité. En outre, vous devez activer la fonction --balance-similar-node-groups.

      Important
      • Si vous choisissez un sous-réseau public et que seul le point de terminaison API du serveur public est activé sur votre cluster, le sous-réseau doit être MapPublicIPOnLaunch configuré sur true pour que les instances puissent rejoindre correctement un cluster. Si le sous-réseau a été créé à l'aide eksctl des EKS AWS CloudFormation modèles Amazon vendus le 26 mars 2020 ou après cette date, ce paramètre est déjà défini sur. true Si les sous-réseaux ont été créés avec les AWS CloudFormation modèles eksctl ou avant le 26 mars 2020, vous devez modifier le paramètre manuellement. Pour plus d'informations, consultez Modification de l'attribut d'adressage IPv4 public de votre sous-réseau.

      • Si vous utilisez un modèle de lancement et que vous spécifiez plusieurs interfaces réseau, Amazon EC2 n'attribuera pas automatiquement d'IPv4adresse publique, même si elle MapPublicIpOnLaunch est définie sur. true Pour que les nœuds rejoignent le cluster dans ce scénario, vous devez soit activer le point de terminaison du API serveur privé du cluster, soit lancer des nœuds dans un sous-réseau privé avec un accès Internet sortant fourni via une autre méthode, telle qu'une NAT passerelle. Pour plus d'informations, consultez la section Adressage IP des EC2 instances Amazon dans le guide de EC2 l'utilisateur Amazon.

    • Configurez l'SSHaccès aux nœuds (facultatif). L'activation vous SSH permet de vous connecter à vos instances et de recueillir des informations de diagnostic en cas de problème. Nous vous recommandons vivement d'activer l'accès à distance lorsque vous créez un groupe de nœuds. Vous ne pouvez pas activer l'accès distant une fois le groupe de nœuds créé.

      Si vous avez choisi d'utiliser un modèle de lancement, cette option n'est pas affichée. Pour autoriser l'accès à distance pour vos noeuds, spécifiez une paire de clés dans le modèle de lancement et assurez-vous que le port approprié est ouvert aux nœuds des groupes de sécurité que vous spécifiez dans le modèle de lancement. Pour de plus amples informations, veuillez consulter Utilisation des groupes de sécurité.

      Note

      Car Windows cette commande ne s'active pasSSH. Il associe plutôt votre paire de EC2 clés Amazon à l'instance et vous permet RDP d'y accéder.

    • Pour SSHla paire de clés (facultatif), choisissez une EC2 SSH clé Amazon à utiliser. Pour Linux plus d'informations, consultez les paires de EC2 clés et Linux instances Amazon dans le guide de EC2 l'utilisateur Amazon. Pour Windows plus d'informations, consultez les paires de EC2 clés et Windows instances Amazon dans le guide de EC2 l'utilisateur Amazon. Si vous avez choisi d'utiliser un modèle de lancement, vous ne pouvez pas en sélectionner un. Lorsqu'une EC2 SSH clé Amazon est fournie aux groupes de nœuds qui l'utilisent BottlerocketAMIs, le conteneur administratif est également activé. Pour plus d'informations, consultez Conteneur d'administration sur GitHub.

    • Pour Autoriser l'accès à SSH distance depuis, si vous souhaitez limiter l'accès à des instances spécifiques, sélectionnez les groupes de sécurité associés à ces instances. Si vous ne sélectionnez aucun groupe de sécurité spécifique, SSH l'accès est autorisé depuis n'importe où sur Internet (0.0.0.0/0).

  9. Sur la page Review and create (Vérifier et créer), vérifiez la configuration de votre groupe de nœuds gérés et choisissez Create (Créer).

    Si les nœuds ne parviennent pas à rejoindre le cluster, reportez-vous Les nœuds ne parviennent pas à joindre le cluster au chapitre Dépannage.

  10. Observez le statut de vos nœuds et attendez qu'ils obtiennent le statut Ready.

    kubectl get nodes --watch
  11. (GPUnœuds uniquement) Si vous avez choisi un type d'GPUinstance et que Amazon a EKS optimisé l'AMIaccélérateur, vous devez appliquer le plug-in de l'NVIDIAappareil Kubernetes en tant que tel DaemonSet sur votre cluster. vX.X.XRemplacez-le par la s-device-plugin version NVIDIA/k8 de votre choix avant d'exécuter la commande suivante.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml

Maintenant que vous disposez d'un EKS cluster Amazon fonctionnel avec des nœuds, vous êtes prêt à commencer à installer des Kubernetes modules complémentaires et à déployer des applications sur votre cluster. Les rubriques suivantes de la documentation vous aideront à étendre les fonctionnalités de votre cluster.