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é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 se trouver sur le AWS Cloud ou sur un Outpost.
-
Un Outpost existant. Pour plus d’informations, consultez la section Qu’est-ce qu’AWS Outposts.
-
Un cluster Amazon EKS existant. Pour déployer un cluster sur le AWS Cloud, consultez Cré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 région AWS où vous avez activé AWS Outposts, AWS Wavelength ou AWS Local Zones. 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 Cloud AWS) Le plug-in Amazon VPC CNI pour Kubernetes est configuré avec son propre rôle IAM auquel est associée la politique IAM nécessaire. Pour de plus amples informations, consultez Configuration du 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 (à l’aide d’un modèle AWS CloudFormation). Vous pouvez également utiliser Terraform.
Vous pouvez créer un groupe de nœuds autogéré pour un cluster local à l’aide des outils décrits dans cette page :
Important
-
Le groupe de nœuds autogéré comprend les instances Amazon EC2 de votre compte. Ces instances ne sont pas mises à niveau automatiquement lorsque la version du plan de contrôle est mise à jour par vous ou par Amazon EKS en votre nom. Un groupe de nœuds autogérés n’a aucune indication dans la console qu’il doit être mis à jour. Vous pouvez afficher la version
kubeletinstallée sur un nœud en sélectionnant le nœud dans la boîte de dialogue Nœuds dans la Présentation de votre cluster pour déterminer quels nœuds doivent être mis à jour. Vous devez mettre à jour les nœuds manuellement. Pour de plus amples informations, consultez Mettez à jour les nœuds autogérés de votre cluster. -
Les certificats utilisés par kubelet sur vos nœuds autogérés sont émis avec une durée de validité d’un an. Par défaut, la rotation des certificats n’est pas activée (voir : https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/# kubelet-config-k8s-io-v1beta1-KubeletConfiguration
). Cela signifie que si vous disposez d’un nœud autogéré fonctionnant depuis plus d’un an, il ne pourra plus s’authentifier auprès de l’API Kubernetes. -
Nous recommandons à nos clients de mettre régulièrement à jour leurs groupes de nœuds autogérés afin de bénéficier des CVE et des correctifs de sécurité de la dernière AMI optimisée pour Amazon EKS. La mise à jour de l’AMI utilisée dans les groupes de nœuds autogérés déclenche également la recréation des nœuds et garantit qu’ils ne rencontrent pas de problèmes liés à l’expiration des certificats kubelet.
-
Vous pouvez également activer la rotation des certificats clients (voir : https://kubernetes.io/docs/tasks/tls/certificate-rotation/
) lors de la création des groupes de nœuds autogérés afin de vous assurer que les certificats kubelet sont renouvelés à l’approche de l’expiration du certificat actuel.
eksctl
Pour lancer des nœuds Linux autogérés à l’aide de eksctl
-
Installez la version
0.214.0ou une version ultérieure de l’outil de ligne de commandeeksctlinstallé sur votre appareil ou AWS CloudShell. Pour installer ou mettre à joureksctl, veuillez consulter Installationdans la documentation de eksctl. -
Si votre cluster se trouve sur le AWS Cloud et que la politique IAM gérée AmazonEKS_CNI_Policy est associée à votre rôle IAM de nœud Amazon EKS, nous vous recommandons de l’attribuer à un rôle IAM que vous associez au compte de service
aws-nodeKubernetes. Pour de plus amples informations, consultez Configuration du 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. Remplacez lesnœuds alpar 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. Remplacezmy-clusterpar 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 peut pas dépasser 100 caractères. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster. Si votre cluster existe sur un Outpost, remplacezidpar l'ID d'un sous-réseau Outpost. Si votre cluster existe sur le AWS Cloud, remplacezidpar l’ID d’un sous-réseau que vous n’avez pas spécifié lorsque vous avez créé votre cluster. Remplacezinstance-typepar un type d'instance pris en charge par votre Outpost. Remplacez lavaleur d’exemplerestante 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-typepar un type d'instance disponible sur votre Outpost.Remplacez
my-keypar 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. Si vous ne possédez pas déjà une paire de clés Amazon EC2, vous pouvez en créer une dans l’AWS Management Console. Pour plus d'informations, veuillez consulter la rubrique Paires de clés Amazon EC2 dans le Guide de l'utilisateur Amazon EC2.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-idSi votre cluster est déployé sur le AWS Cloud :
-
Le groupe de nœuds que vous déployez peut attribuer des adresses
IPv4aux pods à partir d’un bloc CIDR différent de celui de l’instance. Pour de plus amples informations, consultez Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé. -
Le groupe de nœuds que vous déployez ne nécessite pas d’accès Internet sortant. Pour de plus amples informations, consultez Déployer des clusters privés avec un accès Internet limité.
Pour obtenir la liste complète de toutes les options disponibles et des paramètres par défaut, consultez la section Assistance AWS Outposts
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 Dépannage des problèmes liés aux clusters et nœuds Amazon EKS et Impossible de joindre des nœuds à un cluster dans Dépannage des 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 les nœuds Linux.
AWS Management Console
Étape 1 : lancer les nœuds Linux autogérés à l’aide de la AWS Management Console
-
Téléchargez la dernière version du modèle AWS CloudFormation.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml -
Ouvrez la console AWS CloudFormation
. -
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.yamlque 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 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 peut pas dépasser 100 caractères. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster. -
ClusterName : saisissez 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 : choisissiez la valeur SecurityGroups de la sortie AWS CloudFormation 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 des Groupes de sécurité supplémentaires comme référence lors de la sélection dans la liste déroulante ClusterControlPlaneSecurityGroup.
-
-
NodeGroupName : saisissez un nom pour le groupe de nœuds. Ce nom peut être utilisé ultérieurement pour identifier le groupe de nœuds autoscaling qui est créé pour vos nœuds.
-
NodeAutoScalingGroupMinSize : saisissez le nombre minimum de nœuds que votre groupe Auto Scaling de nœuds peut comporter.
-
NodeAutoScalingGroupDesiredCapacity : saisissez le nombre voulu de nœuds pour la mise à l'échelle lorsque votre pile sera créée.
-
NodeAutoScalingGroupMaxSize : saisissez le nombre maximum de nœuds que votre groupe Auto Scaling de nœuds peut comporter.
-
NodeInstanceType : choisissez un type d'instance pour vos nœuds. Si votre cluster s’exécute sur le AWS Cloud, pour plus d’informations, consultez Choix du type d’instance Amazon EC2 optimal pour les nœuds. 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 AMI récente optimisée pour Amazon EKS pour une version variable de Kubernetes. Pour utiliser une autre version mineure de Kubernetes prise en charge par Amazon EKS, remplacez
1.XXpar une autre version prise en charge. Nous vous recommandons de spécifier la même version de Kubernetes que celle de votre cluster.Pour utiliser une AMI accélérée optimisée pour Amazon EKS, remplacez
amazon-linux-2paramazon-linux-2-gpu. Pour utiliser une AMI Arm optimisée pour Amazon EKS, remplacezamazon-linux-2paramazon-linux-2-arm64.Note
Les AMI des nœuds Amazon EKS sont basées sur Amazon Linux. Vous pouvez suivre les événements liés à la sécurité ou à la confidentialité pourAmazon Linux dans le centre de sécurité Amazon Linux
en sélectionnant l’onglet correspondant à la version souhaitée. 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), saisissez un identifiant AMI de nœud pour votre région AWS. Si vous spécifiez une valeur ici, elle remplace toutes les valeurs du champ NodeImageIdSSMParam .
-
NodeVolumeSize : spécifiez une taille de volume racine pour vos nœuds, en GiO.
-
NodeVolumeType : spécifiez un type de volume racine pour vos nœuds.
-
KeyName : saisissez le nom d'une paire de clés SSH Amazon EC2 que vous pouvez utiliser pour vous connecter à l'aide de SSH dans vos nœuds après leur lancement. Si vous ne possédez pas déjà une paire de clés Amazon EC2, vous pouvez en créer une dans l’AWS Management Console. Pour plus d'informations, veuillez consulter la rubrique Paires de clés Amazon EC2 dans le Guide de l'utilisateur Amazon EC2.
Note
Si vous ne fournissez pas de paire de clés ici, la création de la pile AWS CloudFormation é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 Amazon EKS Local sur AWS Outposts (où les instances du plan de contrôle Kubernetes s’exécutent sur AWS Outposts) et que le cluster ne dispose pas de connexion Internet entrante et sortante (également appelé clusters privés), vous devez fournir les arguments de démarrage suivants (sur une seule ligne). --b64-cluster-ca ${CLUSTER_CA} --apiserver-endpoint https://${APISERVER_ENDPOINT} --enable-local-outpost true --cluster-id ${CLUSTER_ID}Pour récupérer les valeurs de
CLUSTER_CA,APISERVER_ENDPOINT, etCLUSTER_IDde votre cluster local Amazon EKS, exécutez les commandes CLI AWS suivantes. Remplacez cluster-name par le nom de votre cluster et region (par exemple, us-east-1) par la région AWS de votre cluster.echo "CLUSTER_CA=$(aws eks describe-cluster --name cluster-name --region region --query cluster.certificateAuthority.data --output text)" echo "APISERVER_ENDPOINT=$(aws eks describe-cluster --name cluster-name --region region --query cluster.endpoint --output text)" echo "CLUSTER_ID=$(aws eks describe-cluster --name cluster-name --region region --query cluster.id --output text)" -
DisableIMDSv1 : par défaut, chaque nœud prend en charge le service de métadonnées d'instance version 1 (IMDSv1) et IMDSv2. Vous pouvez désactiver IMDSv1. Pour empêcher les futurs nœuds et pods du groupe de nœuds d’utiliser IMDSv1, définissez DisableIMDSv1 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 : saisissez l'ID du VPC que vous avez créé. Avant de choisir un VPC, examinez 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 Je comprends qu’AWS CloudFormation peut créer des ressources IAM., puis sélectionnez Créer une pile.
-
Lorsque la création de votre pile est terminée, sélectionnez la pile dans la console et choisissez Outputs (Sorties).
-
Notez la valeur de NodeInstanceRole pour le groupe de nœuds qui a été créé. Vous en aurez besoin lors de la configuration de vos nœuds pour Amazon EKS.
Étape 2 : autoriser les nœuds à rejoindre votre cluster
-
Vérifiez si vous avez déjà appliqué le
ConfigMapaws-auth.kubectl describe configmap -n kube-system aws-auth -
Si vous voyez un
ConfigMapaws-auth, mettez-le à jour si nécessaire.-
Ouvrez le
ConfigMappour le modifier.kubectl edit -n kube-system configmap/aws-auth -
Ajoutez une nouvelle entrée
mapRolessi nécessaire. Définissez la valeurrolearnà la valeur NodeInstanceRole que vous avez enregistrée dans 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 fichier
aws-auth-cm.yaml, définissezrolearnsur la valeur NodeInstanceRole que vous avez enregistrée dans la procédure précédente. Pour ce faire, utilisez un éditeur de texte ou remplacezmy-node-instance-roleet 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 --watchSaisissez
Ctrl+Cpour 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 Dépannage des problèmes liés aux clusters et nœuds Amazon EKS et Impossible de joindre des nœuds à un cluster dans Dépannage des clusters Amazon EKS locaux sur AWS Outposts.
-
Installez le pilote CSI Amazon EBS. Pour plus d'informations, consultez 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 classe de stockagegp3n’est pas prise en charge.Pour créer une classe de stockage
gp2sur 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 NVIDIA pour Kubernetes
en tant que DaemonSet sur votre cluster. Remplacez vX.X.Xpar la version souhaitée du plug-in NVIDIA/k8s-deviceavant 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 les nœuds Linux.
-
Si votre cluster est déployé sur un Outpost, ignorez cette étape. Si votre cluster est déployé sur le AWS Cloud, les étapes suivantes sont facultatives. Si la politique IAM gérée AmazonEKS_CNI_Policy est associée à votre rôle IAM de nœud Amazon EKS, nous vous recommandons de l’attribuer à un rôle IAM que vous associez au compte de service
aws-nodeKubernetes à la place. Pour de plus amples informations, consultez Configuration du plug-in Amazon VPC CNI pour utiliser IRSA.