Créez des nœuds Amazon Linux sur AWS Outposts - 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 des nœuds Amazon Linux sur AWS Outposts

Cette rubrique décrit comment lancer des groupes Auto Scaling de nœuds Amazon Linux sur un Outpost enregistré auprès de votre EKS cluster Amazon. Le cluster peut se trouver sur AWS Cloud ou sur un avant-poste.

Prérequis
  • Un Outpost existant. Pour plus d'informations, consultez What is AWS Outposts.

  • Un EKS cluster Amazon existant. Pour déployer un cluster sur le AWS Cloud, voirCréation d'un EKS cluster Amazon. Pour déployer un cluster sur un Outpost, consultez Créez des EKS clusters Amazon locaux AWS Outposts pour une haute disponibilité.

  • Supposons que vous créez vos nœuds dans un cluster sur le AWS Cloud et que vous ayez des sous-réseaux Région AWS là où vous avez activé AWS Outposts les AWS Wavelength Zones AWS Locales. Alors, ces sous-réseaux ne doivent pas avoir été transmis lors de la création de votre cluster. Si vous créez vos nœuds dans un cluster sur un Outpost, vous devez avoir transmis un sous-réseau Outpost lors de la création de votre cluster.

  • (Recommandé pour les clusters sur le AWS Cloud) Le Amazon VPC CNI plugin for Kubernetes module complémentaire configuré avec son propre IAM rôle auquel la IAM politique nécessaire est attachée. Pour de plus amples informations, veuillez consulter Configurer le VPC CNI plugin Amazon à utiliser IRSA. Les clusters locaux ne prennent pas en charge IAM les rôles pour les comptes de service.

Vous pouvez créer un groupe de nœuds Amazon Linux autogéré avec eksctl ou AWS Management Console (avec un AWS CloudFormation modèle). Vous pouvez également utiliser Terraform.

eksctl
Prérequis

Version 0.189.0 ou ultérieure de l'outil de ligne de commande eksctl installée sur votre appareil ou AWS CloudShell. Pour installer ou mettre à jour eksctl, veuillez consulter Installation dans la documentation de eksctl.

Pour lancer des nœuds Linux autogérés à l'aide de eksctl
  1. Si votre cluster se trouve sur le AWS Cloud et que la CNIpolitique gérée par Amazon EKS _ IAM _Policy y est attachéeRô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. Si votre cluster se trouve sur votre Outpost, la politique doit être associée à votre rôle de nœud.

  2. La commande suivante crée un groupe de nœuds dans un cluster existant. Le cluster doit avoir été créé à l'aide d'eksctl. Remplacer al-nodes avec un nom pour 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. Remplacez my-cluster par le nom de votre cluster. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne doit pas dépasser 100 caractères. Le nom doit être unique dans le Région AWS et dans Compte AWS lequel vous créez le cluster. Si votre cluster existe sur un Outpost, remplacez id par l'ID d'un sous-réseau Outpost. Si votre cluster existe sur le AWS Cloud, remplacez-le id par l'ID d'un sous-réseau que vous n'avez pas spécifié lors de la création de votre cluster. Remplacez instance-type par un type d'instance pris en charge par votre Outpost. Remplacez les valeurs de example values restantes par vos propres valeurs. Par défaut, les nœuds sont créés avec la même version de Kubernetes que le plan de contrôle.

    Remplacez instance-type par un type d'instance disponible sur votre Outpost.

    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. 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 plus d'informations, consultez les paires de EC2 clés Amazon dans le guide de EC2 l'utilisateur Amazon.

    Créez votre groupe de nœuds avec la commande suivante.

    eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \ --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false --node-volume-type gp2 --subnet-ids subnet-id

    Si votre cluster est déployé sur AWS Cloud :

    Pour voir la liste complète des options disponibles et des valeurs par défaut, consultez AWS Outposts Support dans la documentation eksctl.

    Si les nœuds ne parviennent pas à rejoindre le cluster, consultez Les nœuds ne parviennent pas à joindre le cluster dans Résoudre les problèmes liés aux EKS clusters et aux nœuds Amazon et Impossible de joindre des nœuds à un cluster dans Résoudre les problèmes liés aux EKS clusters Amazon locaux sur AWS Outposts.

    L'exemple qui suit illustre un résultat. Plusieurs lignes sont affichées pendant la création des nœuds. L'une des dernières lignes de sortie est similaire à la ligne d'exemple suivante.

    [✔]  created 1 nodegroup(s) in cluster "my-cluster"
  3. (Facultatif) Déployez un exemple d'application pour tester votre cluster et les nœuds Linux.

