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

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.

Création d’un groupe de nœuds gérés pour votre cluster

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

Si vous créez un groupe de nœuds gérés par Amazon EKS pour la première fois, nous vous recommandons plutôt de suivre l’un des guides dans Mise en route avec Amazon EKS. Ces guides fournissent des procédures détaillées pour créer un cluster Amazon EKS avec des nœuds.

Important

Vous pouvez créer un groupe de nœuds gérés avec l’une des options suivantes :

eksctl

Création d’un groupe de nœuds gérés avec eksctl

Cette procédure nécessite eksctl version 0.214.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 politique IAM gérée AmazonEKS_CNI_Policy est attachée à votre rôle IAM de nœud Amazon EKS, nous recommandons de l’attribuer plutôt à un rôle IAM associé au compte de service aws-node Kubernetes. Pour de plus amples informations, consultez Configuration du plug-in Amazon VPC CNI pour 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 AMI personnalisée ou de fournir des arguments au script boostrap.sh dans une AMI optimisée par Amazon EKS. 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 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 création initiale d’un groupe de nœuds gérés, n’en utilisez pas plus tard 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 qu’il n’est pas recommandé 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

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

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

Note

Pour Windows, cette commande n’active pas SSH. Elle associe votre key pair Amazon EC2 à l'instance et vous permet d'accéder à l'instance.

Si vous n’avez pas encore de paire de clés Amazon EC2, vous pouvez en créer une dans AWS Management Console. Pour plus d’informations Linux, consultez Paires de clés Amazon EC2 et instances Linux dans le Guide de l’utilisateur Amazon EC2. Pour plus d’informations Windows, consultez Paires de clés Amazon EC2 et instances Windows dans le Guide de l’utilisateur Amazon EC2.

Nous recommandons de bloquer l’accès des pods à IMDS si les conditions suivantes sont remplies :

  • Vous prévoyez d’attribuer des rôles IAM à tous vos comptes de service Kubernetes, afin que les pods ne disposent que des permissions strictement nécessaires.

  • Aucun pod du cluster n’a besoin d’accéder au service de métadonnées d’instance (IMDS) Amazon EC2 pour d’autres raisons, comme la récupération de la région AWS actuelle.

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

Si vous souhaitez bloquer l’accès des pods à IMDS, ajoutez l’option --disable-pod-imds à 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 significativement plus élevé d’adresses IP aux pods, attribuer des adresses IP aux pods à partir d’un bloc CIDR différent de celui de l’instance, et être déployées dans un cluster sans accès Internet. Pour plus d'informations, consultez Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes, Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé et Déployer 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 qui peuvent fonctionner 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 fonctionner sur chaque type d’instance du groupe de nœuds. Les groupes de nœuds gérés calculent cette valeur à l’aide du script référencé dans Nombre maximal recommandé de pods par type d’instance Amazon EC2 pour Amazon EKS.

Avec modèle de lancement

Le modèle de lancement doit déjà exister et satisfaire aux exigences précisées dans Principes de configuration du modèle de lancement. Nous recommandons de bloquer l’accès des pods à IMDS si les conditions suivantes sont remplies :

  • Vous prévoyez d’attribuer des rôles IAM à tous vos comptes de service Kubernetes, afin que les pods ne disposent que des permissions strictement nécessaires.

  • Aucun pod du cluster n’a besoin d’accéder au service de métadonnées d’instance (IMDS) Amazon EC2 pour d’autres raisons, comme la récupération de la région AWS actuelle.

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

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

  1. Copiez les contenus suivants sur votre appareil. Remplacez les exemples de valeur 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 du modèle 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 significativement plus élevé d’adresses IP aux pods, attribuer des adresses IP aux pods à partir d’un bloc CIDR différent de celui de l’instance, et être déployées dans un cluster sans accès Internet sortant. Pour plus d’informations, consultez Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes, Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé et Déployer des clusters privés avec un accès Internet limité, qui présentent des options supplémentaires à intégrer dans le fichier de configuration.

    Si vous n’avez pas spécifié d’ID AMI dans votre modèle de lancement, les groupes de nœuds gérés calculent et appliquent une valeur unique pour le nombre maximal de pods pouvant fonctionner sur chaque nœud du groupe, selon le 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 fonctionner sur chaque type d’instance du groupe de nœuds. Les groupes de nœuds gérés calculent cette valeur à l’aide du script référencé dans Nombre maximal recommandé de pods par type d’instance Amazon EC2 pour Amazon EKS.

    Si vous avez spécifié un ID AMI dans votre modèle de lancement, indiquez le nombre maximal de pods pouvant fonctionner sur chaque nœud du groupe si vous utilisez le réseau personnalisé ou si vous souhaitez augmenter le nombre d’adresses IP attribuées à votre instance. Pour de plus amples informations, consultez Nombre maximal de pods recommandé par Amazon EKS pour chaque type d'instance Amazon EC2.

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

    eksctl create nodegroup --config-file eks-nodegroup.yaml

