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.
Vous souhaitez contribuer à ce guide de l'utilisateur ? Choisissez le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page. 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 qui s'enregistrent auprès de votre cluster Amazon EKS. Le cluster peut être sur le AWS cloud ou sur un avant-poste.
-
Un Outpost existant. Pour plus d'informations, consultez What is AWS Outposts.
-
Un cluster Amazon EKS existant. Pour déployer un cluster sur le AWS cloud, consultezCréation d'un cluster Amazon EKS. Pour déployer un cluster sur un Outpost, consultez Créez des clusters Amazon EKS locaux sur AWS Outposts pour une haute disponibilité.
-
Supposons que vous créiez vos nœuds dans un cluster sur le AWS Cloud et que vous disposiez de sous-réseaux dans la AWS région où AWS Outposts, AWS Wavelength ou Local AWS Zones sont activés. 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 rôle IAM auquel est attachée la politique IAM nécessaire. Pour de plus amples informations, veuillez consulter Configurer le plug-in Amazon VPC CNI pour utiliser IRSA. Les clusters locaux ne prennent pas en charge les rôles IAM 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
Vous pouvez créer un cluster local à l'aide des outils suivants décrits dans cette page :
eksctl
Pour lancer des nœuds Linux autogérés à l'aide de eksctl
-
Installez la version
0.199.0
ou une version ultérieure de l'outil de ligne deeksctl
commande installé sur votre appareil ou AWS CloudShell. Pour installer ou mettre à joureksctl
, veuillez consulter Installationdans la documentation de eksctl
. -
Si votre cluster se trouve AWS dans le cloud et que la politique IAM gérée par Amazoneks_CNI_Policy est attachée au rôle IAM de votre nœud Amazon EKS, nous vous recommandons de l'attribuer à un rôle IAM que vous associez au Kubernetes
aws-node
compte de service à la place. Pour de plus amples informations, veuillez consulter Configurer le plug-in Amazon VPC CNI pour utiliser IRSA. Si votre cluster se trouve sur votre Outpost, la politique doit être associée à votre rôle de nœud. -
La commande suivante crée un groupe de nœuds dans un cluster existant. Le cluster doit avoir été créé à l'aide d'
eksctl
. Remplaceral-nodes
avec un nom pour votre groupe de nœuds. Le nom du groupe de nœuds ne peut pas comporter plus de 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. Remplacezmy-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 au sein de la AWS région et du AWS compte dans lesquels vous créez le cluster. Si votre cluster existe sur un Outpost, remplacezid
par l'ID d'un sous-réseau Outpost. Si votre cluster existe dans le AWS cloud, remplacez-leid
par l'ID d'un sous-réseau que vous n'avez pas spécifié lors de la création de votre cluster. Remplacezinstance-type
par un type d'instance pris en charge par votre Outpost. Remplacez les valeurs deexample values
restantes par vos propres valeurs. Les nœuds sont créés avec le même Kubernetes version comme plan de contrôle, par défaut.Remplacez
instance-type
par un type d'instance disponible sur votre Outpost.my-key
Remplacez-le par le nom de votre paire de EC2 clés Amazon ou de votre clé publique. Cette clé est utilisée pour SSH dans 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 le AWS cloud :
-
Le groupe de nœuds que vous déployez peut attribuer
IPv4
des adresses à Pods d'un autre CIDR bloc supérieur à celui de l'instance. Pour de plus amples informations, veuillez consulter Déploiement Pods dans des sous-réseaux alternatifs avec mise en réseau personnalisée. -
Le groupe de nœuds que vous déployez ne nécessite pas d'accès Internet sortant. Pour de plus amples informations, veuillez consulter Déployez des clusters privés avec un accès Internet limité.
Pour une liste complète de toutes les options et valeurs par défaut disponibles, consultez AWS Outposts
Support eksctl
dans la documentation.-
Si les nœuds ne parviennent pas à rejoindre le cluster, consultez Les nœuds ne parviennent pas à joindre le cluster les sections Résolution des problèmes liés aux clusters et nœuds Amazon EKS et Résoudre les problèmes liés Impossible de joindre des nœuds à un cluster aux clusters Amazon EKS 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"
-
-
(Facultatif) Déployez un exemple d'application pour tester votre cluster et Linux nœuds.
AWS Management Console
Étape 1 : Lancez des nœuds Linux autogérés à l'aide AWS Management Console de `
-
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
-
Ouvrez la AWS CloudFormation console
. -
Choisissez Create stack (Créer une pile), puis sélectionnez Avec de nouvelles ressources (standard).
-
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). -
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 pile : Choisissez un nom de pile pour votre AWS CloudFormation pile. 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 au sein de la AWS région et du AWS compte dans lesquels vous créez le cluster. -
ClusterName: Entrez le nom de votre cluster. Si ce nom ne correspond pas au nom 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 lors de la création de votre VPC.
Les étapes suivantes montrent une opération permettant de récupérer le groupe applicable.
-
Ouvrez la console Amazon EKS
. -
Choisissez le nom du cluster.
-
Choisissez l'onglet Networking (Mise en réseau).
-
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 pourra être utilisé ultérieurement pour identifier le groupe de nœuds Auto Scaling 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'une récente AMI optimisée pour Amazon EKS pour une variable Kubernetes version. Pour utiliser un autre Kubernetes version mineure prise en charge par Amazon EKS, remplacez-la
1.XX
par une autre version prise en charge. Nous vous recommandons de spécifier le même Kubernetes version en tant que cluster.Pour utiliser une AMI accélérée optimisée pour Amazon EKS, remplacez-la
amazon-linux-2
paramazon-linux-2-gpu
. Pour utiliser une AMI Arm optimisée pour Amazon EKS,amazon-linux-2
remplacez-la paramazon-linux-2-arm64
.Note
Le nœud Amazon EKS AMIs est basé sur Amazon Linux. Vous pouvez suivre les événements liés à la sécurité ou à la confidentialité d'Amazon Linux dans le centre de sécurité Amazon Linux
en choisissant l'onglet correspondant à la version de votre choix. Vous pouvez également vous abonner au flux RSS applicable. 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 AMI personnalisée (au lieu d'une AMI optimisée pour Amazon EKS), entrez un ID d'AMI de nœud pour votre AWS région. 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 clés Amazon EC2 SSH que vous pourrez utiliser pour vous connecter via SSH à 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.
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 plus d'informations, consultez les informations d'utilisation du script bootstrap sur
GitHub. Si vous ajoutez des nœuds à un cluster local Amazon EKS sur AWS Outposts (où Kubernetes les instances du plan de contrôle s'exécutent sur AWS Outposts) et le cluster ne dispose pas de connexion Internet d'entrée et de sortie (également appelée clusters privés), vous devez alors 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ésactiver IMDSv1 : par défaut, chaque nœud prend en charge les versions 1 du service de métadonnées d'instance (IMDSv1) et IMDSv2. Vous pouvez désactiver IMDSv1. Pour empêcher les futurs nœuds et Pods dans le groupe de nœuds à utiliser IMDSv1, définissez Disable IMDSv1 sur true. Pour de plus amples informations au sujet d'IMDS, consultez Configuration du service des 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 VPC que vous avez créé. Avant de choisir un VPC, passez en revue les exigences et les considérations relatives au VPC.
-
Subnets : si votre cluster se trouve sur un Outpost, 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.
-
-
Sélectionnez les choix que vous souhaitez sur la page Configure stack options (Configurer les options de la pile), puis choisissez Next (Suivant).
-
Cochez la case à gauche de J'accuse réception AWS CloudFormation susceptible de créer des ressources IAM. , puis choisissez Create stack.
-
Lorsque la création de votre pile est terminée, sélectionnez la pile dans la console et choisissez Outputs (Sorties).
-
Enregistrez le NodeInstanceRolepour le groupe de nœuds créé. Vous en aurez besoin lors de la configuration de vos nœuds pour Amazon EKS.
Étape 2 : Permettre aux nœuds de rejoindre votre cluster
-
Vérifiez si vous avez déjà appliqué le
ConfigMap
aws-auth
.kubectl describe configmap -n kube-system aws-auth
-
Si vous voyez un
ConfigMap
aws-auth
, mettez-le à jour si nécessaire.-
Ouvrez le
ConfigMap
pour le modifier.kubectl edit -n kube-system configmap/aws-auth
-
Ajoutez une nouvelle entrée
mapRoles
si nécessaire. Définissez larolearn
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 [...]
-
Enregistrez le fichier et quittez votre éditeur de texte.
-
-
Si vous avez reçu un message d'erreur indiquant «
Error from server (NotFound): configmaps "aws-auth" not found
», appliquez le stockConfigMap
.-
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
-
Dans le
aws-auth-cm.yaml
fichier, définissez larolearn
NodeInstanceRolevaleur que vous avez enregistrée lors de la procédure précédente. Pour ce faire, utilisez un éditeur de texte ou remplacezmy-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
-
Appliquez la configuration. L'exécution de cette commande peut prendre quelques minutes.
kubectl apply -f aws-auth-cm.yaml
-
-
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 les sections Résolution des problèmes liés aux clusters et nœuds Amazon EKS et Résoudre les problèmes liés Impossible de joindre des nœuds à un cluster aux clusters Amazon EKS locaux sur AWS Outposts.
-
Installez le pilote CSI Amazon EBS. Pour plus d'informations, consultez la section Installation
sur GitHub. Dans la section Set up driver permission (Configurer les autorisations du pilote), assurez-vous de suivre les instructions de l'option Using IAM instance profile (Utilisation du profil d'instance IAM). Vous devez utiliser la classe de stockage gp2
. La classegp3
de stockage n'est pas prise en charge.Pour créer une classe de stockage
gp2
sur votre cluster, suivez les étapes suivantes.-
Exécutez la commande ci-dessous pour créer un fichier
gp2-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
-
Appliquez le manifeste à votre cluster.
kubectl apply -f gp2-storage-class.yaml
-
-
(nœuds GPU uniquement) Si vous avez choisi un type d'instance GPU et une AMI accélérée optimisée pour Amazon EKS, vous devez appliquer le plug-in d'appareil NVIDIA pour Kubernetes
en tant que DaemonSet sur votre cluster. vX.X.X
Remplacez-le par la s-device-plugin version Nvidia/K8de 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
-
(Facultatif) Déployez un exemple d'application pour tester votre cluster et Linux nœuds.
-
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 politique IAM gérée par Amazoneks_CNI_Policy est attachée au rôle IAM de votre nœud Amazon EKS, nous vous recommandons de l'attribuer à un rôle IAM que vous associez au Kubernetes
aws-node
compte de service à la place. Pour de plus amples informations, veuillez consulter Configurer le plug-in Amazon VPC CNI pour utiliser IRSA.