AWS Management Console
Étape 1 : Pour lancer des nœuds Amazon Linux autogérés à l'aide du AWS Management Console
  1. Téléchargez la dernière version du AWS CloudFormation modèle.

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
  2. Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.

  3. Choisissez Create stack (Créer une pile), puis sélectionnez Avec de nouvelles ressources (standard).

  4. Pour Spécifier un modèle, sélectionnez Upload a template file (Télécharger un fichier de modèle), puis sélectionnez Choose file (Choisir un fichier). Sélectionnez le fichier amazon-eks-nodegroup.yaml que vous avez téléchargé à une étape précédente, puis sélectionnez Next (Suivant).

  5. Dans la page Specify stack details (Spécifier les détails de la pile), saisissez les paramètres suivants, puis choisissez Next (Suivant) :

    • Nom de la pile : choisissez un nom pour votre pile AWS CloudFormation . Par exemple, vous pouvez l'appeler al-nodes. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne doit pas dépasser 100 caractères. Le nom doit être unique dans le Région AWS et dans Compte AWS lequel vous créez le cluster.

    • ClusterName: Entrez le nom de votre cluster. Si ce nom ne correspond pas à celui de votre cluster, vos nœuds ne peuvent pas rejoindre le cluster.

    • ClusterControlPlaneSecurityGroup: Choisissez la SecurityGroupsvaleur à partir de la AWS CloudFormation sortie que vous avez générée lorsque vous avez créé votre VPC.

      Les étapes suivantes montrent une opération permettant de récupérer le groupe applicable.

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

      2. Choisissez le nom du cluster.

      3. Choisissez l'onglet Networking (Mise en réseau).

      4. Utilisez la valeur Groupes de sécurité supplémentaires comme référence lorsque vous effectuez une sélection ClusterControlPlaneSecurityGroupdans la liste déroulante.

    • NodeGroupName: Entrez le nom de votre groupe de nœuds. Ce nom peut être utilisé ultérieurement pour identifier le groupe de nœuds Auto Scaling qui est créé pour vos nœuds.

    • NodeAutoScalingGroupMinSize: Entrez le nombre minimum de nœuds que votre groupe Auto Scaling de nœuds peut atteindre.

    • NodeAutoScalingGroupDesiredCapacity: Entrez le nombre de nœuds que vous souhaitez atteindre lors de la création de votre pile.

    • NodeAutoScalingGroupMaxSize: Entrez le nombre maximum de nœuds que votre groupe Auto Scaling de nœuds peut atteindre.

    • NodeInstanceType: Choisissez un type d'instance pour vos nœuds. Si votre cluster s'exécute sur le AWS Cloud, pour plus d'informations, consultezChoisissez un type d'instance de EC2 nœud Amazon optimal. Si votre cluster s'exécute sur un Outpost, vous ne pouvez sélectionner qu'un type d'instance disponible sur votre Outpost.

    • NodeImageIdSSMParam: prérempli avec le paramètre Amazon EC2 Systems Manager d'un Amazon récent EKS optimisé AMI pour une Kubernetes version variable. Pour utiliser une autre version Kubernetes mineure prise en charge par AmazonEKS, 1.XX remplacez-la par une autre version compatible. Nous vous recommandons de spécifier la même version de Kubernetes que celle de votre cluster.

      Pour utiliser l'accélérateur EKS optimisé pour AmazonAMI, remplacez-le amazon-linux-2 paramazon-linux-2-gpu. Pour utiliser le bras EKS optimisé pour AmazonAMI, remplacez-le amazon-linux-2 paramazon-linux-2-arm64.

      Note

      Le EKS nœud Amazon AMI est basé sur Amazon Linux. Vous pouvez suivre les événements liés à la sécurité ou à la confidentialité d'Amazon Linux 2 sur le site Amazon Linux Security Center ou vous abonner au RSSflux 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.

    • NodeImageId: (Facultatif) Si vous utilisez votre propre option personnalisée AMI (au lieu de celle EKS optimisée pour AmazonAMI), entrez un AMI ID de nœud pour votre Région AWS. Si vous spécifiez une valeur ici, elle remplace toutes les valeurs du NodeImageIdSSMParamchamp.

    • NodeVolumeSize: Spécifiez une taille de volume racine pour vos nœuds, en GiB.

    • NodeVolumeType: Spécifiez un type de volume racine pour vos nœuds.

    • KeyName: Entrez le nom d'une paire de EC2 SSH clés Amazon que vous pourrez utiliser pour vous connecter à vos nœuds après leur lancement. SSH 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 plus d'informations, consultez les paires de EC2 clés Amazon dans le guide de EC2 l'utilisateur Amazon.

      Note

      Si vous ne fournissez pas de paire de clés ici, la création de la AWS CloudFormation pile échoue.

    • BootstrapArguments: Il existe plusieurs arguments facultatifs que vous pouvez transmettre à vos nœuds. Pour de plus amples informations, veuillez consulter Utilisation du script d'amorçage sur GitHub. Si vous ajoutez des nœuds à un cluster EKS local Amazon AWS Outposts (sur lequel s'exécutent les instances du plan de Kubernetes contrôle AWS Outposts) et que le cluster ne dispose pas de connexion Internet d'entrée et de sortie (également appelée clusters privés), vous devez fournir les arguments bootstrap suivants (sur une seule ligne).

      --b64-cluster-ca ${CLUSTER_CA} --apiserver-endpoint https://${APISERVER_ENDPOINT} --enable-local-outpost true --cluster-id ${CLUSTER_ID}
    • D isableIMDSv 1 : Par défaut, chaque nœud prend en charge les versions 1 du service de métadonnées d'instance (IMDSv1) etIMDSv2. Vous pouvez le désactiverIMDSv1. Pour empêcher les futurs nœuds et Pods les membres du groupe de nœuds de l'utiliserIMDSv1, définissez isableIMDSvD1 sur true. Pour plus d'informationsIMDS, consultez la section Configuration du service de métadonnées d'instance. Pour plus d'informations sur la façon d'en restreindre l'accès sur vos nœuds, consultez Restreindre l'accès au profil d'instance affecté au composant master.

    • VpcId: Entrez l'ID du VPCque vous avez créé. Avant de choisir unVPC, passez en revueVPCexigences et considérations.

    • Sous-réseaux : si votre cluster se trouve sur un avant-poste, choisissez au moins un sous-réseau privé dans votre. VPC Avant de choisir les sous-réseaux, consultez Exigences et considérations requises pour les sous-réseaux. Vous pouvez consulter les sous-réseaux privés en ouvrant le lien de chaque sous-réseau depuis l'onglet Networking (Mise en réseau) de votre cluster.

  6. Sélectionnez les choix que vous souhaitez sur la page Configure stack options (Configurer les options de la pile), puis choisissez Next (Suivant).

  7. Cochez la case à gauche de Je reconnais que cela AWS CloudFormation pourrait créer des IAM ressources. , puis choisissez Create stack.

  8. Lorsque la création de votre pile est terminée, sélectionnez la pile dans la console et choisissez Outputs (Sorties).

  9. Enregistrez le NodeInstanceRolepour le groupe de nœuds créé. Vous en avez besoin lorsque vous configurez vos EKS nœuds Amazon.