AWS Management Console

Création d’un groupe de nœuds gérés à l’aide de la 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 console Amazon EKS.

  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.

    • Rôle IAM de nœud : choisissez le rôle d'instance de nœud à utiliser avec votre groupe de nœuds. Pour de plus amples informations, consultez 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, consultez 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 pas de 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 une AMI personnalisée, d’attribuer un nombre nettement plus élevé d’adresses IP aux pods, d’attribuer aux pods des adresses IP provenant d’un bloc CIDR différent de celui de l’instance et de déployer des nœuds dans un cluster sans accès Internet sortant. Pour plus d’informations, consultez Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes, Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé et Déployer des clusters privés avec un accès Internet limité.

      Le modèle de lancement doit satisfaire aux exigences présentées dans Personnalisation des nœuds gérés avec des modèles de lancement. Si vous n’utilisez pas votre propre modèle de lancement, l’API Amazon EKS crée un modèle de lancement Amazon EC2 par défaut dans votre compte et déploie le groupe de nœuds en utilisant ce modèle par défaut.

      Si vous mettez en œuvre des rôles IAM pour les comptes de service, que vous attribuez directement aux pods les autorisations nécessaires pour accéder aux services AWS, et qu’aucun pod de votre cluster ne nécessite l’accès à IMDS pour d’autres raisons, comme extraire la région AWS en cours, alors vous pouvez également désactiver l’accès IMDS pour les pods ne recourant pas au réseau de l’hôte, via un modèle de lancement. Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.

    • Labels Kubernetes : (facultatif) vous pouvez choisir d'appliquer des labels 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, consultez Recette : empêcher la planification de pods sur des nœuds spécifiques.

    • Identifications : (facultatif) vous pouvez choisir d'identifier votre groupe de nœuds gérés Amazon EKS. Ces balises ne se propagent pas aux autres ressources du groupe de nœuds, comme les groupes Auto Scaling ou les instances. Pour de plus amples informations, consultez Organiser les ressources Amazon EKS à 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).

    • Type d’AMI : sélectionnez un type d’AMI. Si vous déployez des instances Arm, assurez-vous de consulter les considérations décrites dans AMI Amazon Linux optimisées Arm pour Amazon EKS avant le déploiement.

      Si vous avez spécifié un modèle de lancement à l’étape précédente et que vous y avez indiqué une AMI, vous ne pouvez pas sélectionner une autre valeur. La valeur du modèle s'affiche. L’AMI spécifiée dans le modèle doit satisfaire aux exigences décrites dans Spécification d’une 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. Pour plus d’informations sur le provisionnement et la mise à l’échelle des composants master accélérés par GPU, consultez Réservation de GPU pour les groupes de nœuds gérés.

    • 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, consultez Choix du type d’instance Amazon EC2 optimal pour les nœuds.

      La console affiche un ensemble de types d’instances couramment utilisés. Si vous devez créer un groupe de nœuds gérés avec un type d’instance qui n’apparaît pas, utilisez eksctl, la CLI AWS, AWS CloudFormation, ou un kit SDK pour créer le groupe de nœuds. Si vous avez spécifié un modèle de lancement à l’étape 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 Gio) à 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 n’augmente ni ne réduit pas automatiquement votre groupe de nœuds. Cependant, vous pouvez configurer l’outil Cluster Autoscaler de Kubernetes pour effectuer cette mise à l’échelle. Pour plus d'informations, consultez Cluster Autoscaler sur AWS.

    • 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.

    • Configuration de la réparation automatique des nœuds : (facultatif) Si vous cochez la case Activer la réparation automatique des nœuds, Amazon EKS remplacera automatiquement les nœuds lorsque des problèmes seront détectés. Pour de plus amples informations, consultez Activer la réparation automatique des nœuds et étudier les problèmes d’intégrité de ces derniers.

  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 avec état sur plusieurs zones de disponibilité, prise en charge par des volumes Amazon EBS et utilisant l’outil Cluster Autoscaler de Kubernetes, vous devez configurer plusieurs groupes de nœuds, chacun 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 du serveur d'API publique est activé, le paramètre MapPublicIPOnLaunch du sous-réseau doit avoir la valeur true pour que les instances rejoignent un cluster. Si le sous-réseau a été créé à l’aide d’eksctl ou des modèles AWS CloudFormation fournis par Amazon EKS le 26 mars 2020 ou après, alors ce paramètre est déjà défini sur true. Si les sous-réseaux ont été créés avec eksctl ou les modèles AWS CloudFormation 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 spécifiez plusieurs interfaces réseau, Amazon EC2 n’attribuera pas automatiquement d’adresse IPv4 publique, même si MapPublicIpOnLaunch est défini sur true. Pour que les nœuds puissent rejoindre le cluster dans ce scénario, vous devez soit activer le point de terminaison privé du serveur d’API du cluster, soit lancer les nœuds dans un sous-réseau privé avec un accès Internet sortant via une méthode alternative, comme une passerelle NAT. Pour plus d’informations, consultez Adressage IP des instances Amazon EC2 dans le Guide de l’utilisateur Amazon EC2.

    • Configurez l'accès SSH aux nœuds (facultatif). L'activation de SSH vous 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 à distance après la création du groupe de nœuds.

      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, consultez Utilisation des groupes de sécurité.

      Note

      Pour Windows, cette commande n’active pas SSH. Elle associe votre key pair Amazon EC2 à l'instance et vous permet d’accéder à l’instance.

    • Pour Paire de clés SSH (facultatif), choisissez une clé SSH Amazon EC2 à utiliser. Pour plus d’informations Linux, consultez Paires de clés Amazon EC2 et instances Linux dans le Guide de l’utilisateur Amazon EC2. Pour plus d’informations Windows, consultez Paires de clés Amazon EC2 et instances Windows dans le Guide de l’utilisateur Amazon EC2. Si vous avez choisi d’utiliser un modèle de lancement, vous ne pouvez pas en sélectionner un. Lorsqu'une clé SSH Amazon EC2 est fournie pour les groupes de nœuds utilisant les AMI Bottlerocket, le conteneur d'administration est également activé. Pour plus d'informations, consultez Conteneur d'administration sur GitHub.

    • Pour Autoriser l'accès à distance SSH 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 pas de groupes de sécurité spécifiques, alors l’accès SSH 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, consultez la section Les nœuds ne parviennent pas à joindre le cluster du chapitre Dépannage.

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

    kubectl get nodes --watch
  11. (Nœuds GPU uniquement) Si vous avez choisi un type d’instance GPU et une AMI Amazon EKS optimisée et accélérée, vous devez appliquer le plug-in NVIDIA pour Kubernetes sous forme de DaemonSet sur votre cluster. Remplacez vX.X.X par la version souhaitée du plug-in NVIDIA/k8s-device-plugin 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

Installation des modules complémentaires Kubernetes

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