Étape 2 : pour autoriser les nœuds à rejoindre votre cluster
  1. Vérifiez si vous avez déjà appliqué le ConfigMap aws-auth.

    kubectl describe configmap -n kube-system aws-auth
  2. Si vous voyez un ConfigMap aws-auth, mettez-le à jour si nécessaire.

    1. Ouvrez le ConfigMap pour le modifier.

      kubectl edit -n kube-system configmap/aws-auth
    2. Ajoutez une nouvelle entrée mapRoles si nécessaire. Définissez la rolearn valeur sur la NodeInstanceRolevaleur que vous avez enregistrée lors de la procédure précédente.

      [...] data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes [...]
    3. Enregistrez le fichier et quittez votre éditeur de texte.

  3. Si vous avez reçu un message d'erreur indiquant « Error from server (NotFound): configmaps "aws-auth" not found », appliquez le stock ConfigMap.

    1. Téléchargez la mappe de configuration.

      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
    2. Dans le aws-auth-cm.yaml fichier, définissez la rolearn NodeInstanceRolevaleur que vous avez enregistrée lors de la procédure précédente. Pour ce faire, utilisez un éditeur de texte ou remplacez my-node-instance-role et exécutez la commande suivante :

      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
    3. Appliquez la configuration. L'exécution de cette commande peut prendre quelques minutes.

      kubectl apply -f aws-auth-cm.yaml
  4. Observez le statut de vos nœuds et attendez qu'ils obtiennent le statut Ready.

    kubectl get nodes --watch

    Saisissez Ctrl+C pour revenir à une invite de shell.

    Note

    Si vous recevez d'autres erreurs concernant les types d'autorisations ou de ressources, consultez Accès non autorisé ou refusé (kubectl) dans la rubrique relative à la résolution des problèmes.

    Si les nœuds ne parviennent pas à rejoindre le cluster, consultez Les nœuds ne parviennent pas à joindre le cluster dans Résoudre les problèmes liés aux EKS clusters et aux nœuds Amazon et Impossible de joindre des nœuds à un cluster dans Résoudre les problèmes liés aux EKS clusters Amazon locaux sur AWS Outposts.

  5. Installez le EBS CSI pilote Amazon. Pour plus d'informations, consultez la section Installation sur GitHub. Dans la section Configurer l'autorisation du pilote, assurez-vous de suivre les instructions relatives à l'option Utiliser le profil d'IAMinstance. Vous devez utiliser la classe de stockage gp2. La classe de stockage gp3 n'est pas prise en charge.

    Pour créer une classe de stockage gp2 sur votre cluster, suivez les étapes suivantes.

    1. Exécutez la commande ci-dessous pour créer un fichiergp2-storage-class.yaml.

      cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF
    2. Appliquez le manifeste à votre cluster.

      kubectl apply -f gp2-storage-class.yaml
  6. (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
Étape 3 : actions supplémentaires
  1. (Facultatif) Déployez un exemple d'application pour tester votre cluster et les nœuds Linux.

  2. Si votre cluster est déployé sur un Outpost, ignorez cette étape. Si votre cluster est déployé sur le AWS Cloud, les informations suivantes sont facultatives. Si la CNIpolitique gérée par Amazon EKS _ IAM _Policy est attaché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.