

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

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque 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.

# Gérer les ressources de calcul à l’aide de nœuds
<a name="eks-compute"></a>

Un nœud Kubernetes est une machine qui exécute des applications conteneurisées. Chaque nœud dispose des composants suivants :
+  ** [Exécution du conteneur](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) ** : logiciel chargé d’exécuter les conteneurs.
+  ** [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) ** : s’assure que les conteneurs sont en bon état et fonctionnent correctement dans leur pod associé.
+  ** [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/)** : gère les règles réseau qui permettent la communication avec vos pods.

Pour plus d'informations, consultez [Nœuds](https://kubernetes.io/docs/concepts/architecture/nodes/) dans la documentation Kubernetes.

Votre cluster Amazon EKS peut planifier des pods sur n’importe quelle combinaison de [nœuds gérés du mode automatique EKS](automode.md), de [nœuds autogérés](worker.md), de [groupes de nœuds gérés par Amazon EKS](managed-node-groups.md), d’[AWS Fargate](fargate.md) et de [nœuds hybrides Amazon EKS](hybrid-nodes-overview.md). Pour en savoir plus sur les nœuds déployés dans votre cluster, consultez [Consultez les ressources Kubernetes dans le AWS Management Console](view-kubernetes-resources.md).

**Note**  
À l’exception des nœuds hybrides, les nœuds doivent se trouver dans le même VPC que les sous-réseaux que vous avez sélectionnés lors de la création du cluster. Cependant, les nœuds ne doivent pas nécessairement se trouver dans les mêmes sous-réseaux.

## Comparaison des options de calcul
<a name="_compare_compute_options"></a>

Le tableau suivant fournit plusieurs critères à évaluer pour décider quelles options répondent le mieux à vos besoins. Les nœuds autogérés constituent une autre option qui répond à tous les critères énumérés, mais ils nécessitent beaucoup plus de maintenance manuelle. Pour de plus amples informations, consultez [Gérer vous-même les nœuds grâce aux nœuds autogérés](worker.md).

**Note**  
Bottlerocket présente quelques différences spécifiques par rapport aux informations générales de ce tableau. Pour plus d'informations, consultez la [documentation](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) de Bottlerocket sur GitHub.


| Critères | Groupes de nœuds gérés EKS | Mode automatique EKS | Nœuds hybrides Amazon EKS | 
| --- | --- | --- | --- | 
|  Peut être déployé dans [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)   |  Non  |  Non  |  Non  | 
|  Possibilité d'être déployé dans une [zone locale AWS](local-zones.md)   |  Oui  |  Non  |  Non  | 
|  Possibilité d'exécuter des conteneurs qui nécessitent Windows  |  Oui  |  Non  |  Non  | 
|  Possibilité d'exécuter des conteneurs qui nécessitent Linux  |  Oui  |  Oui  |  Oui  | 
|  Possibilité d'exécuter des applications nécessitant la puce Inferentia  |   [Oui](inferentia-support.md) : nœuds Amazon Linux uniquement  |  Oui  |  Non  | 
|  Possibilité d'exécuter des applications nécessitant un GPU  |   [Oui](eks-optimized-ami.md#gpu-ami) : nœuds Amazon Linux uniquement  |  Oui  |  Oui  | 
|  Possibilité d'exécuter des applications nécessitant des processeurs Arm  |   [Oui](eks-optimized-ami.md#arm-ami)   |  Oui  |  Oui  | 
|  Possibilité d'exécuter AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Oui  |  Oui  |  Non  | 
|  Les pods partagent le processeur, la mémoire, le stockage et les ressources réseau avec d’autres pods.  |  Oui  |  Oui  |  Oui  | 
|  Doit déployer et gérer des instances Amazon EC2  |  Oui  |  Non : En savoir plus sur les [instances gérées EC2](automode-learn-instances.md)   |  Oui : les machines physiques ou virtuelles sur site sont gérées par vos soins à l’aide des outils de votre choix.  | 
|  Doit sécuriser, entretenir et corriger le système d'exploitation des instances Amazon EC2  |  Oui  |  Non  |  Oui : vous gérez vous-même le système d’exploitation qui fonctionne sur vos machines physiques ou virtuelles à l’aide des outils de votre choix.  | 
|  Peut fournir des arguments bootstrap lors du déploiement d’un nœud, tels que des arguments [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) supplémentaires.  |  Oui : utilisation de `eksctl` ou d’un [modèle de lancement](launch-templates.md) avec une AMI personnalisée.  |  Non : [Utilisez un `NodeClass` pour configurer les nœuds](create-node-class.md)   |  Oui : Vous pouvez personnaliser les arguments de démarrage avec nodeadm. Consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).  | 
|  Possibilité d’affecter des adresses IP à des pods à partir d’un bloc d’adresse CIDR différent de l’adresse IP affectée au nœud.  |  Oui : utilisation d'un modèle de lancement avec une AMI personnalisée. Pour de plus amples informations, consultez [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md).  |  Non  |  Oui : consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).  | 
|  Possibilité d'accéder au nœud via SSH  |  Oui  |  Non : [Découvrez comment résoudre les problèmes liés aux nœuds](auto-troubleshoot.md)   |  Oui  | 
|  Possibilité de déployer votre propre AMI personnalisée sur les nœuds  |  Oui : utilisation d'un [modèle de lancement](launch-templates.md)   |  Non  |  Oui  | 
|  Possibilité de déployer votre propre CNI personnalisée sur les nœuds  |  Oui : utilisation d'un [modèle de lancement](launch-templates.md) avec une AMI personnalisée  |  Non  |  Oui  | 
|  Vous devez mettre à jour l'AMI du nœud par vous-même  |   [Oui](update-managed-node-group.md) : si vous avez déployé une AMI optimisée pour Amazon EKS, vous êtes averti dans la console Amazon EKS lorsque les mises à jour sont disponibles. Vous pouvez effectuer la mise à jour en un clic dans la console. Si vous avez déployé une AMI personnalisée, vous n’êtes pas averti dans la console Amazon EKS lorsque des mises à jour sont disponibles. Vous devez effectuer la mise à jour par vous-même.  |  Non  |  Oui, le système d’exploitation qui fonctionne sur vos machines physiques ou virtuelles est géré par vous-même à l’aide des outils de votre choix. Consultez [Préparer le système d’exploitation pour les nœuds hybrides](hybrid-nodes-os.md).  | 
|  Vous devez mettre à jour la version du nœud Kubernetes par vous-même  |   [Oui](update-managed-node-group.md) : si vous avez déployé une AMI optimisée pour Amazon EKS, vous êtes averti dans la console Amazon EKS lorsque les mises à jour sont disponibles. Vous pouvez effectuer la mise à jour en un clic dans la console. Si vous avez déployé une AMI personnalisée, vous n’êtes pas averti dans la console Amazon EKS lorsque des mises à jour sont disponibles. Vous devez effectuer la mise à jour par vous-même.  |  Non  |  Oui : Le système d’exploitation qui fonctionne sur vos machines physiques ou virtuelles est géré par vous-même à l’aide des outils de votre choix ou de `nodeadm`. Consultez [Mettre à niveau les nœuds hybrides pour votre cluster](hybrid-nodes-upgrade.md).  | 
|  Possibilité d’utiliser le stockage Amazon EBS avec des pods  |   [Oui](ebs-csi.md)   |  Oui, en tant que fonctionnalité intégrée. Découvrez comment [créer une classe de stockage.](create-storage-class.md)   |  Non  | 
|  Possibilité d’utiliser le stockage Amazon EFS avec des pods  |   [Oui](efs-csi.md)   |  Oui  |  Non  | 
|  Possibilité d’utiliser le stockage Amazon FSx pour Lustre avec des pods  |   [Oui](fsx-csi.md)   |  Oui  |  Non  | 
|  Possibilité d'utiliser le Network Load Balancer pour les services  |   [Oui](network-load-balancing.md)   |  Oui  |  Oui : Vous devez utiliser le type de cible `ip`.  | 
|  Les pods peuvent s'exécuter dans un sous-réseau public  |  Oui  |  Oui  |  Non : les modules s’exécutent dans un environnement sur site.  | 
|  Possibilité d’affecter différents groupes de sécurité VPC à des pods individuels  |   [Oui](security-groups-for-pods.md) : nœuds Linux uniquement  |  Non  |  Non  | 
|  Possibilité d'exécuter des ensembles de démons Kubernetes  |  Oui  |  Oui  |  Oui  | 
|  Prend en charge `HostPort` et `HostNetwork` dans le manifeste du pod  |  Oui  |  Oui  |  Oui  | 
|   AWS : disponibilité dans les régions  |   [Toutes les régions prises en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Toutes les régions prises en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Toutes les régions prises en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html), à l’exception des régions AWS GovCloud (États-Unis) et de la Chine.  | 
|  Possibilité d'exécuter des conteneurs sur des hôtes dédiés Amazon EC2  |  Oui  |  Non  |  Non  | 
|  Tarification  |  Coût de l’instance Amazon EC2 qui exécute plusieurs pods. Pour plus d’informations, consultez [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/).  |  Lorsque le mode automatique EKS est activé dans votre cluster, vous payez des frais distincts, en plus des frais standard liés aux instances EC2, pour les instances lancées à l’aide de la capacité de calcul du mode automatique. Le montant varie en fonction du type d’instance lancé et de la région AWS où se trouve votre cluster. Pour plus d’informations, consultez les [tarifs Amazon EKS](https://aws.amazon.com/eks/pricing/).  |  Coût horaire des nœuds hybrides vCPU. Pour plus d’informations, consultez les [tarifs Amazon EKS](https://aws.amazon.com/eks/pricing/).  | 

# Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés
<a name="managed-node-groups"></a>

Les groupes de nœuds gérés par Amazon EKS automatisent le provisionnement et la gestion du cycle de vie des nœuds ( EC2 instances Amazon) pour les clusters Amazon EKS Kubernetes.

Avec les groupes de nœuds gérés par Amazon EKS, vous n'avez pas besoin de configurer ou d'enregistrer séparément les EC2 instances Amazon qui fournissent la capacité de calcul pour exécuter vos applications Kubernetes. Vous pouvez créer, mettre à jour ou résilier les nœuds pour votre cluster en une seule opération. Les mises à jour et les résiliations de nœuds purgent automatiquement les nœuds afin de garantir la disponibilité de vos applications.

Chaque nœud géré est approvisionné dans le cadre d'un groupe Amazon EC2 Auto Scaling géré pour vous par Amazon EKS. Toutes les ressources, y compris les instances et les groupes Auto Scaling, s'exécutent au sein de votre AWS compte. Chaque groupe de nœuds s'exécute dans plusieurs zones de disponibilité que vous définissez.

Les groupes de nœuds gérés peuvent également tirer parti, en option, de la fonctionnalité de réparation automatique des nœuds, qui surveille en permanence leur état. Il réagit automatiquement aux problèmes détectés et remplace les nœuds lorsque cela est possible. Cela contribue à la disponibilité globale du cluster avec un minimum d’intervention manuelle. Pour de plus amples informations, veuillez consulter [Détectez les problèmes de santé des nœuds et activez la réparation automatique des nœuds](node-health.md).

Vous pouvez ajouter un groupe de nœuds gérés à des clusters nouveaux ou existants à l'aide de la console, de la AWS CLI`eksctl`, de l' AWS API ou de l'infrastructure Amazon EKS en tant qu'outils de code, notamment AWS CloudFormation. Les nœuds lancés dans le cadre d’un groupe de nœuds gérés sont automatiquement marqués pour être détectés automatiquement par l’outil [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) de Kubernetes. Vous pouvez utiliser le groupe de nœuds pour appliquer des labels Kubernetes aux nœuds et les mettre à jour à tout moment.

L'utilisation des groupes de nœuds gérés par Amazon EKS n'entraîne aucun coût supplémentaire. Vous ne payez que pour les AWS ressources que vous fournissez. Il s'agit notamment EC2 des instances Amazon, des volumes Amazon EBS, des heures de cluster Amazon EKS et de toute autre AWS infrastructure. Aucun frais minimum ni aucun engagement initial ne s'appliquent.

Pour démarrer avec un nouveau cluster Amazon EKS et un groupe de nœuds gérés, consultez [Démarrez avec Amazon EKS AWS Management Console et la AWS CLI](getting-started-console.md).

Pour ajouter un groupe de nœuds gérés à un cluster existant, consultez [Création d’un groupe de nœuds gérés pour votre cluster](create-managed-node-group.md).

## Concepts des groupes de nœuds gérés
<a name="managed-node-group-concepts"></a>
+ Les groupes de nœuds gérés par Amazon EKS créent et gèrent EC2 des instances Amazon pour vous.
+ Chaque nœud géré est approvisionné dans le cadre d'un groupe Amazon EC2 Auto Scaling géré pour vous par Amazon EKS. De plus, toutes les ressources, y compris les EC2 instances Amazon et les groupes Auto Scaling, sont exécutées au sein de votre AWS compte.
+ Le groupe Auto Scaling d'un groupe de nœuds gérés couvre chaque sous-réseau que vous spécifiez lorsque vous créez le groupe.
+ Amazon EKS étiquette les ressources du groupe de nœuds gérés afin qu’elles soient configurées pour utiliser l’outil [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) de Kubernetes.
**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](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) 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`.
+ Vous pouvez utiliser un modèle de lancement personnalisé pour un plus grand niveau de flexibilité et de personnalisation lors du déploiement de nœuds gérés. Par exemple, vous pouvez spécifier des arguments `kubelet` supplémentaires et utiliser une AMI personnalisée. Pour de plus amples informations, veuillez consulter [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md). 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, un modèle de lancement est généré automatiquement. Ne modifiez pas manuellement ce modèle généré automatiquement, sinon des erreurs se produiront.
+ Amazon EKS suit le modèle de responsabilité partagée CVEs et les correctifs de sécurité sur les groupes de nœuds gérés. Lorsque les nœuds gérés exécutent une AMI optimisée pour Amazon EKS, cette dernière est chargée de créer des versions corrigées de l'AMI lorsque des bogues ou des problèmes sont signalés. Nous pouvons publier un correctif. Cependant, vous êtes responsable du déploiement de ces versions corrigées de l’AMI sur vos groupes de nœuds gérés. Lorsque les nœuds gérés exécutent une AMI personnalisée, vous êtes responsable de la création de versions corrigées de l’AMI lorsque des bogues ou des problèmes sont signalés, puis du déploiement de l’AMI. Pour de plus amples informations, veuillez consulter [Mettre à jour un groupe de nœuds gérés pour votre cluster](update-managed-node-group.md).
+ Les groupes de nœuds gérés par Amazon EKS peuvent être lancés dans des sous-réseaux publics et privés. Si vous lancez un groupe de nœuds gérés dans un sous-réseau public à partir du 22 avril 2020, `MapPublicIpOnLaunch` du sous-réseau doit avoir la valeur true pour que les instances puissent rejoindre un cluster. Si le sous-réseau public a été créé à l'aide `eksctl` des [AWS CloudFormation modèles Amazon EKS vendus](creating-a-vpc.md) le 26 mars 2020 ou après cette date, ce paramètre est déjà défini sur true. Si les sous-réseaux publics ont été créés avant le 26 mars 2020, vous devez modifier le paramètre manuellement. Pour plus d'informations, consultez la section [Modification de l'attribut d' IPv4 adressage public de votre sous-réseau](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip).
+ Lorsque vous déployez un groupe de nœuds gérés dans des sous-réseaux privés, vous devez vous assurer qu'il peut accéder à Amazon ECR pour extraire des images de conteneurs. Vous pouvez procéder en connectant une passerelle NAT à la table de routage du sous-réseau ou en ajoutant les [points de terminaison d'un VPC AWS PrivateLink ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-vpc-create) suivants :
  + Interface de point de terminaison de l'API Amazon ECR : `com.amazonaws.region-code.ecr.api` 
  + Interface de point de terminaison de l'API de registre Docker Amazon ECR : `com.amazonaws.region-code.ecr.dkr` 
  + Point de terminaison de la passerelle Amazon S3 : `com.amazonaws.region-code.s3` 

  Pour d'autres services et points de terminaison couramment utilisés, veuillez consulter la rubrique [Déployer des clusters privés avec un accès Internet limité](private-clusters.md).
+ Les groupes de nœuds gérés ne peuvent pas être déployés sur [AWS Outposts](eks-outposts.md) ou dans [AWS Wavelength](https://docs.aws.amazon.com/wavelength/). Des groupes de nœuds gérés peuvent être créés sur les [zones locales AWS](https://aws.amazon.com/about-aws/global-infrastructure/localzones/). Pour de plus amples informations, veuillez consulter [Lancer des clusters EKS à faible latence avec AWS Local Zones](local-zones.md).
+ Vous pouvez créer plusieurs groupes de nœuds gérés au sein d'un même cluster. Par exemple, vous pouvez créer un groupe de nœuds avec l’AMI Amazon Linux optimisée Amazon EKS standard pour certaines charges de travail et un autre avec la variante GPU pour les charges de travail qui nécessitent la prise en charge GPU.
+ Si votre groupe de nœuds gérés rencontre un échec de [vérification de l'état d'une EC2 instance Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html), Amazon EKS renvoie un code d'erreur pour vous aider à diagnostiquer le problème. Pour de plus amples informations, veuillez consulter [Codes d'erreurs liées aux groupes de nœuds gérés](troubleshooting.md#troubleshoot-managed-node-groups).
+ Amazon EKS ajoute des labels Kubernetes aux instances de groupes de nœuds gérés. Ces labels fournis par Amazon EKS ont le préfixe `eks.amazonaws.com`.
+ Amazon EKS purge automatiquement les nœuds à l'aide de l'API Kubernetes lors des résiliations ou des mises à jour.
+ Les budgets de perturbation des pods ne sont pas respectés lors de l’arrêt d’un nœud avec `AZRebalance` ou de la réduction du nombre de nœuds souhaité. Ces actions tentent d’expulser les pods du nœud. Mais si l’opération prend plus de 15 minutes, le nœud est arrêté, que tous les pods du nœud aient été arrêtés ou non. Pour prolonger le délai d'arrêt du nœud, ajoutez un hook de cycle de vie au groupe Auto Scaling. Pour plus d'informations, consultez la section [Ajouter des hooks de cycle](https://docs.aws.amazon.com/autoscaling/ec2/userguide/adding-lifecycle-hooks.html) de vie dans le *guide de l'utilisateur d'Amazon EC2 Auto Scaling*.
+ Pour exécuter correctement le processus de vidange après avoir reçu une notification d'interruption ponctuelle ou une notification de rééquilibrage des capacités, `CapacityRebalance` doit être réglé sur `true`.
+ La mise à jour des groupes de nœuds gérés respecte les budgets de perturbation des pods que vous avez définis pour vos pods. Pour de plus amples informations, veuillez consulter [Comprendre chaque phase des mises à jour des nœuds](managed-node-update-behavior.md).
+ L'utilisation de groupes de nœuds gérés par Amazon EKS est disponible sans coûts supplémentaires. Vous ne payez que pour les AWS ressources que vous fournissez.
+ Si vous souhaitez chiffrer les volumes Amazon EBS pour vos nœuds, vous pouvez déployer les nœuds à l'aide d'un modèle de lancement. Pour déployer des nœuds gérés avec des volumes Amazon EBS chiffrés sans utiliser de modèle de lancement, chiffrez tous les nouveaux volumes Amazon EBS créés dans votre compte. Pour plus d'informations, consultez la section [Chiffrement par défaut](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) dans le *guide de EC2 l'utilisateur Amazon*.

## Types de capacité des groupes de nœuds gérés
<a name="managed-node-group-capacity-types"></a>

Lorsque vous créez un groupe de nœuds gérés, vous pouvez choisir le type de capacité à la demande ou Spot. Amazon EKS déploie un groupe de nœuds gérés avec un groupe Amazon EC2 Auto Scaling qui contient uniquement des instances On-Demand ou uniquement des instances Amazon EC2 Spot. Vous pouvez planifier des pods pour des applications tolérantes aux pannes dans des groupes de nœuds gérés Spot, et des applications intolérantes aux pannes dans des groupes de nœuds à la demande au sein d’un même cluster Kubernetes. Par défaut, un groupe de nœuds gérés déploie les EC2 instances Amazon On-Demand.

### À la demande
<a name="managed-node-group-capacity-types-on-demand"></a>

Avec les instances à la demande, vous payez la capacité de calcul à la seconde, sans engagement à long terme.

Par défaut, si vous ne spécifiez pas de **Type de capacité**, le groupe de nœuds gérés est alloué avec des instances à la demande. Un groupe de nœuds géré configure un groupe Amazon EC2 Auto Scaling en votre nom avec les paramètres suivants appliqués :
+ La stratégie d'allocation pour fournir la capacité à la demande est définie sur `prioritized`. Les groupes de nœuds gérés utilisent l'ordre des types d'instance transmis dans l'API pour déterminer le type d'instance à utiliser en premier lors de la fourniture de la capacité à la demande. Par exemple, vous pouvez spécifier trois types d'instances dans l'ordre suivant : `c5.large`, `c4.large` et `c3.large`. Lorsque vos instances à la demande sont lancées, le groupe de nœuds gérés fournit la capacité à la demande en commençant par `c5.large`, puis `c4.large` et enfin `c3.large`. Pour plus d'informations, consultez le [groupe Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html#asg-allocation-strategies) dans le *guide de l'utilisateur Amazon EC2 Auto Scaling*.
+ Amazon EKS ajoute le label Kubernetes suivant à tous les nœuds de votre groupe de nœuds gérés qui spécifie le type de capacité : `eks.amazonaws.com/capacityType: ON_DEMAND` Vous pouvez utiliser ce label pour programmer des applications à état ou intolérantes aux pannes sur des nœuds à la demande.

### Spot
<a name="managed-node-group-capacity-types-spot"></a>

Les instances Amazon EC2 Spot sont des EC2 capacités inutilisées d'Amazon qui offrent des remises importantes par rapport aux prix à la demande. Les instances Amazon EC2 Spot peuvent être interrompues moyennant un préavis de deux minutes lorsqu'il est EC2 nécessaire de rétablir leur capacité. Pour plus d'informations, consultez la section [Instances Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) dans le *guide de EC2 l'utilisateur Amazon*. Vous pouvez configurer un groupe de nœuds gérés avec des instances Amazon EC2 Spot afin d'optimiser les coûts des nœuds de calcul exécutés dans votre cluster Amazon EKS.

Pour utiliser des instances Spot dans un groupe de nœuds gérés, créez un groupe de nœuds gérés en définissant le type de capacité comme `spot`. Un groupe de nœuds géré configure un groupe Amazon EC2 Auto Scaling en votre nom en appliquant les meilleures pratiques Spot suivantes :
+ Pour garantir que vos nœuds Spot sont alloués dans les groupes de capacité Spot optimaux, la stratégie d’allocation est définie sur l’une des options suivantes :
  +  `price-capacity-optimized` (PCO) : lors de la création de nouveaux groupes de nœuds dans un cluster avec la version Kubernetes `1.28` ou supérieure, la stratégie d’allocation est définie sur `price-capacity-optimized`. Cependant, la stratégie d’allocation ne sera pas modifiée pour les groupes de nœuds déjà créés avec `capacity-optimized` avant que les groupes de nœuds gérés par Amazon EKS ne commencent à prendre en charge le PCO.
  +  `capacity-optimized` (CO) : lors de la création de nouveaux groupes de nœuds dans un cluster avec la version Kubernetes `1.27` ou une version antérieure, la stratégie d’allocation est définie sur `capacity-optimized`.

  Pour augmenter le nombre de groupes de capacité Spot disponibles pour l'allocation de capacité, configurez un groupe de nœuds gérés pour utiliser plusieurs types d'instances.
+ Le rééquilibrage de capacité Amazon EC2 Spot est activé afin qu'Amazon EKS puisse drainer et rééquilibrer en douceur vos nœuds Spot afin de minimiser les perturbations des applications lorsqu'un nœud Spot présente un risque élevé d'interruption. Pour plus d'informations, consultez [Amazon EC2 Auto Scaling Capacity Rebalancing](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html) dans le *guide de l'utilisateur d'Amazon EC2 Auto Scaling*.
  + Lorsqu'un nœud Spot reçoit une recommandation de rééquilibrage, Amazon EKS tente automatiquement de lancer un nouveau nœud Spot de remplacement.
  + Si un avis d'interruption de deux minutes arrive avant que le nœud Spot de remplacement ne soit dans l'état `Ready`, Amazon EKS commence à purger le nœud Spot qui a reçu la recommandation de rééquilibrage. Amazon EKS vide le nœud dans la mesure du possible. Par conséquent, rien ne garantit qu’Amazon EKS attendra que le nœud de remplacement rejoigne le cluster avant de vider le nœud existant.
  + Lorsqu'un nœud Spot de remplacement est démarré et est dans l'état `Ready` sur Kubernetes, Amazon EKS cloisonne et purge le nœud Spot qui a reçu la recommandation de rééquilibrage. Le cloisonnement du nœud Spot garantit que le contrôleur de service n’envoie pas de nouvelles demandes à ce nœud Spot. Il le supprime également de sa liste de nœuds Spot sains et actifs. La purge du nœud Spot garantit que les pods en cours d’exécution sont expulsés proprement.
+ Amazon EKS ajoute le label Kubernetes suivant à tous les nœuds de votre groupe de nœuds gérés qui spécifie le type de capacité : `eks.amazonaws.com/capacityType: SPOT` Vous pouvez utiliser ce label pour programmer des applications tolérantes aux pannes sur les nœuds Spot.
**Important**  
EC2 émet un [avis d'interruption Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-instance-termination-notices.html) deux minutes avant de mettre fin à votre instance Spot. Cependant, les nœuds Pods on Spot peuvent ne pas bénéficier de la fenêtre complète de 2 minutes pour un arrêt progressif. Lorsque l'avis est EC2 émis, Amazon EKS ne commence à expulser les Pods qu'après un certain délai. Les expulsions se produisent de manière séquentielle pour protéger le serveur d'API Kubernetes. Ainsi, lors de plusieurs réclamations simultanées de Spot, certains Pods peuvent recevoir des notifications d'expulsion différées. Les pods peuvent être fermés de force sans recevoir de signaux de terminaison, en particulier sur les nœuds à forte densité de pods, lors de réclamations simultanées ou lors de l'utilisation de longues périodes de grâce de terminaison. Pour les charges de travail Spot, nous recommandons de concevoir des applications tolérantes aux interruptions, d'utiliser des délais de résiliation de 30 secondes ou moins, d'éviter les longs hooks Prestop et de surveiller les indicateurs d'éviction des Pod pour comprendre les délais de grâce réels dans vos clusters. Pour les charges de travail nécessitant une résiliation progressive garantie, nous recommandons plutôt d'utiliser la capacité à la demande.

Lorsque vous décidez de déployer un groupe de nœuds avec une capacité à la demande ou Spot, vous devez tenir compte des conditions suivantes :
+ Les instances Spot conviennent bien aux applications sans état, tolérantes aux pannes et flexibles. Il s'agit notamment des charges de travail de formation par lots et de machine learning, des mégadonnées ETLs telles qu'Apache Spark, des applications de traitement des files d'attente et des points de terminaison d'API sans état. Spot étant une EC2 capacité inutilisée d'Amazon, qui peut changer au fil du temps, nous vous recommandons d'utiliser la capacité Spot pour les charges de travail tolérantes aux interruptions. Plus précisément, la capacité Spot convient aux charges de travail qui peuvent tolérer des périodes où la capacité requise n’est pas disponible.
+ Nous vous recommandons d'utiliser la capacité à la demande pour les applications qui sont intolérantes aux pannes. Cela inclut les outils de gestion de cluster tels que les outils de surveillance et d'exploitation, les déploiements qui nécessitent `StatefulSets`, et les applications avec état, telles que les bases de données.
+ Pour maximiser la disponibilité de vos applications en utilisant les instances Spot, nous vous recommandons de configurer un groupe de nœuds gérés Spot pour utiliser plusieurs types d'instances. Nous vous recommandons d'appliquer les règles suivantes lorsque vous utilisez plusieurs types d'instance :
  + Dans un groupe de nœuds gérés, si vous utilisez [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), nous vous recommandons d’utiliser un ensemble flexible de types d’instances avec la même quantité de ressources vCPU et de mémoire. Ceci afin de garantir que les nœuds de votre cluster soient mis à l'échelle comme prévu. Par exemple, si vous avez besoin de quatre V CPUs et de huit GiB de mémoire, utilisez`c3.xlarge`,,`c4.xlarge`,`c5.xlarge`, `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, ou d'autres types d'instance similaires.
  + Pour améliorer la disponibilité des applications, nous recommandons de déployer plusieurs groupes de nœuds gérés Spot. Pour cela, chaque groupe doit utiliser un ensemble flexible de types d'instances qui disposent des mêmes ressources vCPU et mémoire. Par exemple, si vous avez besoin de 4 V CPUs et 8 GiB de mémoire, nous vous recommandons de créer un groupe de nœuds gérés avec`c3.xlarge`,,`c4.xlarge`,`c5.xlarge`, `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, ou d'autres types d'instances similaires, et un second groupe de nœuds gérés avec`m3.xlarge`,,, `m4.xlarge` `m5.xlarge` `m5d.xlarge``m5a.xlarge`, `m5n.xlarge` ou d'autres types d'instances similaires.
  + Lorsque vous déployez votre groupe de nœuds avec le type de capacité Spot qui utilise un modèle de lancement personnalisé, utilisez l’API pour transmettre plusieurs types d’instances. Ne transmettez pas un seul type d’instance via le modèle de lancement. Pour plus d'informations sur le déploiement d'un groupe de nœuds à l'aide d'un modèle de lancement, consultez [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md).

# Création d’un groupe de nœuds gérés pour votre cluster
<a name="create-managed-node-group"></a>

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](getting-started.md). Ces guides fournissent des procédures détaillées pour créer un cluster Amazon EKS avec des nœuds.

**Important**  
Les nœuds Amazon EKS sont des instances Amazon EC2 standard. La facturation s’applique selon les tarifs normaux d’Amazon EC2. Pour plus d’informations, consultez [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Vous ne pouvez pas créer de nœuds gérés dans une AWS région où AWS Outposts ou AWS Wavelength sont activés. Vous pouvez créer des nœuds autogérés à la place. Pour plus d’informations, consultez [Créer des nœuds Amazon Linux autogérés](launch-workers.md), [Créer des nœuds Microsoft Windows autogérés](launch-windows-workers.md) et [Créer des nœuds Bottlerocket autogérés](launch-node-bottlerocket.md). Vous pouvez également créer un groupe de nœuds Amazon Linux autogéré sur un Outpost. Pour de plus amples informations, veuillez consulter [Créez des nœuds Amazon Linux sur AWS Outposts](eks-outposts-self-managed-nodes.md).
Si vous ne [spécifiez pas un ID d’AMI](launch-templates.md#launch-template-custom-ami) pour le fichier `bootstrap.sh` inclus dans Linux ou Bottlerocket optimisé pour Amazon EKS, les groupes de nœuds gérés imposent un nombre maximal à la valeur de `maxPods`. Pour les instances de moins de 30 VCPUs, le nombre maximum est de`110`. Pour les instances avec une tension supérieure à 30 VCPUs, le nombre maximum passe à`250`. Cette application remplace les autres `maxPods` configurations, notamment`maxPodsExpression`. Pour plus d'informations sur le `maxPods` mode de détermination et sur la manière de le personnaliser, consultez[Comment est déterminé MaxPods](choosing-instance-type.md#max-pods-precedence).
+ Un cluster Amazon EKS existant. Pour en déployer un, consultez [Création d’un cluster Amazon EKS](create-cluster.md).
+ Un rôle IAM existant pour les nœuds à utiliser. Pour en créer un, consultez [Rôle IAM de nœud Amazon EKS](create-node-role.md). Si ce rôle ne comporte aucune des politiques pour le VPC CNI, le rôle distinct suivant est nécessaire pour les pods VPC CNI.
+ (Facultatif, mais recommandé) Le plug-in CNI Amazon VPC pour le module complémentaire Kubernetes est configuré avec son propre rôle IAM auquel est associée la politique IAM nécessaire. Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).
+ Connaissance des considérations répertoriées dans [Choisissez un type d’instance de nœud Amazon EC2 optimal](choosing-instance-type.md). Selon le type d'instance que vous choisissez, il peut y avoir des prérequis supplémentaires pour votre cluster et votre VPC.
+ Pour ajouter un groupe de nœuds gérés Windows, vous devez d’abord activer la prise en charge Windows pour votre cluster. Pour de plus amples informations, veuillez consulter [Déployer des nœuds Windows sur des clusters EKS](windows-support.md).

Vous pouvez créer un groupe de nœuds gérés avec l’une des options suivantes :
+  [`eksctl`](#eksctl_create_managed_nodegroup) 
+  [AWS Management Console](#console_create_managed_nodegroup) 

## `eksctl`
<a name="eksctl_create_managed_nodegroup"></a>

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

Cette procédure nécessite `eksctl` version `0.215.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](https://eksctl.io/installation) dans la documentation `eksctl`.

1. (Facultatif) Si la politique IAM gérée **AmazonEKS\$1CNI\$1Policy** est attachée à votre [rôle IAM de nœud Amazon EKS](create-node-role.md), nous recommandons de l’attribuer plutôt à un rôle IAM associé au compte de service `aws-node` Kubernetes. Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).

1. 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 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 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](choosing-instance-type.md).

Remplacez *ami-family* par un mot clé autorisé. Pour plus d'informations, consultez [Définition de la famille AMI de nœuds](https://eksctl.io/usage/custom-ami-support/#setting-the-node-ami-family) 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le *Guide de l’utilisateur Amazon EC2*. Pour plus d’informations Windows, consultez [Paires de clés Amazon EC2 et instances Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

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](cni-increase-ip-addresses.md), [Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé](cni-custom-network.md) et [Déployer des clusters privés avec un accès Internet limité](private-clusters.md) 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 .

 **Avec un 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](launch-templates.md#launch-template-basics). 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

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 valeurs d'exemple, puis exécutez la commande modifiée pour créer le `eks-nodegroup.yaml` fichier. 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](https://eksctl.io/usage/schema/) 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](cni-increase-ip-addresses.md), [Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé](cni-custom-network.md) et [Déployer des clusters privés avec un accès Internet limité](private-clusters.md), 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 .

   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é](cni-custom-network.md) ou si vous souhaitez [augmenter le nombre d’adresses IP attribuées à votre instance](cni-increase-ip-addresses.md). Pour de plus amples informations, veuillez consulter .

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

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

## AWS Management Console
<a name="console_create_managed_nodegroup"></a>

 **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`.

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

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

1. Sélectionner l'onglet **Calcul**.

1. Choisissez **Ajouter un groupe de nœuds**.

1. 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, veuillez consulter [Rôle IAM de nœud Amazon EKS](create-node-role.md).
**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](delete-managed-node-group.md).
   +  **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](cni-increase-ip-addresses.md), [Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé](cni-custom-network.md) et [Déployer des clusters privés avec un accès Internet limité](private-clusters.md).

     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](launch-templates.md). 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 implémentez [des rôles IAM pour les comptes de service](iam-roles-for-service-accounts.md), si vous attribuez les autorisations nécessaires directement à chaque pod nécessitant un accès aux AWS services, et si aucun pod de votre cluster n'a besoin d'accéder à IMDS pour d'autres raisons, telles que la récupération de la AWS région actuelle, vous pouvez également désactiver l'accès à IMDS pour les 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](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
   +  **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, veuillez consulter [Recette : empêcher la planification de pods sur des nœuds spécifiques](node-taints-managed-node-groups.md).
   +  **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, veuillez consulter [Organiser les ressources Amazon EKS à l’aide de balises](eks-using-tags.md).

1. 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 prendre en compte les points à prendre en compte dans [Arm Amazon Linux optimisé pour Amazon EKS AMIs](eks-optimized-ami.md#arm-ami) 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](launch-templates.md#launch-template-custom-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](managed-node-groups.md#managed-node-group-capacity-types). 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. Consultez la section [Réserver GPUs pour les groupes de nœuds gérés](https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks-mng.html) pour obtenir des informations sur le provisionnement et le dimensionnement des nœuds de travail accélérés par GPU.
   +  **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 [Choix du type d’instance Amazon EC2 optimal pour les nœuds](choosing-instance-type.md).

     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'est pas affiché`eksctl`, utilisez la AWS CLI ou un SDK pour créer le groupe de nœuds. AWS CloudFormation 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 activé. AWS](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)
   +  **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, veuillez consulter [Détectez les problèmes de santé des nœuds et activez la réparation automatique des nœuds](node-health.md).

1. 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](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) 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 `eksctl` des [AWS CloudFormation modèles vendus par Amazon EKS](creating-a-vpc.md) 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 la section [Modification de l'attribut d' IPv4 adressage public de votre sous-réseau](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip).
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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html) 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, veuillez consulter [Utilisation des groupes de sécurité](launch-templates.md#launch-template-security-groups).
**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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le *Guide de l’utilisateur Amazon EC2*. Pour plus d’informations Windows, consultez [Paires de clés Amazon EC2 et instances Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) 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 à des groupes de nœuds utilisant Bottlerocket AMIs, le conteneur administratif est également activé. Pour plus d'informations, consultez [Conteneur d'administration](https://github.com/bottlerocket-os/bottlerocket#admin-container) 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`).

1. 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](troubleshooting.md#worker-node-fail) du chapitre Dépannage.

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

   ```
   kubectl get nodes --watch
   ```

1. (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](https://github.com/NVIDIA/k8s-device-plugin) DaemonSet sur votre cluster. *vX.X.X*Remplacez-le par la s-device-plugin version [Nvidia/K8](https://github.com/NVIDIA/k8s-device-plugin/releases) 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
   ```

## Installation des modules complémentaires Kubernetes
<a name="_install_kubernetes_add_ons"></a>

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.
+ Le [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) qui a créé le cluster est le seul principal qui peut effectuer des appels vers le serveur API Kubernetes avec `kubectl` ou le AWS Management Console. Si vous souhaitez que d'autres principaux IAM aient accès à votre cluster, vous devez les ajouter. Pour plus d’informations, consultez [Accorder aux utilisateurs et aux rôles IAM l'accès à Kubernetes APIs](grant-k8s-access.md) et [Autorisations requises](view-kubernetes-resources.md#view-kubernetes-resources-permissions).
+ 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

  Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
+ Configurez l’outil [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) de Kubernetes pour ajuster automatiquement le nombre de nœuds dans vos groupes de nœuds.
+ Déployez un [exemple d'application](sample-deployment.md) sur votre cluster.
+  [Organisez et surveillez les ressources du cluster](eks-managing.md) à l’aide d’outils importants pour gérer votre cluster.

# Mettre à jour un groupe de nœuds gérés pour votre cluster
<a name="update-managed-node-group"></a>

Lorsque vous lancez une mise à jour d’un groupe de nœuds gérés, Amazon EKS met automatiquement à jour vos nœuds pour vous, en suivant les étapes décrites dans la section [Comprendre chaque phase des mises à jour des nœuds](managed-node-update-behavior.md). Si vous utilisez une AMI optimisée pour Amazon EKS, Amazon EKS applique automatiquement les derniers correctifs de sécurité et les dernières mises à jour du système d’exploitation à vos nœuds dans le cadre de la dernière version publiée de l’AMI.

Il existe plusieurs scénarios dans lesquels il est utile de mettre à jour la version ou la configuration de votre groupe de nœuds gérés Amazon EKS :
+ Vous avez mis à jour la version de Kubernetes de votre cluster Amazon EKS et vous souhaitez mettre à jour vos nœuds pour utiliser la même version de Kubernetes.
+ Une nouvelle version d'AMI est disponible pour votre groupe de nœuds gérés. Pour plus d'informations sur les versions d'AMI, consultez ces sections :
  +  [Récupérer les informations sur la version Amazon Linux AMI](eks-linux-ami-versions.md) 
  +  [Créez des nœuds avec Bottlerocket optimisé AMIs](eks-optimized-ami-bottlerocket.md) 
  +  [Récupérez les informations relatives à la version des AMI Windows](eks-ami-versions-windows.md) 
+ Vous souhaitez ajuster le nombre minimum, maximum ou souhaité d'instances dans votre groupe de nœuds gérés.
+ Vous voulez ajouter ou supprimer les labels Kubernetes des instances de votre groupe de nœuds gérés.
+ Vous souhaitez ajouter ou supprimer des AWS balises dans votre groupe de nœuds gérés.
+ Vous devez déployer une nouvelle version d'un modèle de lancement avec des modifications de configuration, telles qu'une AMI personnalisée mise à jour.
+ Vous avez déployé une version `1.9.0` ou une version ultérieure du module complémentaire Amazon VPC CNI, activé le module complémentaire pour la délégation de préfixes et souhaitez que les nouvelles instances de AWS Nitro System dans un groupe de nœuds prennent en charge un nombre considérablement accru de pods. Pour de plus amples informations, veuillez consulter [Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes](cni-increase-ip-addresses.md).
+ Vous avez activé la délégation de préfixes IP pour les nœuds Windows et vous souhaitez que les nouvelles instances AWS Nitro System d'un groupe de nœuds prennent en charge un nombre considérablement accru de pods. Pour de plus amples informations, veuillez consulter [Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes](cni-increase-ip-addresses.md).

S’il existe une version AMI plus récente pour la version Kubernetes de votre groupe de nœuds gérés, vous pouvez mettre à jour la version de votre groupe de nœuds afin d’utiliser la version AMI plus récente. De même, si votre cluster exécute une version de Kubernetes plus récente que celle de votre groupe de nœuds, vous pouvez mettre à jour le groupe de nœuds afin d’utiliser la dernière version AMI pour correspondre à la version Kubernetes de votre cluster.

Lorsqu’un nœud d’un groupe de nœuds gérés est résilié en raison d’une opération de mise à l’échelle ou d’une mise à jour, les pods de ce nœud sont d’abord vidés. Pour de plus amples informations, veuillez consulter [Comprendre chaque phase des mises à jour des nœuds](managed-node-update-behavior.md).

## Mise à jour d'une version de groupe de nœuds
<a name="mng-update"></a>

Vous pouvez mettre à jour la version d’un groupe de nœuds à l’aide de l’une des méthodes suivantes :
+  [`eksctl`](#eksctl_update_managed_nodegroup) 
+  [AWS Management Console](#console_update_managed_nodegroup) 

La version vers laquelle vous effectuez la mise à jour ne peut pas être supérieure à la version du plan de contrôle.

## `eksctl`
<a name="eksctl_update_managed_nodegroup"></a>

 **Mettre à jour un groupe de nœuds gérés à l’aide de `eksctl` ** 

Mettez à jour un groupe de nœuds gérés vers la dernière version AMI de la même version Kubernetes actuellement déployée sur les nœuds à l’aide de la commande suivante. Remplacez chaque *example value* par vos propres valeurs.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code
```

**Note**  
Si vous mettez à niveau un groupe de nœuds déployé avec un modèle de lancement vers une nouvelle version du modèle de lancement, ajoutez `--launch-template-version version-number ` à la commande précédente. Le modèle de lancement doit répondre aux exigences décrites dans [Personnaliser les nœuds gérés avec des modèles de lancement](launch-templates.md). Si le modèle de lancement inclut une AMI personnalisée, celle-ci doit répondre aux exigences décrites dans [Spécifier une AMI](launch-templates.md#launch-template-custom-ami). Lorsque vous mettez à niveau votre groupe de nœuds vers une version plus récente de votre modèle de lancement, chaque nœud est recyclé pour correspondre à la nouvelle configuration de la version du modèle de lancement spécifiée.

Il n’est pas possible de mettre à niveau directement un groupe de nœuds déployé sans modèle de lancement vers une nouvelle version du modèle de lancement. À la place, vous devez déployer un nouveau groupe de nœuds en utilisant le modèle de lancement pour mettre à jour le groupe de nœuds vers une nouvelle version du modèle de lancement.

Vous pouvez mettre à niveau un groupe de nœuds vers la même version que la version Kubernetes du plan de contrôle. Par exemple, si vous disposez d’un cluster exécutant Kubernetes `1.35`, vous pouvez mettre à niveau les nœuds exécutant actuellement Kubernetes `1.34` vers la version `1.35` à l’aide de la commande suivante.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code \
  --kubernetes-version=1.35
```

## AWS Management Console
<a name="console_update_managed_nodegroup"></a>

 **Mettre à jour un groupe de nœuds gérés à l’aide de la AWS Management Console ** 

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le cluster qui contient le groupe de nœuds à mettre à jour.

1. Si une mise à jour est disponible pour au moins un groupe de nœuds, une boîte de dialogue apparaît en haut de la page pour vous en informer. Si vous sélectionnez l’onglet **Calcul**, vous verrez **Mettre à jour maintenant** dans la colonne **Version de l’AMI** du tableau **Groupes de nœuds** pour le groupe de nœuds qui dispose d’une mise à jour disponible. Pour mettre à jour le groupe de nœuds, sélectionnez **Update now** (Mettre à jour maintenant).

   Vous ne verrez pas de notification pour les groupes de nœuds qui ont été déployés avec une AMI personnalisée. Si vos nœuds sont déployés avec une AMI personnalisée, effectuez les étapes suivantes pour déployer une nouvelle AMI personnalisée mise à jour.

   1. Créez une version de votre AMI.

   1. Créez une version de modèle de lancement avec le nouvel ID d'AMI.

   1. Mettez à niveau les nœuds vers la nouvelle version du modèle de lancement.

1. Dans la boîte de dialogue **Update node group version** (Mettre à jour la version du groupe de nœuds), activez ou désactivez les options suivantes :
   +  **Update node group version** (Mettre à jour la version du groupe de nœuds) : cette option n'est pas disponible si vous avez déployé une AMI personnalisée ou que votre AMI optimisée pour Amazon EKS correspond actuellement à la dernière version de votre cluster.
   +  **Change launch template version** (Modifier la version du modèle de lancement) : cette option n'est pas disponible si le groupe de nœuds est déployé sans modèle de lancement personnalisé. Vous pouvez uniquement mettre à jour la version du modèle de lancement pour un groupe de nœuds qui a été déployé avec un modèle de lancement personnalisé. Sélectionnez la **Version du modèle de lancement** vers laquelle vous souhaitez mettre à jour le groupe de nœuds. Si votre groupe de nœuds est configuré avec une AMI personnalisée, la version que vous sélectionnez doit également spécifier une AMI. Lorsque vous passez à une version plus récente de votre modèle de lancement, chaque nœud est recyclé pour correspondre à la nouvelle configuration de la version du modèle de lancement spécifiée.

1. Pour **Update strategy** (Politique de mise à jour), sélectionnez l'une des options suivantes :
   +  **Mise à jour propagée** : cette option respecte les budgets de perturbation des pods pour votre cluster. Les mises à jour échouent s’il existe un problème de budget de perturbation des pods qui empêche Amazon EKS de vider correctement les pods qui s’exécutent sur ce groupe de nœuds.
   +  **Forcer la mise à jour** : cette option ne respecte pas les budgets de perturbation des pods. Les mises à jour ont lieu indépendamment des problèmes de budget de perturbation des pods en forçant le redémarrage des nœuds.

1. Choisissez **Mettre à jour**.

## Modification de la configuration d'un groupe de nœuds
<a name="mng-edit"></a>

Vous pouvez modifier une partie de la configuration d'un groupe de nœuds gérés.

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le cluster qui contient le groupe de nœuds à modifier.

1. Sélectionnez l'onglet **Compute** (Calcul).

1. Sélectionnez le groupe de nœuds à modifier, puis choisissez **Edit** (Modifier).

1. (Facultatif) Sur la page **Edit node group** (Modifier le groupe de nœuds), effectuez les opérations suivantes :

   1. Modifiez la **Node group scaling configuration** (Configuration de mise à l'échelle du groupe de nœuds).
      +  **Taille souhaitée** : spécifiez le nombre actuel de nœuds que le groupe de nœuds gérés doit conserver au lancement.
      +  **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. Pour connaître le nombre maximal de noeuds pris en charge dans un groupe de nœuds, consultez [Afficher et gérer les quotas de service Amazon EKS et Fargate](service-quotas.md).

   1. (Facultatif) Ajoutez ou supprimez des **étiquettes Kubernetes** aux nœuds de votre groupe de nœuds. Les labels affichés ici sont uniquement ceux que vous avez appliqués avec Amazon EKS. D’autres étiquettes peuvent exister sur vos nœuds et ne pas être affichées ici.

   1. (Facultatif) Ajoutez ou supprimez des **rejets Kubernetes** aux nœuds de votre groupe de nœuds. Les taints ajoutés peuvent avoir l'effet de ` NoSchedule `, ` NoExecute ` ou ` PreferNoSchedule `. Pour de plus amples informations, veuillez consulter [Recette : empêcher la planification de pods sur des nœuds spécifiques](node-taints-managed-node-groups.md).

   1. (Facultatif) Ajoutez ou supprimez des **Tags** (Balises) de la ressource de votre groupe de nœuds. Ces identifications ne sont appliquées qu'au groupe de nœuds Amazon EKS. Ils ne se propagent pas à d’autres ressources, telles que les sous-réseaux ou les instances Amazon EC2 du groupe de nœuds.

   1. (Facultatif) Modifiez la **Configuration des mises à jour du groupe**. Sélectionnez **Number (Nombre)** ou **Percentage (Pourcentage)**.
      +  **Nombre** : sélectionnez et spécifiez le nombre de nœuds de votre groupe de nœuds pouvant être mis à jour en parallèle. Ces nœuds ne seront pas disponibles pendant la mise à jour.
      +  **Pourcentage** : sélectionnez et spécifiez le pourcentage de nœuds de votre groupe de nœuds pouvant être mis à jour en parallèle. Ces nœuds ne seront pas disponibles pendant la mise à jour. Ceci est utile si vous avez beaucoup de nœuds dans votre groupe de nœuds.

   1. Une fois vos modifications terminées, sélectionnez **Enregistrer les modifications**.

**Important**  
Lors de la mise à jour de la configuration du groupe de nœuds, la modification du [https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html)ne respecte pas les budgets d'interruption du pod (PDBs). Contrairement au processus de [mise à jour des groupes de nœuds](managed-node-update-behavior.md) (qui draine les nœuds et les respecte PDBs pendant la phase de mise à niveau), la mise à jour de la configuration de dimensionnement entraîne la fermeture immédiate des nœuds via un appel de réduction automatique du groupe Auto Scaling (ASG). Cela se produit sans réfléchir PDBs, quelle que soit la taille de la cible à laquelle vous réduisez la taille. Cela signifie que lorsque vous réduisez le nombre `desiredSize` d'un groupe de nœuds géré par Amazon EKS, les pods sont expulsés dès que les nœuds sont fermés, sans en honorer aucun. PDBs

# Comprendre chaque phase des mises à jour des nœuds
<a name="managed-node-update-behavior"></a>

La stratégie de mise à jour des composants master d'Amazon EKS comporte quatre phases différentes décrites dans les sections suivantes.

## Phase de configuration
<a name="managed-node-update-set-up"></a>

La phase de configuration comporte les étapes suivantes :

1. Une nouvelle version du modèle de lancement Amazon EC2 est créée pour le groupe Auto Scaling associé à votre groupe de nœuds. La nouvelle version du modèle de lancement utilise l'AMI cible ou une version personnalisée du modèle de lancement pour la mise à jour.

1. Le groupe Auto Scaling est mis à jour pour utiliser la dernière version du modèle de lancement.

1. La quantité maximale de nœuds à mettre à niveau en parallèle est déterminée à l'aide de la propriété `updateConfig` pour le groupe de nœuds. Le maximum indisponible a un quota de 100 nœuds. La valeur par défaut est de un nœud. Pour plus d’informations, consultez la propriété [updateConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupConfig.html#API_UpdateNodegroupConfig_RequestSyntax) dans la *référence API Amazon EKS*.

## Phase d'augmentation d'échelle
<a name="managed-node-update-scale-up"></a>

Lors de la mise à niveau des nœuds d'un groupe de nœuds gérés, les nœuds mis à niveau sont lancés dans la même zone de disponibilité que ceux qui sont mis à niveau. Pour garantir ce placement, nous utilisons le rééquilibrage de la zone de disponibilité d’Amazon EC2. Pour plus d'informations, consultez [Rééquilibrage de la zone de disponibilité](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage) dans le *Guide de l'utilisateur Amazon EC2 Auto Scaling*. Pour répondre à cette exigence, il est possible que nous lancions jusqu’à deux instances par zone de disponibilité dans votre groupe de nœuds gérés.

La phase d'augmentation d'échelle comporte les étapes suivantes :

1. Il augmente la taille maximale et la taille souhaitée du groupe Auto Scaling en fonction de la plus grande des deux valeurs suivantes :
   + Jusqu’à deux fois le nombre de zones de disponibilité dans lesquelles le groupe Auto Scaling est déployé.
   + Le maximum indisponible de la mise à niveau.

     Par exemple, si votre groupe de nœuds a cinq zones de disponibilité et que `maxUnavailable` est égal à un, le processus de mise à niveau peut lancer un maximum de 10 nœuds. Cependant, lorsque `maxUnavailable` est égale à 20 (ou supérieure à 10), le processus lance 20 nouveaux nœuds.

1. Après la mise à l'échelle du groupe Auto Scaling, elle vérifie si les nœuds utilisant la dernière configuration sont présents dans le groupe de nœuds. Cette étape ne réussit que si elle répond à ces critères :
   + Au moins un nouveau nœud est lancé dans chaque zone de disponibilité où le nœud existe.
   + Chaque nouveau nœud doit être dans l'état `Ready`.
   + Les nouveaux nœuds doivent avoir des étiquettes Amazon EKS appliquées.

     Il s'agit des étiquettes Amazon EKS appliquées sur les composants master d'un groupe de nœuds réguliers :
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 

     Il s'agit des étiquettes appliquées par Amazon EKS sur les composants master dans un modèle de lancement personnalisé ou un groupe de composants AMI :
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 
     +  `eks.amazonaws.com/sourceLaunchTemplateId=$launchTemplateId` 
     +  `eks.amazonaws.com/sourceLaunchTemplateVersion=$launchTemplateVersion` 

1. Il marque les nœuds comme non planifiables afin d’éviter la planification de nouveaux pods. Il étiquette également les nœuds avec `node.kubernetes.io/exclude-from-external-load-balancers=true` afin de supprimer les anciens nœuds des équilibreurs de charge avant de les terminer.

Les raisons suivantes sont connues pour provoquer une erreur `NodeCreationFailure` dans cette phase :

 **Capacité insuffisante dans la zone de disponibilité**   
Il est possible que la zone de disponibilité n'ait pas la capacité des types d'instance demandés. Il est recommandé de configurer plusieurs types d’instances lors de la création d’un groupe de nœuds gérés.

 **Limites d’instance EC2 sur votre compte**   
Vous pouvez être amené à augmenter le nombre d'instances Amazon EC2 que votre compte peut exécuter simultanément en utilisant Service Quotas. Pour plus d'informations, consultez [EC2 Service Quotas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) dans le *Guide de l'utilisateur Amazon Elastic Compute Cloud pour les instances Linux*.

 **Données utilisateur personnalisées**   
Les données utilisateur personnalisées peuvent parfois interrompre le processus d'amorçage. Ce scénario peut conduire à ce que le `kubelet` ne démarre pas sur le nœud ou que les nœuds n'obtiennent pas les étiquettes Amazon EKS attendues. Pour de plus amples informations, consultez [Spécification d'une AMI](launch-templates.md#launch-template-custom-ami).

 **Toute modification qui rend un nœud défectueux ou pas prêt**   
La pression du disque sur le nœud, la pression de la mémoire et des conditions similaires peuvent empêcher un nœud de passer à l'état `Ready`.

 **Chaque nœud démarre le plus rapidement en 15 minutes**   
Si un nœud prend plus de 15 minutes pour démarrer et rejoindre le cluster, cela entraînera l’expiration de la mise à niveau. Il s’agit de la durée totale nécessaire au démarrage d’un nouveau nœud, mesurée à partir du moment où un nouveau nœud est requis jusqu’à son intégration au cluster. Lors de la mise à niveau d’un groupe de nœuds gérés, le compteur de temps démarre dès que la taille du groupe Auto Scaling augmente.

## Phase de mise à niveau
<a name="managed-node-update-upgrade"></a>

La phase de mise à niveau se déroule de deux manières différentes, selon la *stratégie de mise à jour*. Il existe deux stratégies de mise à jour : **par défaut** et **minimale**.

Nous vous recommandons d’utiliser la stratégie par défaut. Il crée de nouveaux nœuds avant de mettre fin aux anciens, afin que la capacité disponible soit maintenue pendant la phase de mise à niveau. Cette stratégie minimale est utile lorsque les ressources ou les coûts sont limités, par exemple avec des accélérateurs matériels tels que des GPU. Il met fin aux anciens nœuds avant d’en créer de nouveaux, afin que la capacité totale ne dépasse jamais la quantité que vous avez configurée.

La stratégie de mise à jour *par défaut* comprend les étapes suivantes :

1. Il augmente le nombre de nœuds (nombre souhaité) dans le groupe Auto Scaling, ce qui entraîne la création de nœuds supplémentaires par le groupe de nœuds.

1. Un nœud est sélectionné aléatoirement pour mise à niveau, jusqu'au maximum indisponible configuré pour le groupe de nœuds.

1. Il vide les pods du nœud. Si les pods ne quittent pas le nœud dans les 15 minutes et qu’il n’y a pas d’indicateur de force, la phase de mise à niveau échoue avec une erreur `PodEvictionFailure`. Pour ce scénario, vous pouvez appliquer l’indicateur de force avec la demande `update-nodegroup-version` de suppression des pods.

1. Il isole le nœud après chaque expulsion de pod et attend 60 secondes. Cela permet au contrôleur de services de ne pas envoyer de nouvelles requêtes à ce nœud et de le supprimer de sa liste de nœuds actifs.

1. Une demande d'arrêt est envoyée au groupe Auto Scaling pour le nœud isolé.

1. Les étapes de mise à niveau précédentes sont répétées jusqu'à ce que le groupe de nœuds ne comporte plus aucun nœud déployé avec la version antérieure du modèle de lancement.

La stratégie de mise à jour *minimale* comprend les étapes suivantes :

1. Il isole tous les nœuds du groupe de nœuds au début, afin que le contrôleur de service n’envoie aucune nouvelle requête à ces nœuds.

1. Un nœud est sélectionné aléatoirement pour mise à niveau, jusqu'au maximum indisponible configuré pour le groupe de nœuds.

1. Il vide les pods des nœuds sélectionnés. Si les pods ne quittent pas le nœud dans les 15 minutes et qu’il n’y a pas d’indicateur de force, la phase de mise à niveau échoue avec une erreur `PodEvictionFailure`. Pour ce scénario, vous pouvez appliquer l’indicateur de force avec la demande `update-nodegroup-version` de suppression des pods.

1. Une fois que chaque pod a été évincé et a attendu 60 secondes, il envoie une demande de résiliation au groupe Auto Scaling pour les nœuds sélectionnés. Le groupe Auto Scaling crée de nouveaux nœuds (en nombre égal à celui des nœuds sélectionnés) pour remplacer la capacité manquante.

1. Les étapes de mise à niveau précédentes sont répétées jusqu'à ce que le groupe de nœuds ne comporte plus aucun nœud déployé avec la version antérieure du modèle de lancement.

### Erreurs `PodEvictionFailure` lors de la phase de mise à niveau
<a name="_podevictionfailure_errors_during_the_upgrade_phase"></a>

Les raisons suivantes sont connues pour provoquer une erreur `PodEvictionFailure` dans cette phase :

 **PDB agressif**   
Un PDB agressif est défini sur le pod ou plusieurs PDB pointent vers le même pod.

 **Déploiement tolérant tous les rejets**   
Une fois que tous les pods ont été évacués, le nœud devrait être vide, car il a été [rejeté](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) lors des étapes précédentes. Toutefois, si le déploiement tolère toutes les rejets, il est plus probable que le nœud ne soit pas vide, ce qui entraîne l’échec de l’éviction du pod.

## Phase de réduction d'échelle
<a name="managed-node-update-scale-down"></a>

La phase de réduction d'échelle diminue la taille maximale et la taille souhaitée du groupe Auto Scaling d'une unité pour revenir aux valeurs avant le début de la mise à jour.

Si le flux de mise à jour détermine que le Cluster Autoscaler augmente le groupe de nœuds pendant la phase de réduction d'échelle du flux de travail, il se termine immédiatement sans ramener le groupe de nœuds à sa taille d'origine.

# Personnaliser les nœuds gérés à l’aide de modèles de lancement
<a name="launch-templates"></a>

Pour un niveau de personnalisation maximal, vous pouvez déployer des nœuds gérés avec votre propre modèle de lancement en suivant les étapes décrites sur cette page. L'utilisation d'un modèle de lancement permet des fonctionnalités telles que la fourniture d'arguments d'amorçage lors du déploiement d'un nœud (par exemple, des arguments [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) supplémentaires), l'attribution d'adresses IP aux pods à partir d'un bloc CIDR différent de l'adresse IP attribuée au nœud, le déploiement de votre propre AMI personnalisée sur les nœuds ou le déploiement de votre propre CNI personnalisé sur les nœuds.

Si vous fournissez votre propre modèle de lancement lors de la création en premier lieu d'un groupe de nœuds gérés, vous bénéficierez également d'une plus grande flexibilité par la suite. Pourvu que vous déployiez un groupe de nœuds gérés avec votre propre modèle de lancement, vous pouvez le mettre à jour de façon itérative avec une version différente du même modèle de lancement. Lorsque vous mettez à jour votre groupe de nœuds vers une version différente de votre modèle de lancement, tous les nœuds du groupe sont recyclés pour correspondre à la nouvelle configuration de la version spécifiée du modèle de lancement.

Les groupes de nœuds gérés sont toujours déployés avec un modèle de lancement à utiliser avec le groupe Amazon EC2 Auto Scaling. Si vous ne fournissez pas de modèle de lancement, l’API Amazon EKS en crée automatiquement un avec les valeurs par défaut de votre compte. Cependant, il est déconseillé de modifier les modèles de lancement générés automatiquement. De plus, les groupes de nœuds existants qui n’utilisent pas de modèle de lancement personnalisé ne peuvent pas être mis à jour directement. Vous devez plutôt créer un nouveau groupe de nœuds avec un modèle de lancement personnalisé à cet effet.

## Concepts de base de la configuration d'un modèle de lancement
<a name="launch-template-basics"></a>

Vous pouvez créer un modèle de lancement Amazon EC2 Auto Scaling à l'aide de AWS Management Console la AWS CLI ou d' AWS un SDK. Pour plus d'informations, consultez [Création d'un modèle de lancement pour un groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) dans le *Guide de l'utilisateur Amazon EC2 Auto Scaling*. Certains des paramètres d'un modèle de lancement sont similaires aux paramètres utilisés pour la configuration des nœuds gérés. Lors du déploiement ou de la mise à jour d'un groupe de nœuds avec un modèle de lancement, certains paramètres doivent être spécifiés soit dans la configuration du groupe de nœuds, soit dans le modèle de lancement. Veuillez ne pas spécifier un paramètre aux deux endroits. Si un paramètre existe là où il ne devrait pas, les opérations telles que la création ou la mise à jour d’un groupe de nœuds échoueront.

Le tableau suivant répertorie les paramètres interdits dans un modèle de lancement. Il répertorie également les paramètres similaires, s'il en existe, qui sont requis dans la configuration du groupe de nœuds géré. Les paramètres répertoriés sont les paramètres qui apparaissent dans la console. Ils peuvent avoir des noms similaires mais différents dans la AWS CLI et le SDK.


| Modèle de lancement – Interdit | Configuration d'un groupe de nœuds Amazon EKS | 
| --- | --- | 
|   **Sous-réseau** sous **Interfaces réseau** (**Ajouter une interface réseau**)  |   **Sous-réseaux** sous **Configuration réseau du groupe de nœuds** sur la page **Spécifier le réseau**  | 
|   **Profil d'instance IAM** sous **Détails avancés**   |   **Rôle IAM de nœud** sous **Configuration du groupe de nœuds** sur la page **Configurer le groupe de nœuds**  | 
|   **Comportement d'arrêt** et **Arrêt – Comportement de mise en veille prolongée** sous **Détails avancés**. Conservez le paramètre par défaut **Ne pas inclure dans le modèle de lancement** dans le modèle de lancement pour les deux paramètres.  |  Pas d'équivalent. Amazon EKS doit contrôler le cycle de vie de l'instance et non pas le groupe Auto Scaling.  | 

Le tableau suivant répertorie les paramètres interdits dans une configuration de groupe de nœuds gérée. Il répertorie également les paramètres similaires, s'il en existe, qui sont requis dans un modèle de lancement. Les paramètres répertoriés sont les paramètres qui apparaissent dans la console. Ils peuvent porter des noms similaires dans la AWS CLI et le SDK.


| Configuration du groupe de nœuds Amazon EKS : Interdite | Modèle de lancement | 
| --- | --- | 
|  (Seulement si vous avez spécifié une AMI personnalisée dans un modèle de lancement) **AMI type** (Type d'AMI) sous **Node Group compute configuration** (Configuration du calcul du groupe de nœuds) sur la page **Set compute and scaling configuration** (Définir la configuration de calcul et de mise à l'échelle) : la console affiche **Specified in launch template** (Spécifié dans le modèle de lancement) et l'ID d'AMI spécifié. Si **Images d’application et de système d’exploitation (Amazon Machine Image)** n’a pas été spécifié dans le modèle de lancement, vous pouvez sélectionner une AMI dans la configuration du groupe de nœuds.  |   **Images d'applications et de systèmes d'exploitation (Amazon Machine Image)** sous **Contenu du modèle de lancement** : vous devez spécifier un ID dans l'un des cas suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/launch-templates.html)  | 
|   **Taille du disque** sous **Configuration de calcul du groupe de nœuds** sur la page **Définir la configuration de calcul et de mise à l'échelle** : la console affiche **Spécifié dans le modèle de lancement**.  |   **Taille** sous **Stockage (volumes)** (**Ajouter un nouveau volume**). Vous devez le spécifier dans le modèle de lancement.  | 
|   **Paire de clés SSH** sous **Configuration du groupe de nœuds** sur la page **Spécifier le réseau** : la console affiche la clé spécifiée dans le modèle de lancement ou **Non spécifié dans le modèle de lancement**.  |   **Nom de la paire de clés** sous **Paire de clés (connexion)**.  | 
|  Vous ne pouvez pas spécifier de groupes de sécurité source autorisés à accéder à distance lorsque vous utilisez un modèle de lancement.  |   **Groupes de sécurité** sous **Paramètres réseau** pour l'instance ou **Groupes de sécurité** sous **Interfaces réseau** (**Ajouter une interface réseau**), mais pas les deux. Pour de plus amples informations, veuillez consulter [Utilisation des groupes de sécurité](#launch-template-security-groups).  | 

**Note**  
Si vous déployez un groupe de nœuds à l'aide d'un modèle de lancement, spécifiez zéro ou un **type d'instance** sous **Contenu du modèle de lancement** dans un modèle de lancement. Vous pouvez également spécifier de 0 à 20 types d'instance sous **types d'instance** sur la page **Définir la configuration de calcul et de mise à l'échelle** dans la console. Vous pouvez également le faire à l'aide d'autres outils qui utilisent l'API Amazon EKS. Si vous spécifiez un type d’instance dans un modèle de lancement et que vous utilisez ce modèle pour déployer votre groupe de nœuds, vous ne pouvez spécifier aucun type d’instance dans la console ou à l’aide d’autres outils qui utilisent l’API Amazon EKS. Si vous ne spécifiez pas de type d’instance dans un modèle de lancement, dans la console ou à l’aide d’autres outils utilisant l’API Amazon EKS, le type d’instance `t3.medium` est utilisé. Si votre groupe de nœuds utilise le type de capacité Spot, nous vous recommandons de spécifier plusieurs types d'instance à l'aide de la console. Pour de plus amples informations, veuillez consulter [Types de capacité des groupes de nœuds gérés](managed-node-groups.md#managed-node-group-capacity-types).
Si les conteneurs que vous déployez dans le groupe de nœuds utilisent le service de métadonnées d'instance version 2, veillez à définir `2` comme **limite de saut de réponse des métadonnées** dans votre modèle de lancement. Pour plus d'informations, consultez [Métadonnées d'instance et données utilisateur](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) dans le *Guide de l'utilisateur Amazon EC2*.
Les modèles de lancement ne prennent pas en charge la fonctionnalité `InstanceRequirements` qui permet une sélection flexible du type d’instance.

## Étiquetage des instances Amazon EC2
<a name="launch-template-tagging"></a>

Vous pouvez utiliser le paramètre `TagSpecification` d'un modèle de lancement pour spécifier les identifications à appliquer aux instances Amazon EC2 dans votre groupe de nœuds. L'entité IAM qui appelle le `CreateNodegroup` ou `UpdateNodegroupVersion` APIs doit disposer des autorisations pour `ec2:RunInstances` et`ec2:CreateTags`, et les balises doivent être ajoutées au modèle de lancement.

## Utilisation des groupes de sécurité
<a name="launch-template-security-groups"></a>

Vous pouvez utiliser un modèle de lancement pour spécifier des [groupes de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) Amazon EC2 à appliquer aux instances de votre groupe de nœuds. Vous pouvez le faire soit dans le paramètre des groupes de sécurité au niveau de l'instance, soit dans le cadre des paramètres de configuration de l'interface réseau. Cependant, vous ne pouvez pas créer un modèle de lancement qui spécifie à la fois le niveau d’instance et les groupes de sécurité de l’interface réseau. Prenez en compte les conditions suivantes qui s'appliquent à l'utilisation de groupes de sécurité personnalisés avec des groupes de nœuds gérés :
+ Lorsque vous utilisez le AWS Management Console, Amazon EKS n'autorise que les modèles de lancement dotés d'une seule spécification d'interface réseau.
+ Par défaut, Amazon EKS applique le [groupe de sécurité](sec-group-reqs.md) du cluster aux instances de votre groupe de nœuds pour faciliter la communication entre les nœuds et le plan de contrôle. Si vous spécifiez des groupes de sécurité personnalisés dans le modèle de lancement à l’aide de l’une des options mentionnées précédemment, Amazon EKS n’ajoute pas le groupe de sécurité du cluster. Vous devez donc vous assurer que les règles d'entrée et de sortie de vos groupes de sécurité permettent la communication avec le point de terminaison de votre cluster. Si vos règles de groupe de sécurité sont incorrectes, les composants master ne peuvent pas rejoindre le cluster. Pour plus d'informations sur les règles de groupe de sécurité, consultez [Voir les exigences relatives aux groupes de sécurité Amazon EKS pour les clusters](sec-group-reqs.md).
+ Si vous avez besoin d'un accès SSH aux instances de votre groupe de nœuds, incluez un groupe de sécurité qui autorise cet accès.

## Données utilisateur Amazon EC2
<a name="launch-template-user-data"></a>

Le modèle de lancement comprend une section pour les données utilisateur personnalisées. Vous pouvez définir les paramètres de configuration de votre groupe de nœuds dans cette section sans créer manuellement une personnalisation individuelle AMIs. Pour plus d'informations sur les paramètres disponibles pour Bottlerocket, consultez la section [Utilisation des données utilisateur](https://github.com/bottlerocket-os/bottlerocket#using-user-data) sur. GitHub

Vous pouvez fournir des données d'utilisateur Amazon EC2 dans votre modèle de lancement en utilisant `cloud-init` lors du lancement de vos instances. Pour plus d’informations, consultez la [documentation cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html). Vos données utilisateur peuvent être utilisées pour effectuer des opérations de configuration courantes. Elles comprennent :
+  [Inclusion d'utilisateurs ou de groupes](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups) 
+  [Installations de packages](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-arbitrary-packages) 

Les données utilisateur Amazon EC2 figurant dans les modèles de lancement utilisés avec des groupes de nœuds gérés doivent être au format d'archive en [plusieurs parties MIME pour Amazon Linux AMIs et au format](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive) TOML pour Bottlerocket. AMIs En effet, vos données utilisateur sont fusionnées avec les données utilisateur d'Amazon EKS requises pour que les nœuds puissent rejoindre le cluster. Ne spécifiez aucune commande dans vos données utilisateur qui démarre ou modifie `kubelet`. Ceci est effectué dans le cadre des données utilisateur fusionnées par Amazon EKS. Certains paramètres `kubelet`, tels que la définition des étiquettes sur les nœuds, peuvent être configurés directement via l'API des groupes de nœuds gérés.

**Note**  
Pour plus d'informations sur la personnalisation avancée de `kubelet`, y compris son démarrage manuel ou le passage de paramètres de configuration personnalisés, consultez [Spécification d'une AMI](#launch-template-custom-ami). Si un ID d’AMI personnalisé est spécifié dans un modèle de lancement, Amazon EKS ne fusionne pas les données utilisateur.

Les détails suivants fournissent plus d'informations sur la section des données utilisateur.

 **Données utilisateur Amazon Linux 2**   
Vous pouvez combiner plusieurs blocs de données utilisateur dans un seul fichier MIME multi-part. Par exemple, vous pouvez combiner un boothook cloud qui configure le démon Docker avec un script shell de données utilisateur qui installe un package personnalisé. Un fichier MIME multi-part est constitué des composants suivants :  
+ La déclaration de type de contenu et de limite de partie : `Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="` 
+ La déclaration de version MIME : `MIME-Version: 1.0` 
+ Un ou plusieurs blocs de données qui contiennent les composants suivants :
  + La limite de début qui signale le début d'un bloc de données utilisateur : `--==MYBOUNDARY==` 
  + La déclaration de type de contenu du bloc : `Content-Type: text/cloud-config; charset="us-ascii"`. Pour plus d'informations sur les types de contenus, consultez la [documentation sur Cloud-Init](https://cloudinit.readthedocs.io/en/latest/topics/format.html).
  + Le contenu des données utilisateur (par exemple, une liste de commandes shell ou de directives `cloud-init`).
  + La limite de fin qui signale la fin du fichier MIME multi-part : `--==MYBOUNDARY==--` 

  Voici un exemple de fichier MIME multi-part que vous pouvez utiliser pour créer le vôtre.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--
```

 **Données utilisateur Amazon Linux 2023**   
Amazon Linux 2023 (AL2023) introduit un nouveau processus d'initialisation des nœuds `nodeadm` qui utilise un schéma de configuration YAML. Si vous utilisez des groupes de nœuds autogérés ou une AMI avec un modèle de lancement, vous devez désormais fournir explicitement des métadonnées de cluster supplémentaires lors de la création d’un nouveau groupe de nœuds. Un [exemple](https://awslabs.github.io/amazon-eks-ami/nodeadm/) des paramètres minimum requis est présenté ci-dessous, où `apiServerEndpoint`, `certificateAuthority` et le service `cidr` sont désormais obligatoires :  

```
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
```
Vous définirez généralement cette configuration dans vos données utilisateur, soit telle quelle, soit intégrée dans un document MIME multipart :  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig spec: [...]

--BOUNDARY--
```
Dans AL2, les métadonnées de ces paramètres ont été découvertes à partir de l'appel d'`DescribeCluster`API Amazon EKS. Avec AL2023, ce comportement a changé car l'appel d'API supplémentaire risque d'être limité lors de la mise à l'échelle de nœuds à grande échelle. Cette modification ne vous affecte pas si vous utilisez des groupes de nœuds gérés sans modèle de lancement, ou si vous utilisez Karpenter. Pour plus d’informations sur `certificateAuthority` et le service `cidr`, consultez [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) dans la *Référence de l’API Amazon EKS*.  
Voici un exemple complet de données AL2023 utilisateur qui combine un script shell pour personnaliser le nœud (comme l'installation de packages ou la pré-mise en cache des images de conteneur) avec la configuration requise. `nodeadm` Cet exemple présente des personnalisations courantes, notamment : \$1 L’installation de paquets système supplémentaires \$1 La mise en cache préalable des images de conteneur pour améliorer le temps de démarrage des pods \$1 La configuration du proxy HTTP \$1 La configuration des métriques `kubelet` pour l’étiquetage des nœuds  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset

# Install additional packages
yum install -y htop jq iptables-services

# Pre-cache commonly used container images
nohup docker pull public.ecr.aws/eks-distro/kubernetes/pause:3.2 &

# Configure HTTP proxy if needed
cat > /etc/profile.d/http-proxy.sh << 'EOF'
export HTTP_PROXY="http://proxy.example.com:3128"
export HTTPS_PROXY="http://proxy.example.com:3128"
export NO_PROXY="localhost,127.0.0.1,169.254.169.254,.internal"
EOF

--BOUNDARY
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
  kubelet:
    config:
      clusterDNS:
      - 10.100.0.10
    flags:
    - --node-labels=app=my-app,environment=production

--BOUNDARY--
```

 **Données utilisateur Bottlerocket**   
Bottlerocket structure les données utilisateur au format TOML. Vous pouvez fournir des données utilisateur qui seront fusionnées avec les données utilisateur fournies par Amazon EKS. Par exemple, vous pouvez fournir des paramètres `kubelet` supplémentaires.  

```
[settings.kubernetes.system-reserved]
cpu = "10m"
memory = "100Mi"
ephemeral-storage= "1Gi"
```
Pour plus d'informations sur les paramètres pris en charge, consultez la [documentation Bottlerocket](https://github.com/bottlerocket-os/bottlerocket). Vous pouvez configurer des étiquettes de nœuds et des [rejets](node-taints-managed-node-groups.md) dans vos données utilisateur. Cependant, nous vous recommandons de les configurer plutôt dans votre groupe de nœuds. Amazon EKS applique ces configurations lorsque vous le faites.  
Lorsque les données utilisateur sont fusionnées, la mise en forme n’est pas conservée, mais le contenu reste le même. La configuration que vous fournissez dans vos données utilisateur remplace tous les paramètres qui sont configurés par Amazon EKS. Ainsi, si vous définissez `settings.kubernetes.max-pods` ou `settings.kubernetes.cluster-dns-ip`, ces valeurs dans vos données utilisateur sont appliquées aux nœuds.  
Amazon EKS ne prend pas en charge tous les TOML valides. Voici une liste des formats connus non pris en charge :  
+ Guillemets dans les clés entre guillemets : `'quoted "value"' = "value"` 
+ Guillemets échappés dans les valeurs : `str = "I’m a string. \"You can quote me\""` 
+ Flottants et entiers mélangés : `numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]` 
+ Types mixtes dans les tableaux : `contributors = ["[foo@example.com](mailto:foo@example.com)", { name = "Baz", email = "[baz@example.com](mailto:baz@example.com)" }]` 
+ En-têtes entre parenthèses avec clés entre guillemets : `[foo."bar.baz"]` 

 **Données utilisateur Windows**   
Les données utilisateur Windows utilisent des PowerShell commandes. Lorsque vous créez un groupe de nœuds gérés, vos données utilisateur personnalisées sont combinées avec les données utilisateur gérées par Amazon EKS. Vos PowerShell commandes viennent en premier, suivies des commandes de gestion des données utilisateur, le tout dans une seule `<powershell></powershell>` balise.  
Lors de la création de groupes de nœuds Windows, Amazon EKS met à jour le `aws-auth` `ConfigMap` pour permettre aux nœuds Linux de rejoindre le cluster. Le service ne configure pas automatiquement les autorisations pour Windows AMIs. Si vous utilisez des nœuds Windows, vous devrez gérer l’accès via l’API d’entrée d’accès ou en mettant à jour directement le `aws-auth` `ConfigMap`. Pour de plus amples informations, veuillez consulter [Déployer des nœuds Windows sur des clusters EKS](windows-support.md).
Lorsque aucun ID d’AMI n’est spécifié dans le modèle de lancement, n’utilisez pas le script Windows Amazon EKS Bootstrap dans les données utilisateur pour configurer Amazon EKS.
Voici un exemple de données utilisateur.  

```
<powershell>
Write-Host "Running custom user data script"
</powershell>
```

## Spécification d'une AMI
<a name="launch-template-custom-ami"></a>

Si vous avez l'une des conditions suivantes, spécifiez un ID d'AMI dans le champ `ImageId` de votre modèle de lancement. Sélectionnez votre besoin d'informations supplémentaires.

### Fournissez des données utilisateur pour transmettre des arguments au `bootstrap.sh` fichier inclus dans une Linux/Bottlerocket AMI optimisée pour Amazon EKS
<a name="mng-specify-eks-ami"></a>

L'amorçage est un terme utilisé pour décrire l'ajout de commandes pouvant être exécutées au démarrage d'une instance. Par exemple, la mise en place initiale permet d’utiliser des arguments [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) supplémentaires. Vous pouvez transmettre les arguments au script `bootstrap.sh` en utilisant `eksctl` sans spécifier de modèle de lancement. Vous pouvez également le faire en spécifiant les informations dans la section des données utilisateur d'un modèle de lancement.

 **eksctl sans spécifier de modèle de lancement**   
Créez un fichier nommé *my-nodegroup.yaml* avec les contenus suivants. Remplacez chaque *example value* par vos propres valeurs. Les arguments `--apiserver-endpoint`, `--b64-cluster-ca` et `--dns-cluster-ip` sont facultatifs. Cependant, leur définition permet au script `bootstrap.sh` d'éviter de passer un appel `describeCluster`. Ceci est utile dans les configurations de clusters privés ou les clusters où vous effectuez fréquemment des opérations de mise à l’échelle et de réduction des nœuds. Pour plus d'informations sur le `bootstrap.sh` script, consultez le fichier [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) sur GitHub.  
+ Le seul argument requis est le nom du cluster (*my-cluster*).
+ Pour récupérer un ID d’AMI optimisé pour `ami-1234567890abcdef0 `, consultez les sections suivantes :
  +  [Récupérez l'AMI Amazon Linux recommandée IDs](retrieve-ami-id.md) 
  +  [Récupérez l'AMI Bottlerocket recommandée IDs](retrieve-ami-id-bottlerocket.md) 
  +  [Récupérez l'AMI Microsoft Windows recommandée IDs](retrieve-windows-ami-id.md) 
+ Pour récupérer le *certificate-authority* de votre cluster, exécutez la commande suivante.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Pour récupérer le *api-server-endpoint* de votre cluster, exécutez la commande suivante.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ La valeur de `--dns-cluster-ip` est votre CIDR de service avec `.10` à la fin. Pour récupérer le *service-cidr* de votre cluster, exécutez la commande suivante. Par exemple, si la valeur renvoyée est `ipv4 10.100.0.0/16`, votre valeur est *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Cet exemple fournit un argument `kubelet` supplémentaire pour définir une valeur `max-pods` personnalisée à l'aide du script `bootstrap.sh` inclus dans l'AMI optimisée pour Amazon EKS. 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. Pour obtenir de l'aide sur la sélection de *my-max-pods-value*, consultez . Pour plus d'informations sur le mode `maxPods` de détermination lors de l'utilisation de groupes de nœuds gérés, consultez[Comment est déterminé MaxPods](choosing-instance-type.md#max-pods-precedence).

  ```
  ---
  apiVersion: eksctl.io/v1alpha5
  kind: ClusterConfig
  
  metadata:
    name: my-cluster
    region: region-code
  
  managedNodeGroups:
    - name: my-nodegroup
      ami: ami-1234567890abcdef0
      instanceType: m5.large
      privateNetworking: true
      disableIMDSv1: true
      labels: { x86-al2-specified-mng }
      overrideBootstrapCommand: |
        #!/bin/bash
        /etc/eks/bootstrap.sh my-cluster \
          --b64-cluster-ca certificate-authority \
          --apiserver-endpoint api-server-endpoint \
          --dns-cluster-ip service-cidr.10 \
          --kubelet-extra-args '--max-pods=my-max-pods-value' \
          --use-max-pods false
  ```

  Pour chaque option de fichier `eksctl` `config` disponible, consultez [Schéma de fichier de configuration](https://eksctl.io/usage/schema/) dans la documentation `eksctl`. L'utilitaire `eksctl` crée toujours un modèle de lancement pour vous et remplit ses données utilisateur avec les données que vous fournissez dans le fichier `config`.

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

  ```
  eksctl create nodegroup --config-file=my-nodegroup.yaml
  ```

 **Données utilisateur dans un modèle de lancement**   
Spécifiez les informations suivantes dans la section des données utilisateur de votre modèle de lancement. Remplacez chaque *example value* par vos propres valeurs. Les arguments `--apiserver-endpoint`, `--b64-cluster-ca` et `--dns-cluster-ip` sont facultatifs. Cependant, leur définition permet au script `bootstrap.sh` d'éviter de passer un appel `describeCluster`. Ceci est utile dans les configurations de clusters privés ou les clusters où vous effectuez fréquemment des opérations de mise à l’échelle et de réduction des nœuds. Pour plus d'informations sur le `bootstrap.sh` script, consultez le fichier [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) sur GitHub.  
+ Le seul argument requis est le nom du cluster (*my-cluster*).
+ Pour récupérer le *certificate-authority* de votre cluster, exécutez la commande suivante.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Pour récupérer le *api-server-endpoint* de votre cluster, exécutez la commande suivante.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ La valeur de `--dns-cluster-ip` est votre CIDR de service avec `.10` à la fin. Pour récupérer le *service-cidr* de votre cluster, exécutez la commande suivante. Par exemple, si la valeur renvoyée est `ipv4 10.100.0.0/16`, votre valeur est *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Cet exemple fournit un argument `kubelet` supplémentaire pour définir une valeur `max-pods` personnalisée à l'aide du script `bootstrap.sh` inclus dans l'AMI optimisée pour Amazon EKS. Pour obtenir de l'aide sur la sélection de *my-max-pods-value*, consultez . Pour plus d'informations sur le mode `maxPods` de détermination lors de l'utilisation de groupes de nœuds gérés, consultez[Comment est déterminé MaxPods](choosing-instance-type.md#max-pods-precedence).

  ```
  MIME-Version: 1.0
  Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
  
  --==MYBOUNDARY==
  Content-Type: text/x-shellscript; charset="us-ascii"
  
  #!/bin/bash
  set -ex
  /etc/eks/bootstrap.sh my-cluster \
    --b64-cluster-ca certificate-authority \
    --apiserver-endpoint api-server-endpoint \
    --dns-cluster-ip service-cidr.10 \
    --kubelet-extra-args '--max-pods=my-max-pods-value' \
    --use-max-pods false
  
  --==MYBOUNDARY==--
  ```

### Fournissez des données utilisateur pour transmettre des arguments au fichier `Start-EKSBootstrap.ps1` inclus dans une AMI Windows optimisée pour Amazon EKS
<a name="mng-specify-eks-ami-windows"></a>

L'amorçage est un terme utilisé pour décrire l'ajout de commandes pouvant être exécutées au démarrage d'une instance. Vous pouvez transmettre les arguments au script `Start-EKSBootstrap.ps1` en utilisant `eksctl` sans spécifier de modèle de lancement. Vous pouvez également le faire en spécifiant les informations dans la section des données utilisateur d'un modèle de lancement.

Si vous voulez spécifier un ID d’AMI Windows personnalisé, tenez compte des considérations suivantes :
+ Vous devez utiliser un modèle de lancement et fournir les commandes d'amorçage requises dans la section des données utilisateur. Pour récupérer l'ID Windows souhaité, vous pouvez utiliser le tableau de la section [Créer des nœuds avec Windows optimisé AMIs](eks-optimized-windows-ami.md).
+ Il existe plusieurs limites et conditions. Par exemple, vous devez ajouter des éléments `eks:kube-proxy-windows` à votre carte de configuration AWS IAM Authenticator. Pour de plus amples informations, veuillez consulter [Limites et conditions lors de la spécification d'un ID d'AMI](#mng-ami-id-conditions).

Spécifiez les informations suivantes dans la section des données utilisateur de votre modèle de lancement. Remplacez chaque *example value* par vos propres valeurs. Les arguments `-APIServerEndpoint`, `-Base64ClusterCA` et `-DNSClusterIP` sont facultatifs. Cependant, leur définition permet au script `Start-EKSBootstrap.ps1` d'éviter de passer un appel `describeCluster`.
+ Le seul argument requis est le nom du cluster (*my-cluster*).
+ Pour récupérer le *certificate-authority* de votre cluster, exécutez la commande suivante.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Pour récupérer le *api-server-endpoint* de votre cluster, exécutez la commande suivante.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ La valeur de `--dns-cluster-ip` est votre CIDR de service avec `.10` à la fin. Pour récupérer le *service-cidr* de votre cluster, exécutez la commande suivante. Par exemple, si la valeur renvoyée est `ipv4 10.100.0.0/16`, votre valeur est *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Pour des arguments supplémentaires, consultez [Paramètres de configuration du script d'amorçage](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters).
**Note**  
Si vous utilisez un CIDR de service personnalisé, vous devez le spécifier à l’aide du paramètre `-ServiceCIDR`. Sinon, la résolution DNS pour les pods dans le cluster échouera.

```
<powershell>
[string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1"
& $EKSBootstrapScriptFile -EKSClusterName my-cluster `
	 -Base64ClusterCA certificate-authority `
	 -APIServerEndpoint api-server-endpoint `
	 -DNSClusterIP service-cidr.10
</powershell>
```

### Exécution d'une AMI personnalisée en raison d'exigences spécifiques en matière de sécurité, de conformité ou de politique interne.
<a name="mng-specify-custom-ami"></a>

Pour plus d’informations, consultez [Amazon Machine Images (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) dans le *Guide de l’utilisateur Amazon EC2*. La spécification de création d’AMI Amazon EKS contient des ressources et des scripts de configuration pour créer une AMI Amazon EKS personnalisée basée sur Amazon Linux. Pour plus d'informations, consultez [Spécifications de création d'AMI Amazon EKS](https://github.com/awslabs/amazon-eks-ami/) sur GitHub. Pour créer une AMIs installation personnalisée avec d'autres systèmes d'exploitation, consultez [Amazon EKS Sample Custom AMIs](https://github.com/aws-samples/amazon-eks-custom-amis) on GitHub.

Vous ne pouvez pas utiliser de références de paramètres dynamiques pour les AMI IDs dans les modèles de lancement utilisés avec les groupes de nœuds gérés.

**Important**  
Lorsque vous spécifiez une AMI, Amazon EKS ne valide pas la version de Kubernetes intégrée à votre AMI par rapport à la version du plan de contrôle de votre cluster. Il vous incombe de vous assurer que la version Kubernetes de votre AMI personnalisée est conforme à la politique de distorsion des versions de [Kubernetes](https://kubernetes.io/releases/version-skew-policy) :  
La `kubelet` version de vos nœuds ne doit pas être plus récente que la version de votre cluster
La `kubelet` version sur vos nœuds doit être égale ou supérieure à 3 versions mineures par rapport à la version de votre cluster (pour la version de Kubernetes `1.28` ou supérieure), ou jusqu'à 2 versions mineures par rapport à la version de votre cluster (pour la version de Kubernetes ou inférieure) `1.27`  
La création de groupes de nœuds gérés présentant des violations de distorsion de version peut entraîner :
Les nœuds ne parviennent pas à rejoindre le cluster
Comportement non défini ou incompatibilités d'API
Instabilité du cluster ou défaillances de charge de travail
Lorsque vous spécifiez une AMI, Amazon EKS ne fusionne aucune donnée utilisateur. C’est à vous qu’il incombe de fournir les commandes `bootstrap` requises pour que les nœuds rejoignent le cluster. Si vos nœuds ne parviennent pas à joindre le cluster, les actions `CreateNodegroup` et `UpdateNodegroupVersion` Amazon EKS échouent également.

## Limites et conditions lors de la spécification d'un ID d'AMI
<a name="mng-ami-id-conditions"></a>

Voici les limites et les conditions impliquées dans la spécification d'un ID d'AMI avec des groupes de nœuds gérés :
+ Vous devez créer un groupe de nœuds pour passer de la spécification d'un ID d'AMI dans un modèle de lancement à la non-spécification d'un ID d'AMI.
+ Vous n’êtes pas notifié dans la console lorsqu’une version plus récente de l’AMI est disponible. Pour mettre à jour votre groupe de nœuds vers une version d'AMI plus récente, vous devez créer une nouvelle version de votre modèle de lancement avec un ID d'AMI mis à jour. Vous devez ensuite mettre à jour le groupe de nœuds avec la nouvelle version du modèle de lancement.
+ Les champs suivants ne peuvent pas être définis dans l’API si vous spécifiez un ID d’AMI :
  +  `amiType` 
  +  `releaseVersion` 
  +  `version` 
+ Tous les `taints` définis dans l'API sont appliqués de manière asynchrone si vous spécifiez un identifiant d'AMI. Pour appliquer des rejets avant l'ajout d'un nœud au cluster, vous devez les transférer à `kubelet` dans vos données utilisateur à l'aide de l'indicateur de ligne de commande `--register-with-taints`. Pour plus d'informations, consultez [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) dans la documentation Kubernetes.
+ Lorsque vous spécifiez un ID AMI personnalisé pour les groupes de nœuds gérés par Windows, ajoutez-le `eks:kube-proxy-windows` à votre carte de configuration AWS IAM Authenticator. Cela est nécessaire pour le bon fonctionnement du DNS.

  1. Ouvrez la carte de configuration de l'authentificateur AWS IAM pour la modifier.

     ```
     kubectl edit -n kube-system cm aws-auth
     ```

  1. Ajoutez cette entrée à la liste `groups` sous chaque `rolearn` associé aux nœuds Windows. Votre carte de configuration doit ressembler à [aws-auth-cm-windows.yaml.](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml)

     ```
     - eks:kube-proxy-windows
     ```

  1. Enregistrez le fichier et quittez votre éditeur de texte.
+ Pour toute AMI utilisant un modèle de lancement personnalisé, la valeur par défaut `HttpPutResponseHopLimit` pour les groupes de nœuds gérés est définie sur `2`.

# Supprimer un groupe de nœuds gérés de votre cluster
<a name="delete-managed-node-group"></a>

Cette rubrique explique comment supprimer un groupe de nœuds gérés Amazon EKS. Lorsque vous supprimez un groupe de nœuds gérés, Amazon EKS définit d'abord 0 pour les tailles minimale, maximale et souhaitée de votre groupe Auto Scaling. Cela entraîne ensuite une réduction d'échelle de votre groupe de nœuds.

Avant de mettre fin à chaque instance, Amazon EKS envoie un signal pour vider ce nœud. Pendant le processus de vidange, Kubernetes effectue les opérations suivantes pour chaque pod du nœud : exécute tous les hooks de `preStop` cycle de vie configurés, envoie `SIGTERM` des signaux aux conteneurs, puis attend l'`terminationGracePeriodSeconds`arrêt progressif. Si le nœud n'a pas été vidé au bout de 5 minutes, Amazon EKS permet à Auto Scaling de poursuivre la mise hors service forcée de l'instance. Une fois que toutes les instances ont été mises hors service, le groupe Auto Scaling est supprimé.

**Important**  
Si vous supprimez un groupe de nœuds gérés qui utilise un rôle IAM de nœud qui n’est utilisé par aucun autre groupe de nœuds gérés dans le cluster, le rôle est supprimé de la `ConfigMap` `aws-auth`. Si l'un des groupes de nœuds autogérés dans le cluster utilisent le même rôle IAM de nœud, le statut des nœuds autogérés devient `NotReady`. De plus, le fonctionnement du cluster est également perturbé. Pour ajouter un mappage pour le rôle que vous utilisez uniquement pour les groupes de nœuds autogérés, consultez [Créer des entrées d’accès](creating-access-entries.md), si la version de plateforme de votre cluster est au moins égale à la version minimale indiquée dans la section Conditions préalables de l’article [Accorder aux utilisateurs IAM l’accès à Kubernetes avec des entrées d’accès EKS](access-entries.md). Si la version de votre plateforme est antérieure à la version minimale requise pour les entrées d’accès, vous pouvez rajouter l’entrée dans le fichier `aws-auth` `ConfigMap`. Pour plus d'informations, entrez `eksctl create iamidentitymapping --help` dans votre terminal.

Vous pouvez supprimer un groupe de nœuds gérés à l’aide de la commande suivante :
+  [`eksctl`](#eksctl-delete-managed-nodegroup) 
+  [AWS Management Console](#console-delete-managed-nodegroup) 
+  [AWS CLI](#awscli-delete-managed-nodegroup) 

## `eksctl`
<a name="eksctl-delete-managed-nodegroup"></a>

 **Supprimer un groupe de nœuds gérés avec `eksctl`** 

Entrez la commande suivante. Remplacez chaque `<example value>` par vos propres valeurs.

```
eksctl delete nodegroup \
  --cluster <my-cluster> \
  --name <my-mng> \
  --region <region-code>
```

Pour plus d'options, consultez la section [Supprimer et vider des groupes de nœuds](https://eksctl.io/usage/nodegroups/#deleting-and-draining-nodegroups) dans la documentation `eksctl`.

## AWS Management Console
<a name="console-delete-managed-nodegroup"></a>

 **Supprimer un groupe de nœuds gérés avec AWS Management Console ** 

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Sur la page **Clusters**, choisissez le cluster qui contient le groupe de nœuds à supprimer.

1. Sur la page du cluster sélectionné, choisissez l'onglet **Compute**.

1. Dans la section **Node Groups** (Groupes de nœuds), choisissez le groupe de nœuds à supprimer. Ensuite, choisissez **Supprimer**.

1. Dans la boîte de dialogue de confirmation de la **suppression du groupe de nœuds**, entrez le nom du groupe de nœuds. Ensuite, choisissez **Supprimer**.

## AWS CLI
<a name="awscli-delete-managed-nodegroup"></a>

 **Supprimer un groupe de nœuds gérés à l'aide de la AWS CLI** 

1. Entrez la commande suivante. Remplacez chaque `<example value>` par vos propres valeurs.

   ```
   aws eks delete-nodegroup \
     --cluster-name <my-cluster> \
     --nodegroup-name <my-mng> \
     --region <region-code>
   ```

1. S'il `cli_pager=` est défini dans la configuration de la CLI, utilisez les touches fléchées de votre clavier pour faire défiler la sortie de réponse. Appuyez sur la touche `q` lorsque vous avez terminé.

   Pour plus d'options, consultez la ` [delete-nodegroup](https://docs.aws.amazon.com/cli/latest/reference/eks/delete-nodegroup.html) ` commande dans le manuel de *référence des commandes de la AWS CLI*.

# Gérer vous-même les nœuds grâce aux nœuds autogérés
<a name="worker"></a>

Un cluster contient un ou plusieurs nœuds Amazon EC2 sur lesquels les pods sont planifiés. Les nœuds Amazon EKS s'exécutent dans votre compte AWS et se connectent au plan de contrôle de votre cluster via le point de terminaison de serveur de l'API du cluster. Vous êtes facturé pour ceux-ci en fonction des tarifs Amazon EC2. Pour plus d’informations, consultez [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/).

Un cluster peut contenir plusieurs groupes de nœuds. Chaque groupe de nœuds contient un ou plusieurs nœuds déployés dans un [groupe Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html). Le type d’instance des nœuds au sein du groupe peut varier, par exemple lorsque vous utilisez la [sélection de type d’instance basée sur les attributs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) avec [Karpenter](https://karpenter.sh/). Toutes les instances d'un groupe de nœuds doivent utiliser le [rôle IAM du nœud Amazon EKS](create-node-role.md).

Amazon EKS fournit des images Amazon Machine Image (AMI) spécialisées appelées « AMI optimisées pour Amazon EKS ». Les AMI sont configurées pour fonctionner avec Amazon EKS. Leurs composants incluent `containerd`, `kubelet` et l'authentificateur IAM AWS. Les AMI contiennent également un [script d’amorçage](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) spécialisé qui leur permet de détecter et de se connecter automatiquement au plan de contrôle de votre cluster.

Si vous limitez l'accès au point de terminaison public de votre cluster à l'aide de blocs CIDR, nous vous recommandons d'activer également l'accès au point de terminaison privé. Cela permet aux nœuds de communiquer avec le cluster. Sans l'activation du point de terminaison privé, les blocs CIDR que vous spécifiez pour l'accès public doivent inclure les sources de sortie de votre VPC. Pour de plus amples informations, consultez [Point de terminaison du serveur d’API du cluster](cluster-endpoint.md).

Pour ajouter des nœuds autogérés à votre cluster Amazon EKS, consultez les rubriques qui suivent. Si vous lancez manuellement des nœuds autogérés, balisez chaque nœud avec la balise suivante en vous assurant que `<cluster-name>` correspond à votre cluster. Pour de plus amples informations, veuillez consulter [Ajout et suppression de balises sur une ressource individuelle](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#adding-or-deleting-tags). Si vous suivez les étapes des guides qui suivent, l'identification requise est ajoutée au nœud pour vous.


| Clé | Valeur | 
| --- | --- | 
|   `kubernetes.io/cluster/<cluster-name>`   |   `owned`   | 

**Important**  
Les balises du service de métadonnées d’instance (IMDS) Amazon EC2 ne sont pas compatibles avec les nœuds Amazon EKS. Lorsque les balises de métadonnées d’instance sont activées, l’utilisation de barres obliques (« / ») dans les valeurs des balises est interdite. Cette limitation peut entraîner des échecs de lancement d’instances, en particulier lorsque vous utilisez des outils de gestion de nœuds tels que Karpenter ou Cluster Autoscaler, car ces services dépendent de balises contenant des barres obliques pour fonctionner correctement.

Pour plus d'informations sur les nœuds à partir d'une perspective Kubernetes générale, consultez [Nœuds](https://kubernetes.io/docs/concepts/architecture/nodes/) dans la documentation Kubernetes.

**Topics**
+ [Créer des nœuds Amazon Linux autogérés](launch-workers.md)
+ [Créer des nœuds Bottlerocket autogérés](launch-node-bottlerocket.md)
+ [Créer des nœuds Microsoft Windows autogérés](launch-windows-workers.md)
+ [Créer des nœuds Ubuntu Linux autogérés](launch-node-ubuntu.md)
+ [Mettez à jour les nœuds autogérés de votre cluster](update-workers.md)

# Créer des nœuds Amazon Linux autogérés
<a name="launch-workers"></a>

Cette rubrique décrit comment lancer des groupes Auto Scaling de nœuds Linux qui s'enregistrent auprès de votre cluster Amazon EKS. Une fois que les nœuds ont rejoint le cluster, vous pouvez y déployer des applications Kubernetes. Vous pouvez également lancer des nœuds Amazon Linux autogérés avec `eksctl` ou le AWS Management Console. Si vous devez lancer des nœuds sur AWS Outposts, consultez. [Créez des nœuds Amazon Linux sur AWS Outposts](eks-outposts-self-managed-nodes.md)
+ Un cluster Amazon EKS existant. Pour en déployer un, consultez [Création d’un cluster Amazon EKS](create-cluster.md). Si vous avez des sous-réseaux dans la AWS région où AWS Outposts, AWS Wavelength ou Local AWS Zones est activé, ces sous-réseaux ne doivent pas avoir été transmis lorsque vous avez créé votre cluster.
+ Un rôle IAM existant pour les nœuds à utiliser. Pour en créer un, consultez [Rôle IAM de nœud Amazon EKS](create-node-role.md). Si ce rôle ne comporte aucune des politiques pour le VPC CNI, le rôle distinct suivant est nécessaire pour les pods VPC CNI.
+ (Facultatif, mais recommandé) Le plug-in CNI Amazon VPC pour le module complémentaire Kubernetes est configuré avec son propre rôle IAM auquel est associée la politique IAM nécessaire. Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).
+ Connaissance des considérations répertoriées dans la section [Choisissez un type d'instance de EC2 nœud Amazon optimal](choosing-instance-type.md). Selon le type d'instance que vous choisissez, il peut y avoir des prérequis supplémentaires pour votre cluster et votre VPC.

Vous pouvez lancer des nœuds Linux autogérés à l’aide de l’une des méthodes suivantes :
+  [`eksctl`](#eksctl_create_managed_amazon_linux) 
+  [AWS Management Console](#console_create_managed_amazon_linux) 

## `eksctl`
<a name="eksctl_create_managed_amazon_linux"></a>

 **Lancer des nœuds Linux autogérés à l’aide de `eksctl` ** 

1. Installez la version `0.215.0` ou une version ultérieure de l'outil de ligne de `eksctl` commande installé sur votre appareil ou AWS CloudShell. Pour installer ou mettre à jour `eksctl`, veuillez consulter [Installation](https://eksctl.io/installation) dans la documentation de `eksctl`.

1. (Facultatif) Si la politique d’IAM gérée **AmazonEKS\$1CNI\$1Policy** est associée à votre [rôle IAM de nœud Amazon EKS](create-node-role.md), nous vous recommandons de l’attribuer à un rôle IAM que vous associez au compte de service Kubernetes `aws-node` à la place. Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).

1. La commande suivante crée un groupe de nœuds dans un cluster existant. 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 peut pas dépasser 100 caractères. Le nom doit être unique dans la AWS région et le AWS compte dans lesquels vous créez le cluster. Remplacez les valeurs de *example value* 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.

   Avant de choisir une valeur pour`--node-type`, consultez l'article [Choisissez un type d'instance de EC2 nœud Amazon optimal](choosing-instance-type.md).

   *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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le *guide de EC2 l'utilisateur Amazon*.

   Créez votre groupe de nœuds avec la commande suivante.
**Important**  
Si vous souhaitez déployer un groupe de nœuds sur des sous-réseaux AWS Outposts, Wavelength ou Local Zone, vous devez prendre en compte d'autres considérations :  
Les sous-réseaux ne doivent pas avoir été renseignés lors de la création du cluster.
Vous devez créer le groupe de nœuds avec un fichier config qui spécifie les sous-réseaux et ` [volumeType](https://eksctl.io/usage/schema/#nodeGroups-volumeType): gp2`. Pour plus d'informations, consultez [Créer un nodegroup à partir d'un fichier config](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) et [Schéma du fichier Config](https://eksctl.io/usage/schema/) dans la documentation `eksctl`.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --name al-nodes \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --ssh-access \
     --managed=false \
     --ssh-public-key my-key
   ```

   Pour déployer un groupe de nœuds qui :
   + peut attribuer un nombre d’adresses IP aux pods nettement supérieur à celui de la configuration par défaut, consultez [Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes](cni-increase-ip-addresses.md).
   + peut attribuer des adresses `IPv4` aux pods à partir d’un bloc CIDR différent de celui de l’instance, consultez [Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé](cni-custom-network.md).
   + peut attribuer des adresses `IPv6` aux pods et aux services, consultez [En savoir plus sur IPv6 les adresses des clusters, des pods et des services](cni-ipv6.md).
   + ne dispose pas d’un accès Internet sortant, consultez [Déployer des clusters privés avec un accès Internet limité](private-clusters.md).

     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
     ```

     Si les nœuds ne parviennent pas à rejoindre le cluster, consultez la section [Les nœuds ne parviennent pas à joindre le cluster](troubleshooting.md#worker-node-fail) du chapitre Dépannage.

     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"
     ```

1. (Facultatif) Déployez un [exemple d'application](sample-deployment.md) pour tester votre cluster et les nœuds Linux.

1. 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' EC2 instance Amazon (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle AWS .

   Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## AWS Management Console
<a name="console_create_managed_amazon_linux"></a>

 **Étape 1 : lancer les nœuds Linux autogérés à l’aide de la 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/2025-11-26/amazon-eks-nodegroup.yaml
   ```

1. Attendez que le statut de votre cluster s'affiche soit `ACTIVE`. Si vous lancez vos nœuds avant que le cluster soit actif, les nœuds ne s'enregistrent pas avec le cluster et vous devrez les relancer.

1. Ouvrez la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/).

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

1. 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)**.

1. Sélectionnez le fichier `amazon-eks-nodegroup.yaml` que vous avez téléchargé.

1. Sélectionnez **Suivant**.

1. 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 *my-cluster-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 AWS région et le AWS compte dans lesquels vous créez le cluster.
   +  **ClusterName**: Entrez le nom que vous avez utilisé lors de la création de votre cluster Amazon EKS. Ce nom doit être identique au nom du cluster, sinon vos nœuds ne pourront pas rejoindre le cluster.
   +  **ClusterControlPlaneSecurityGroup**: Choisissez la **SecurityGroups**valeur à partir de la AWS CloudFormation sortie que vous avez générée lors de la création de votre [VPC](creating-a-vpc.md).

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

     1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

     1. Choisissez le nom du cluster.

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

     1. Utilisez la valeur **Groupes de sécurité supplémentaires** comme référence lorsque vous effectuez une sélection **ClusterControlPlaneSecurityGroup**dans la liste déroulante.
   +  **ApiServerEndpoint**: Entrez le point de terminaison du serveur API pour votre cluster EKS. Cela se trouve dans la section Détails de la console EKS Cluster
   +  **CertificateAuthorityData**: Entrez les données de l'autorité de certification codées en base64, qui se trouvent également dans la section Détails de la console EKS Cluster.
   +  **ServiceCidr**: Entrez la plage CIDR utilisée pour attribuer des adresses IP aux services Kubernetes au sein du cluster. Cela se trouve dans l'onglet réseau de la console EKS Cluster.
   +  **AuthenticationMode**: Sélectionnez le mode d'authentification utilisé dans le cluster EKS en consultant l'onglet d'accès dans la console du cluster EKS.
   +  **NodeGroupName**: Entrez le nom de votre 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. 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.
   +  **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. Pour de plus amples informations, veuillez consulter [Choix du type d’instance Amazon EC2 optimal pour les nœuds](choosing-instance-type.md).
   +  **NodeImageIdSSMParam**: prérempli avec le paramètre Amazon EC2 Systems Manager d'une récente AMI Amazon Linux 2023 optimisée pour Amazon EKS pour une version variable de Kubernetes. Pour utiliser une autre version mineure de Kubernetes prise en charge avec Amazon EKS, remplacez *1.XX* par une autre [version prise en charge](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html). Nous vous recommandons de spécifier la même version de Kubernetes que celle de votre cluster.

     Vous pouvez également le remplacer *amazon-linux-2023* par un autre type d'AMI. Pour de plus amples informations, veuillez consulter [Récupérez l'AMI Amazon Linux recommandée IDs](retrieve-ami-id.md).
**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 2023 dans le centre de sécurité](https://alas.aws.amazon.com/alas2023.html) Amazon Linux ou vous abonner au [flux RSS](https://alas.aws.amazon.com/AL2023/alas.rss) 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 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 **NodeImageIdSSMParam**champ.
   +  **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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le *guide de EC2 l'utilisateur Amazon*.
   +  **VpcId**: Entrez l'ID du [VPC](creating-a-vpc.md) que vous avez créé.
   +  **Sous-réseaux** : choisissez les sous-réseaux que vous avez créés pour votre VPC. Si vous avez créé votre Amazon VPC en suivant les étapes décrites dans [Créer un Amazon VPC pour votre cluster Amazon EKS](creating-a-vpc.md), spécifiez uniquement les sous-réseaux privés au sein de l’Amazon VPC dans lesquels vos nœuds doivent être lancés. 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.
**Important**  
Si certains sous-réseaux sont des sous-réseaux publics, leur paramètre d'attribution automatique d'adresse IP publique doit être activé. Si le paramètre n'est pas activé pour le sous-réseau public, aucun nœud que vous déployez sur ce sous-réseau public ne se verra attribuer d'adresse IP publique et ne pourra pas communiquer avec le cluster ou d'autres AWS services. Si le sous-réseau a été déployé avant le 26 mars 2020 en utilisant l'un des modèles de [AWS CloudFormation VPC Amazon EKS](creating-a-vpc.md) ou `eksctl` en utilisant, l'attribution automatique d'adresses IP publiques est désactivée pour les sous-réseaux publics. Pour plus d'informations sur la façon d'activer l'attribution d'adresses IP publiques pour un sous-réseau, consultez la section [Modification de l'attribut d' IPv4 adressage public de votre sous-réseau](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip). Si le nœud est déployé sur un sous-réseau privé, il est capable de communiquer avec le cluster et d'autres AWS services via une passerelle NAT.
Si les sous-réseaux n’ont pas d’accès Internet, assurez-vous de prendre connaissance des considérations et des étapes supplémentaires décrites dans [Déployer des clusters privés avec un accès Internet limité](private-clusters.md).
Si vous sélectionnez AWS les sous-réseaux Outposts, Wavelength ou Local Zone, les sous-réseaux ne doivent pas avoir été transmis lors de la création du cluster.

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

1. Cochez la case à gauche de **J'accuse réception AWS CloudFormation susceptible de créer des ressources IAM**. , puis choisissez **Create stack**.

1. Lorsque la création de votre pile est terminée, sélectionnez la pile dans la console et choisissez **Outputs** (Sorties). Si vous utilisez le mode `EKS API and ConfigMap` d'authentification `EKS API` ou, il s'agit de la dernière étape.

1. Si vous utilisez le mode `ConfigMap` d'authentification, enregistrez le **NodeInstanceRole**pour le groupe de nœuds créé.

 **Étape 2 : autoriser les nœuds à rejoindre votre cluster** 

**Note**  
Les deux étapes suivantes ne sont nécessaires que si le mode d'authentification Configmap est utilisé dans le cluster EKS. En outre, si vous avez lancé des nœuds au sein d'un VPC privé sans accès Internet sortant, veillez à autoriser les nœuds à rejoindre votre cluster depuis le VPC.

1. Vérifiez si vous avez déjà appliqué le `ConfigMap` `aws-auth`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. 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
      ```

   1. Ajoutez une nouvelle entrée `mapRoles` si nécessaire. Définissez la `rolearn` valeur sur la **NodeInstanceRole**valeur 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
      [...]
      ```

   1. Enregistrez le fichier et quittez votre éditeur de texte.

1. 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
      ```

   1. Dans le `aws-auth-cm.yaml` fichier, définissez la `rolearn` valeur sur celle **NodeInstanceRole**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
      ```

   1. Appliquez la configuration. L'exécution de cette commande peut prendre quelques minutes.

      ```
      kubectl apply -f aws-auth-cm.yaml
      ```

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

   ```
   kubectl get nodes --watch
   ```

   Saisissez `Ctrl`\$1`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`)](troubleshooting.md#unauthorized) dans la rubrique relative à la résolution des problèmes.

   Si les nœuds ne parviennent pas à rejoindre le cluster, consultez la section [Les nœuds ne parviennent pas à joindre le cluster](troubleshooting.md#worker-node-fail) du chapitre Dépannage.

1. (Nœuds GPU uniquement) Si vous avez choisi un type d'instance GPU et l'AMI accélérée optimisée pour Amazon EKS, vous devez appliquer le [plug-in d'appareil NVIDIA pour Kubernetes](https://github.com/NVIDIA/k8s-device-plugin) en tant que tel DaemonSet sur votre cluster. *vX.X.X*Remplacez-le par la s-device-plugin version [Nvidia/K8](https://github.com/NVIDIA/k8s-device-plugin/releases) 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](sample-deployment.md) pour tester votre cluster et les nœuds Linux.

1. (Facultatif) Si la politique IAM gérée par **Amazoneks\$1CNI\$1Policy** (si vous avez `IPv4` un cluster) ou celle (que vous avez [créée vous-même](cni-iam-role.md#cni-iam-role-create-ipv6-policy) si vous avez un `IPv6` cluster) est attachée *AmazonEKS\$1CNI\$1IPv6\$1Policy* au rôle IAM de votre [nœud Amazon EKS, nous vous recommandons de l'attribuer à un rôle IAM](create-node-role.md) que vous associez plutôt au compte de service Kubernetes. `aws-node` Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).

1. 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' EC2 instance Amazon (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle AWS .

   Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Créer des nœuds Bottlerocket autogérés
<a name="launch-node-bottlerocket"></a>

**Note**  
Les groupes de nœuds gérés peuvent offrir certains avantages pour votre cas d'utilisation. Pour de plus amples informations, veuillez consulter [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md).

Cette rubrique décrit comment lancer des groupes Auto Scaling de nœuds [Bottlerocket](https://aws.amazon.com/bottlerocket/) qui s’enregistrent auprès de votre cluster Amazon EKS. Bottlerocket est un système d'exploitation open source basé sur Linux AWS que vous pouvez utiliser pour exécuter des conteneurs sur des machines virtuelles ou des hôtes bare metal. Une fois que les nœuds ont rejoint le cluster, vous pouvez y déployer des applications Kubernetes. Pour plus d'informations sur Bottlerocket, consultez la section [Utilisation d'une AMI Bottlerocket avec Amazon EKS](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-EKS.md) activé GitHub et la prise en charge des [AMI personnalisées](https://eksctl.io/usage/custom-ami-support/) dans la documentation. `eksctl`

Pour plus d'informations sur les mises à niveau sur place, consultez [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket-update-operator) Update Operator on. GitHub

**Important**  
Les nœuds Amazon EKS sont des instances Amazon EC2 standard pour lesquelles vous êtes facturé en fonction du tarif normal pour les instances Amazon EC2. Pour plus d’informations, consultez [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Vous pouvez lancer des nœuds Bottlerocket dans des clusters étendus Amazon EKS sur AWS Outposts, mais vous ne pouvez pas les lancer dans des clusters locaux sur Outposts. AWS Pour de plus amples informations, veuillez consulter [Déployez Amazon EKS sur site avec AWS Outposts](eks-outposts.md).
Vous pouvez déployer sur des instances Amazon EC2 avec des processeurs `x86` ou Arm. Cependant, vous ne pouvez pas déployer sur des instances équipées de puces Inferentia.
Bottlerocket est compatible avec. AWS CloudFormation Cependant, aucun CloudFormation modèle officiel ne peut être copié pour déployer des nœuds Bottlerocket pour Amazon EKS.
Les images Bottlerocket ne sont pas fournies avec un serveur SSH ou un shell. Vous pouvez utiliser des méthodes out-of-band d'accès pour autoriser SSH à activer le conteneur d'administration et pour passer certaines étapes de configuration d'amorçage avec les données utilisateur. Pour plus d'informations, consultez ces sections dans le [README.md de bottlerocket](https://github.com/bottlerocket-os/bottlerocket) sur GitHub :  
 [Exploration](https://github.com/bottlerocket-os/bottlerocket#exploration) 
 [Conteneur d'administration](https://github.com/bottlerocket-os/bottlerocket#admin-container) 
 [Paramètres Kubernetes](https://github.com/bottlerocket-os/bottlerocket#kubernetes-settings) 

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

```
eksctl version
```

Pour obtenir des instructions sur l’installation ou la mise à niveau d’`eksctl`, consultez [Installation](https://eksctl.io/installation) dans la documentation `eksctl`. REMARQUE : cette procédure ne fonctionne que pour les clusters créés avec `eksctl`.

1. Copiez les contenus suivants sur votre appareil. 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 peut pas dépasser 100 caractères. Le nom doit être unique dans la AWS région et le AWS compte dans lesquels vous créez le cluster. Remplacer *ng-bottlerocket* 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. Pour effectuer un déploiement sur des instances Arm, remplacez *m5.large* par un type d'instance Arm. Remplacez *my-ec2-keypair-name* par 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le *Guide de l'utilisateur Amazon EC2*. Remplacez toutes les valeurs d’exemple restantes par vos propres valeurs. Une fois les remplacements effectués, exécutez la commande modifiée pour créer le fichier `bottlerocket.yaml`.

   Si vous spécifiez un type d'instance Arm Amazon EC2, consultez les points à prendre en compte dans Arm [Amazon Linux optimisé pour Amazon EKS AMIs](eks-optimized-ami.md#arm-ami) avant le déploiement. Pour obtenir des instructions sur le déploiement à l'aide d'une AMI personnalisée, consultez les sections [Building Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/BUILDING.md) on et GitHub Custom [AMI support](https://eksctl.io/usage/custom-ami-support/) dans la documentation. `eksctl` Pour déployer un groupe de nœuds gérés, déployez une AMI personnalisée à l'aide d'un modèle de lancement. Pour de plus amples informations, veuillez consulter [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md).
**Important**  
Pour déployer un groupe de nœuds sur des sous-réseaux AWS Outposts, AWS Wavelength ou AWS Local Zone, ne transmettez pas les sous-réseaux Outposts AWS , AWS Wavelength ou AWS Local Zone lorsque vous créez le cluster. Vous devez spécifier les sous-réseaux dans l'exemple suivant. Pour plus d'informations, consultez [Créer un nodegroup à partir d'un fichier de configuration](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) et [Schéma du fichier de configuration](https://eksctl.io/usage/schema/) dans la documentation `eksctl`. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster.

   ```
   cat >bottlerocket.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-bottlerocket
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Bottlerocket
       ami: auto-ssm
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

1. Deployez vos nœuds avec la commande suivante :

   ```
   eksctl create nodegroup --config-file=bottlerocket.yaml
   ```

   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"
   ```

1. (Facultatif) Créez un [volume persistant](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) Kubernetes sur un nœud Bottlerocket à l'aide du [Plugin CSI Amazon EBS](https://github.com/kubernetes-sigs/aws-ebs-csi-driver). Le pilote Amazon EBS par défaut s’appuie sur des outils de système de fichiers qui ne sont pas inclus dans Bottlerocket. Pour obtenir plus d'informations sur la création d'une classe de stockage à l'aide du pilote, consultez [Utilisez le stockage de volumes Kubernetes avec Amazon EBS](ebs-csi.md).

1. (Facultatif) Par défaut, `kube-proxy` définit le paramètre de noyau `nf_conntrack_max` sur une valeur par défaut qui peut différer de ce que Bottlerocket a initialement défini au démarrage. Pour conserver le [paramètre par défaut](https://github.com/bottlerocket-os/bottlerocket-core-kit/blob/develop/packages/release/release-sysctl.conf) de Bottlerocket, modifiez la configuration `kube-proxy` à l’aide de la commande suivante.

   ```
   kubectl edit -n kube-system daemonset kube-proxy
   ```

   Ajoutez `--conntrack-max-per-core` et `--conntrack-min` aux arguments `kube-proxy` présentés dans l'exemple suivant. Un paramètre de `0` signifie aucun changement.

   ```
         containers:
         - command:
           - kube-proxy
           - --v=2
           - --config=/var/lib/kube-proxy-config/config
           - --conntrack-max-per-core=0
           - --conntrack-min=0
   ```

1. (Facultatif) Déployer un [exemple d'application](sample-deployment.md) pour tester vos nœuds Bottlerocket.

1. 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

   Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Créer des nœuds Microsoft Windows autogérés
<a name="launch-windows-workers"></a>

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

**Important**  
Les nœuds Amazon EKS sont des instances Amazon EC2 standard pour lesquelles vous êtes facturé en fonction du tarif normal pour les instances Amazon EC2. Pour plus d’informations, consultez [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Vous pouvez lancer des nœuds Windows dans des clusters étendus Amazon EKS sur AWS Outposts, mais vous ne pouvez pas les lancer dans des clusters locaux sur AWS Outposts. Pour de plus amples informations, veuillez consulter [Déployez Amazon EKS sur site avec AWS Outposts](eks-outposts.md).

Activer la prise en charge de Windows pour votre cluster avec. Nous vous recommandons de passer en revue les considérations importantes avant de lancer un groupe de nœuds Windows. Pour de plus amples informations, veuillez consulter [Activer la prise en charge de Windows](windows-support.md#enable-windows-support).

Vous pouvez lancer des nœuds Windows autogérés à l’aide de l’une des méthodes suivantes :
+  [`eksctl`](#eksctl_create_windows_nodes) 
+  [AWS Management Console](#console_create_windows_nodes) 

## `eksctl`
<a name="eksctl_create_windows_nodes"></a>

 **Lancer des nœuds Windows autogérés à l’aide de `eksctl`** 

Cette procédure exige que vous installiez `eksctl` et que votre version `eksctl` soit au moins la version `0.215.0`. Vous pouvez vérifier votre version à l'aide de la commande suivante.

```
eksctl version
```

Pour les instructions d'installation ou de mise à niveau de `eksctl`, consultez la rubrique [Installation](https://eksctl.io/installation) dans la documentation `eksctl`.

**Note**  
Cette procédure fonctionne uniquement pour les clusters créés avec `eksctl`.

1. (Facultatif) Si la politique IAM gérée par **Amazoneks\$1CNI\$1Policy** (si vous avez `IPv4` un cluster) ou celle (que vous avez [créée vous-même](cni-iam-role.md#cni-iam-role-create-ipv6-policy) si vous avez un `IPv6` cluster) est attachée *AmazonEKS\$1CNI\$1IPv6\$1Policy* au rôle IAM de votre [nœud Amazon EKS, nous vous recommandons de l'attribuer à un rôle IAM](create-node-role.md) que vous associez plutôt au compte de service Kubernetes. `aws-node` Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).

1. Cette procédure part du principe que vous disposez d'un cluster existant. Si vous ne disposez pas encore d’un cluster Amazon EKS et d’un groupe de nœuds Amazon Linux auquel ajouter un groupe de nœuds Windows, nous vous recommandons de suivre [Démarrage avec Amazon EKS – `eksctl`](getting-started-eksctl.md). Ce guide fournit une démonstration complète pour créer un cluster Amazon EKS avec des nœuds Amazon Linux.

   Créez votre groupe de nœuds avec la commande suivante. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster. 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 peut pas dépasser 100 caractères. Le nom doit être unique dans la AWS région et le AWS compte dans lesquels vous créez le cluster. Remplacer *ng-windows* 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. Vous pouvez *2019* remplacer par `2022` pour utiliser Windows Server 2022 ou `2025` Windows Server 2025. Remplacez le reste des valeurs d’exemple par vos propres valeurs.
**Important**  
Pour déployer un groupe de nœuds sur des sous-réseaux AWS Outposts, AWS Wavelength ou AWS Local Zone, ne transmettez pas les sous-réseaux Outposts AWS , Wavelength ou Local Zone lorsque vous créez le cluster. Créez le groupe de nœuds avec un fichier de configuration, en spécifiant les AWS sous-réseaux Outposts, Wavelength ou Local Zone. Pour plus d'informations, consultez [Créer un nodegroup à partir d'un fichier config](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) et [Schéma du fichier Config](https://eksctl.io/usage/schema/) dans la documentation `eksctl`.

   ```
   eksctl create nodegroup \
       --region region-code \
       --cluster my-cluster \
       --name ng-windows \
       --node-type t2.large \
       --nodes 3 \
       --nodes-min 1 \
       --nodes-max 4 \
       --managed=false \
       --node-ami-family WindowsServer2019FullContainer
   ```
**Note**  
Si les nœuds ne parviennent pas à rejoindre le cluster, reportez-vous à [Les nœuds ne parviennent pas à joindre le cluster](troubleshooting.md#worker-node-fail) dans le guide de dépannage.
Pour voir les options disponibles pour les commandes `eksctl`, saisissez la commande suivante.  

     ```
     eksctl command -help
     ```

   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"
   ```

1. (Facultatif) Déployez un [exemple d'application](sample-deployment.md) pour tester votre cluster et les nœuds Windows.

1. 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

   Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## AWS Management Console
<a name="console_create_windows_nodes"></a>

 **Conditions préalables** 
+ Un cluster Amazon EKS existant et un groupe de nœuds Linux. Si vous ne disposez pas de ces ressources, nous vous recommandons de les créer à l’aide de l’un de nos guides dans [Mise en route avec Amazon EKS](getting-started.md). Ces guides décrivent comment créer un cluster Amazon EKS avec des nœuds Linux.
+ Un VPC et un groupe de sécurité existants qui remplissent les conditions requises pour un cluster Amazon EKS. Pour plus d’informations, consultez [Afficher les exigences réseau Amazon EKS pour les VPC et les sous-réseaux](network-reqs.md) et [Voir les exigences relatives aux groupes de sécurité Amazon EKS pour les clusters](sec-group-reqs.md). Les guides disponibles dans [Mise en route avec Amazon EKS](getting-started.md) créent un VPC qui répond aux exigences. Vous pouvez également suivre les instructions de [Créer un Amazon VPC pour votre cluster Amazon EKS](creating-a-vpc.md) pour en créer un manuellement.
+ Un cluster Amazon EKS existant qui utilise un VPC et un groupe de sécurité qui remplit les conditions requises pour un cluster Amazon EKS. Pour de plus amples informations, veuillez consulter [Création d’un cluster Amazon EKS](create-cluster.md). Si vous avez des sous-réseaux dans la AWS région où AWS Outposts, AWS Wavelength ou Local AWS Zones est activé, ces sous-réseaux ne doivent pas avoir été transmis lorsque vous avez créé le cluster.

 **Étape 1 : lancer des nœuds Windows autogérés à l’aide de la AWS Management Console ** 

1. Attendez que le statut de votre cluster s'affiche soit `ACTIVE`. Si vous lancez vos nœuds avant que le cluster soit actif, les nœuds ne s'enregistrent pas avec le cluster et vous devez les relancer.

1. Ouvrez la [console AWS CloudFormation ](https://console.aws.amazon.com/cloudformation/). 

1. Sélectionnez **Créer la pile**.

1. Dans **Spécifier le modèle**, sélectionnez **URL Amazon S3**.

1. Copiez l'URL suivante et collez-la dans l'**URL Amazon S3**.

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-02-09/amazon-eks-windows-nodegroup.yaml
   ```

1. Sélectionnez **Next** (Suivant) deux fois.

1. Sur la page **Création rapide d'une pile**, saisissez les paramètres suivants en conséquence :
   +  **Nom de pile** : Choisissez un nom de pile pour votre AWS CloudFormation pile. Par exemple, vous pouvez l'appeler `my-cluster-nodes`.
   +  **ClusterName**: Entrez le nom que vous avez utilisé lors de la création de votre cluster Amazon EKS.
**Important**  
Ce nom doit correspondre exactement au nom que vous avez utilisé dans [Étape 1 : créer votre cluster Amazon EKS](getting-started-console.md#eks-create-cluster). Sinon, vos nœuds ne pourront pas rejoindre le cluster.
   +  **ClusterControlPlaneSecurityGroup**: Choisissez le groupe de sécurité dans la AWS CloudFormation sortie que vous avez générée lors de la création de votre [VPC](creating-a-vpc.md). Les étapes suivantes montrent une méthode permettant de récupérer le groupe applicable.

     1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

     1. Choisissez le nom du cluster.

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

     1. Utilisez la valeur **Groupes de sécurité supplémentaires** comme référence lorsque vous effectuez une sélection **ClusterControlPlaneSecurityGroup**dans 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 autoscaling qui est créé pour vos 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.
   +  **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. Pour de plus amples informations, veuillez consulter [Choix du type d’instance Amazon EC2 optimal pour les nœuds](choosing-instance-type.md).
**Note**  
[Les types d'instances pris en charge pour la dernière version du [plugin Amazon VPC CNI pour Kubernetes sont répertoriés dans vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s) on.](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) GitHub Vous devrez peut-être mettre à jour votre version de CNI pour utiliser les derniers types d'instances pris en charge. Pour de plus amples informations, veuillez consulter [Attribuer IPs à des pods avec l'Amazon VPC CNI](managing-vpc-cni.md).
   +  **NodeImageIdSSMParam**: prérempli avec le paramètre Amazon EC2 Systems Manager de l'ID AMI Windows Core optimisé pour Amazon EKS actuellement recommandé. Pour utiliser la version complète de Windows, remplacez *Core* par `Full`.
   +  **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 pour ce champ, elle remplace toutes les valeurs du **NodeImageIdSSMParam**champ.
   +  **NodeVolumeSize**: Spécifiez une taille de volume racine pour vos nœuds, en GiB.
   +  **KeyName**: Entrez le nom d'une paire de clés SSH Amazon EC2 que vous pourrez utiliser pour vous connecter via SSH à 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](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) dans le *Guide de l'utilisateur Amazon EC2*.
**Note**  
Si vous ne fournissez pas de paire de clés ici, la AWS CloudFormation pile ne sera pas créée.
   +  **BootstrapArguments**: Spécifiez tous les arguments facultatifs à transmettre au script bootstrap du nœud, tels que des `kubelet` arguments supplémentaires en utilisant`-KubeletExtraArgs`.
   +  **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 l'utilisation des futurs nœuds et pods du groupe de nœuds MDSv1, 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).
   +  **VpcId**: Sélectionnez l'ID du [VPC](creating-a-vpc.md) que vous avez créé.
   +  **NodeSecurityGroups**: Sélectionnez le groupe de sécurité créé pour votre groupe de nœuds Linux lorsque vous avez créé votre [VPC](creating-a-vpc.md). Si vos nœuds Linux sont associés à plusieurs groupes de sécurité, spécifiez-les tous. C'est le cas, par exemple, si le groupe de nœuds Linux a été créé avec `eksctl`.
   +  **Sous-réseaux** : choisissez les sous-réseaux que vous avez créés. Si vous avez créé votre VPC en suivant les étapes décrites dans [Créer un Amazon VPC pour votre cluster Amazon EKS](creating-a-vpc.md), spécifiez uniquement les sous-réseaux privés au sein du VPC dans lesquels vos nœuds doivent être lancés.
**Important**  
Si certains sous-réseaux sont des sous-réseaux publics, leur paramètre d'attribution automatique d'adresse IP publique doit être activé. Si le paramètre n'est pas activé pour le sous-réseau public, aucun nœud que vous déployez sur ce sous-réseau public ne se verra attribuer d'adresse IP publique et ne pourra pas communiquer avec le cluster ou d'autres AWS services. Si le sous-réseau a été déployé avant le 26 mars 2020 en utilisant l'un des modèles de [AWS CloudFormation VPC Amazon EKS](creating-a-vpc.md) ou `eksctl` en utilisant, l'attribution automatique d'adresses IP publiques est désactivée pour les sous-réseaux publics. Pour plus d'informations sur la façon d'activer l'attribution d'adresses IP publiques pour un sous-réseau, consultez la section [Modification de l'attribut d' IPv4 adressage public de votre sous-réseau](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip). Si le nœud est déployé sur un sous-réseau privé, il est capable de communiquer avec le cluster et d'autres AWS services via une passerelle NAT.
Si les sous-réseaux n’ont pas accès à Internet, veuillez vous assurer de prendre connaissance des considérations et des étapes supplémentaires décrites dans [Déployer des clusters privés avec un accès Internet limité](private-clusters.md).
Si vous sélectionnez AWS les sous-réseaux Outposts, Wavelength ou Local Zone, les sous-réseaux ne doivent pas avoir été transmis lors de la création du cluster.

1. Confirmez que la pile peut créer des ressources IAM, puis choisissez **Create stack (Créer une pile)**.

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

1. Enregistrez le **NodeInstanceRole**pour le groupe de nœuds créé. Vous en aurez besoin lors de la configuration de vos nœuds Windows Amazon EKS.

 **Étape 2 : 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
   ```

1. 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
      ```

   1. Ajoutez de nouvelles entrées `mapRoles` selon vos besoins. Définissez les `rolearn` valeurs selon les **NodeInstanceRole**valeurs que vous avez enregistrées dans les procédures précédentes.

      ```
      [...]
      data:
        mapRoles: |
      - rolearn: <ARN of linux instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
          - rolearn: <ARN of windows instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
              - eks:kube-proxy-windows
      [...]
      ```

   1. Enregistrez le fichier et quittez votre éditeur de texte.

1. 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-windows.yaml
      ```

   1. Dans le `aws-auth-cm-windows.yaml` fichier, définissez les `rolearn` valeurs en fonction des **NodeInstanceRole**valeurs applicables que vous avez enregistrées dans les procédures précédentes. Vous pouvez effectuer cette opération à l’aide d’un éditeur de texte ou en remplaçant les valeurs d’exemple et en exécutant la commande suivante :

      ```
      sed -i.bak -e 's|<ARN of linux instance role (not instance profile)>|my-node-linux-instance-role|' \
          -e 's|<ARN of windows instance role (not instance profile)>|my-node-windows-instance-role|' aws-auth-cm-windows.yaml
      ```
**Important**  
Ne modifiez aucune autre ligne de ce fichier.
Veuillez ne pas utiliser le même rôle IAM pour les nœuds Windows et Linux.

   1. Appliquez la configuration. L'exécution de cette commande peut prendre quelques minutes.

      ```
      kubectl apply -f aws-auth-cm-windows.yaml
      ```

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

   ```
   kubectl get nodes --watch
   ```

   Saisissez `Ctrl`\$1`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`)](troubleshooting.md#unauthorized) dans la rubrique relative à la résolution des problèmes.

   Si les nœuds ne parviennent pas à rejoindre le cluster, consultez la section [Les nœuds ne parviennent pas à joindre le cluster](troubleshooting.md#worker-node-fail) du chapitre Dépannage.

 **Étape 3 : actions supplémentaires** 

1. (Facultatif) Déployez un [exemple d'application](sample-deployment.md) pour tester votre cluster et les nœuds Windows.

1. (Facultatif) Si la politique IAM gérée par **Amazoneks\$1CNI\$1Policy** (si vous avez `IPv4` un cluster) ou celle (que vous avez [créée vous-même](cni-iam-role.md#cni-iam-role-create-ipv6-policy) si vous avez un `IPv6` cluster) est attachée *AmazonEKS\$1CNI\$1IPv6\$1Policy* au rôle IAM de votre [nœud Amazon EKS, nous vous recommandons de l'attribuer à un rôle IAM](create-node-role.md) que vous associez plutôt au compte de service Kubernetes. `aws-node` Pour de plus amples informations, veuillez consulter [Configuration du plug-in Amazon VPC CNI pour utiliser IRSA](cni-iam-role.md).

1. 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

   Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Créer des nœuds Ubuntu Linux autogérés
<a name="launch-node-ubuntu"></a>

**Note**  
Les groupes de nœuds gérés peuvent offrir certains avantages pour votre cas d'utilisation. Pour de plus amples informations, veuillez consulter [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md).

Cette rubrique décrit comment lancer des groupes Auto Scaling de nœuds [Ubuntu sur Amazon Elastic Kubernetes Service (EKS)](https://cloud-images.ubuntu.com/aws-eks/) ou [Ubuntu Pro sur Amazon Elastic Kubernetes Service (EKS)](https://ubuntu.com/blog/ubuntu-pro-for-eks-is-now-generally-available) qui s’enregistrent auprès de votre cluster Amazon EKS. Ubuntu et Ubuntu Pro pour EKS sont basés sur le LTS officiel Ubuntu Minimal, incluent le AWS noyau personnalisé développé conjointement avec AWS EKS et spécialement conçu pour EKS. Ubuntu Pro renforce la sécurité en prenant en charge les périodes de support étendu EKS, le livepatch du noyau, la conformité FIPS et la possibilité d’exécuter un nombre illimité de conteneurs Pro.

Une fois les nœuds intégrés au cluster, vous pouvez y déployer des applications conteneurisées. Pour plus d’informations, consultez la documentation relative à [Ubuntu sur AWS](https://documentation.ubuntu.com/aws/en/latest/) et [Prise en charge des AMI personnalisées](https://eksctl.io/usage/custom-ami-support/) dans la documentation `eksctl`.

**Important**  
Les nœuds Amazon EKS sont des instances Amazon EC2 standard pour lesquelles vous êtes facturé en fonction du tarif normal pour les instances Amazon EC2. Pour plus d’informations, consultez [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Vous pouvez lancer des nœuds Ubuntu dans des clusters étendus Amazon EKS sur AWS Outposts, mais vous ne pouvez pas les lancer dans des clusters locaux sur AWS Outposts. Pour de plus amples informations, veuillez consulter [Déployez Amazon EKS sur site avec AWS Outposts](eks-outposts.md).
Vous pouvez déployer sur des instances Amazon EC2 avec des processeurs `x86` ou Arm. Cependant, les instances équipées de puces Inferentia peuvent nécessiter l’installation préalable du [Kit SDK de Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/).

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

```
eksctl version
```

Pour obtenir des instructions sur l’installation ou la mise à niveau d’`eksctl`, consultez [Installation](https://eksctl.io/installation) dans la documentation `eksctl`. REMARQUE : cette procédure ne fonctionne que pour les clusters créés avec `eksctl`.

1. Copiez les contenus suivants sur votre appareil. 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 une lettre et ne peut pas dépasser 100 caractères. Remplacer `ng-ubuntu` 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. Pour effectuer un déploiement sur des instances Arm, remplacez `m5.large` par un type d'instance Arm. Remplacez `my-ec2-keypair-name` par 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, consultez [Paires de clés Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le Guide de l’utilisateur Amazon EC2. Remplacez toutes les valeurs d’exemple restantes par vos propres valeurs. Une fois les remplacements effectués, exécutez la commande modifiée pour créer le fichier `ubuntu.yaml`.
**Important**  
Pour déployer un groupe de nœuds sur des sous-réseaux AWS Outposts, AWS Wavelength ou AWS Local Zone, ne transmettez pas les sous-réseaux Outposts AWS , AWS Wavelength ou AWS Local Zone lorsque vous créez le cluster. Vous devez spécifier les sous-réseaux dans l'exemple suivant. Pour plus d'informations, consultez [Créer un nodegroup à partir d'un fichier de configuration](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) et [Schéma du fichier de configuration](https://eksctl.io/usage/schema/) dans la documentation `eksctl`. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster.

   ```
   cat >ubuntu.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-ubuntu
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Ubuntu2204
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

   Pour créer un groupe de nœuds Ubuntu Pro, il suffit de remplacer la valeur `amiFamily` par `UbuntuPro2204`.

1. Deployez vos nœuds avec la commande suivante :

   ```
   eksctl create nodegroup --config-file=ubuntu.yaml
   ```

   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"
   ```

1. (Facultatif) Déployez un [exemple d’application](sample-deployment.md) pour tester vos nœuds Ubuntu.

1. 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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

   Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Mettez à jour les nœuds autogérés de votre cluster
<a name="update-workers"></a>

Quand une nouvelle AMI optimisée pour Amazon EKS est publiée, pensez à remplacer les nœuds autogérés au sein de votre groupe par cette nouvelle AMI. De même, si vous avez mis à jour la version Kubernetes pour votre cluster Amazon EKS, mettez à jour les nœuds afin qu'ils utilisent la même version de Kubernetes.

**Important**  
Cette rubrique couvre les mises à jour des nœuds pour les groupes de nœuds autogérés. Si vous utilisez des [groupes de nœuds gérés](managed-node-groups.md), consultez [Mettre à jour un groupe de nœuds gérés pour votre cluster](update-managed-node-group.md).

Deux méthodes de base permettent de mettre à jour les groupes de nœuds autogérés dans vos clusters afin d'utiliser une nouvelle AMI :

 ** [Migrer des applications vers un nouveau groupe de nœuds](migrate-stack.md) **   
Créez un nouveau groupe de nœuds et migrez vos pods vers ce groupe. La migration vers un nouveau groupe de nœuds est plus élégante que la simple mise à jour de l’ID AMI dans une pile AWS CloudFormation existante. En effet, le processus de migration [rejette](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) l’ancien groupe de nœuds en tant que `NoSchedule` et vide les nœuds une fois qu’une nouvelle pile est prête à accepter la charge de travail Pod existante.

 ** [Mettre à jour une pile de nœuds AWS CloudFormation](update-stack.md) **   
Mettez à jour la pile AWS CloudFormation d’un groupe de nœuds existant afin d’utiliser la nouvelle AMI. Cette méthode n’est pas prise en charge pour les groupes de nœuds créés avec `eksctl`.

# Migrer des applications vers un nouveau groupe de nœuds
<a name="migrate-stack"></a>

Cette rubrique vous explique comment créer un groupe de nœuds, migrer avec élégance vos applications existantes vers ce nouveau groupe, puis supprimer l'ancien groupe de nœuds de votre cluster. Vous pouvez migrer vers un nouveau groupe de nœuds à l'aide de`eksctl` ou de AWS Management Console.
+  [`eksctl`](#eksctl_migrate_apps) 
+  [AWS Management Console et AWS CLI](#console_migrate_apps) 

## `eksctl`
<a name="eksctl_migrate_apps"></a>

 **Pour migrer vos applications vers un nouveau groupe de nœuds avec `eksctl`** 

Pour plus d’informations sur l’utilisation d’eksctl pour la migration, consultez la section [Nœuds non gérés](https://eksctl.io/usage/nodegroup-unmanaged/) dans la documentation `eksctl`.

Cette procédure nécessite `eksctl` version `0.215.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](https://eksctl.io/installation) dans la documentation `eksctl`.

**Note**  
Cette procédure fonctionne uniquement pour les clusters et les groupes de nœuds créés avec `eksctl`.

1. Récupérez le nom de vos groupes de nœuds existants, en remplaçant *my-cluster* par le nom de votre cluster.

   ```
   eksctl get nodegroups --cluster=my-cluster
   ```

   L'exemple qui suit illustre un résultat.

   ```
   CLUSTER      NODEGROUP          CREATED               MIN SIZE      MAX SIZE     DESIRED CAPACITY     INSTANCE TYPE     IMAGE ID
   default      standard-nodes   2019-05-01T22:26:58Z  1             4            3                    t3.medium         ami-05a71d034119ffc12
   ```

1. Lancez un nouveau groupe de nœuds avec `eksctl` à l'aide de la commande suivante. Dans la commande, remplacez chaque *example value* par vos propres valeurs. Le numéro de version ne peut pas être postérieur à la version Kubernetes pour votre plan de contrôle. De même, il ne peut pas être antérieur de plus de deux versions mineures à la version Kubernetes de votre plan de contrôle. Nous vous recommandons d'utiliser la même version que votre plan de contrôle.

   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 Amazon EC2 (IMDS) pour d'autres raisons, telles que la récupération de la région actuelle. AWS 

     Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

     Pour bloquer l’accès des pods à IMDS, ajoutez l’option `--disable-pod-imds` à la commande suivante.
**Note**  
Pour plus d'indicateurs disponibles et leurs descriptions, consultez https://eksctl.io/.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --version 1.35 \
     --name standard-nodes-new \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --managed=false
   ```

1. Lorsque la commande précédente se termine, vérifiez que tous vos nœuds ont atteint l'état `Ready` à l'aide de la commande suivante :

   ```
   kubectl get nodes
   ```

1. Supprimez le groupe de nœuds d'origine avec la commande suivante. Dans la commande, remplacez chaque *example value* par les noms de votre cluster et de votre groupe de nœuds :

   ```
   eksctl delete nodegroup --cluster my-cluster --name standard-nodes-old
   ```

## AWS Management Console et AWS CLI
<a name="console_migrate_apps"></a>

 **Migrez vos applications vers un nouveau groupe de nœuds à l'aide de la AWS CLI AWS Management Console et** 

1. Lancez un nouveau groupe de nœuds en suivant les étapes décrites dans [Créer des nœuds Amazon Linux autogérés](launch-workers.md).

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

1.  Enregistrez le **NodeInstanceRole**pour le groupe de nœuds créé. Vous en aurez besoin pour ajouter les nouveaux nœuds Amazon EKS à votre cluster.
**Note**  
Si vous avez attachés des stratégies IAM supplémentaires au rôle IAM de votre ancien groupe de nœuds, attachez ces mêmes stratégies au rôle IAM de votre nouveau groupe de nœuds pour maintenir cette fonctionnalité sur le nouveau groupe. Cela s'applique si vous avez ajouté des autorisations pour le Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), par exemple.

1. Mettez à jour les groupes de sécurité pour les deux groupes de nœuds afin qu'ils puissent communiquer entre eux. Pour de plus amples informations, veuillez consulter [Voir les exigences relatives aux groupes de sécurité Amazon EKS pour les clusters](sec-group-reqs.md).

   1. Enregistrez le groupe de sécurité IDs pour les deux groupes de nœuds. Ceci est affiché sous forme de **NodeSecurityGroup**valeur dans les sorties de la AWS CloudFormation pile.

      Vous pouvez utiliser les commandes AWS CLI suivantes pour obtenir le groupe IDs de sécurité à partir des noms de pile. Dans ces commandes, `oldNodes` il s'agit du nom de la AWS CloudFormation pile de votre ancienne pile de nœuds et `newNodes` du nom de la pile vers laquelle vous effectuez la migration. Remplacez chaque *example value* par vos propres valeurs.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      ```

   1. Ajoutez des règles d'entrée pour chaque groupe de sécurité des nœuds afin d'accepter le trafic de l'autre.

      Les commandes AWS CLI suivantes ajoutent des règles entrantes à chaque groupe de sécurité qui autorisent tout le trafic sur tous les protocoles en provenance de l'autre groupe de sécurité. Cette configuration permet aux pods au sein de chaque groupe de nœuds peuvent ainsi communiquer entre eux pendant que vous migrez la charge de travail vers le nouveau groupe.

      ```
      aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 authorize-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

1. Modifiez la configmap `aws-auth` afin de mapper le nouveau rôle d'instance des nœuds dans RBAC.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Ajoutez une nouvelle entrée `mapRoles` pour le nouveau groupe de nœuds.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: ARN of instance role (not instance profile)
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
   ```

   Remplacez l'*ARN of instance role (not instance profile)*extrait par la **NodeInstanceRole**valeur que vous avez enregistrée lors d'une étape [précédente](#node-instance-role-step). Ensuite, enregistrez et fermez le fichier pour appliquer le configmap mise à jour.

1. Vérifiez le statut de vos nœuds et attendez que vos nouveaux nœuds rejoignent votre cluster et affichent le statut `Ready`.

   ```
   kubectl get nodes --watch
   ```

1. (Facultatif) Si vous utilisez l’outil [Cluster Autoscaler de Kubernetes](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), réduisez verticalement le déploiement à zéro (0) réplicas afin d’éviter tout conflit entre les actions de mise à l’échelle.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
   ```

1. Utilisez la commande suivante pour rejeter chacun des nœuds que vous souhaitez supprimer avec `NoSchedule`. Ceci afin que les nouveaux pods ne soient pas planifiés ou replanifiés sur les nœuds que vous remplacez. Pour plus d’informations, consultez [Rejets et tolérances](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) dans la documentation de Kubernetes.

   ```
   kubectl taint nodes node_name key=value:NoSchedule
   ```

   Si vous mettez à niveau vos nœuds vers une nouvelle version de Kubernetes, vous pouvez identifier et rejeter tous les nœuds d’une version Kubernetes donnée (dans ce cas, `1.33`) avec le snippet de code suivant. Le numéro de version ne peut pas être postérieur à la version Kubernetes de votre plan de contrôle. Il ne peut pas non plus être antérieur de plus de deux versions mineures à la version Kubernetes de votre plan de contrôle. Nous vous recommandons d'utiliser la même version que votre plan de contrôle.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Tainting $node"
       kubectl taint nodes $node key=value:NoSchedule
   done
   ```

1.  Déterminez le fournisseur DNS de votre cluster.

   ```
   kubectl get deployments -l k8s-app=kube-dns -n kube-system
   ```

   L'exemple qui suit illustre un résultat. Ce cluster utilise CoreDNS pour la résolution DNS, mais votre cluster peut renvoyer la valeur `kube-dns` à la place) :

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Si votre déploiement actuel exécute moins de deux réplicas, dimensionnez le déploiement à deux réplicas. Remplacez *coredns* par `kubedns` si la sortie de votre commande a plutôt renvoyé cette valeur.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Drainez chacun des nœuds que vous souhaitez supprimer de votre cluster à l'aide de la commande suivante :

   ```
   kubectl drain node_name --ignore-daemonsets --delete-local-data
   ```

   Si vous mettez à niveau vos nœuds vers une nouvelle version de Kubernetes, identifiez et videz tous les nœuds d'une version particulière de Kubernetes (dans ce cas,*1.33*) à l'aide de l'extrait de code suivant.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-local-data
   done
   ```

1. Une fois que vos anciens nœuds ont été purgés, révoquez les règles d'entrée du groupe de sécurité que vous avez autorisées précédemment. Supprimez ensuite la AWS CloudFormation pile pour mettre fin aux instances.
**Note**  
Si vous avez associé des politiques IAM supplémentaires à votre ancien rôle IAM de groupe de nœuds, par exemple en ajoutant des autorisations pour le [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), détachez-les du rôle avant de supprimer votre stack. AWS CloudFormation 

   1. Révoquez les règles entrantes que vous aviez créées précédemment pour les groupes de sécurité de vos nœuds. Dans ces commandes, `oldNodes` il s'agit du nom de la AWS CloudFormation pile de votre ancienne pile de nœuds et `newNodes` du nom de la pile vers laquelle vous effectuez la migration.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 revoke-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

   1. Ouvrez la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/).

   1. Sélectionnez votre ancienne pile de nœuds.

   1. Sélectionnez **Delete (Supprimer)**.

   1. Dans la boîte de dialogue de confirmation **Delete stack (Supprimer la pile)**, choisissez **Delete stack (Supprimer la pile)**.

1. Modifiez la configmap `aws-auth` afin de supprimer l'ancien rôle d'instance des nœuds dans RBAC.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Supprimez l'entrée `mapRoles` de l'ancien groupe de nœuds.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-W70725MZQFF8
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-15-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
   ```

   Enregistrez et fermez le fichier afin d'appliquer la configmap mise à jour.

1. (Facultatif) Si vous utilisez le composant [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) de Kubernetes, dimensionnez le déploiement à un réplica.
**Note**  
Vous devez également labeliser votre nouveau groupe Auto Scaling de façon appropriée (par exemple `k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster`) et mettre à jour la commande de votre déploiement Cluster Autoscaler afin qu'elle pointe vers le groupe Auto Scaling nouvellement labelisé. Pour plus d'informations, consultez [Cluster Autoscaler activé. AWS](https://github.com/kubernetes/autoscaler/tree/cluster-autoscaler-release-1.3/cluster-autoscaler/cloudprovider/aws)

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Facultatif) Vérifiez que vous utilisez la dernière version du [plug-in CNI Amazon VPC pour Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s). Vous devrez peut-être mettre à jour votre version de CNI pour utiliser les derniers types d'instances pris en charge. Pour de plus amples informations, veuillez consulter [Attribuer IPs à des pods avec l'Amazon VPC CNI](managing-vpc-cni.md).

1. Si votre cluster utilise `kube-dns` pour la résolution DNS (voir [[migrate-determine-dns-step]](#migrate-determine-dns-step)), réduisez horizontalement le déploiement `kube-dns` à un réplica.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

# Mettre à jour une pile de AWS CloudFormation nœuds
<a name="update-stack"></a>

Cette rubrique décrit comment mettre à jour une pile de nœuds AWS CloudFormation autogérés existante avec une nouvelle AMI. Vous pouvez utiliser cette procédure pour mettre à jour vos nœuds vers une nouvelle version de Kubernetes suite à une mise à jour du cluster. Sinon, vous pouvez effectuer une mise à jour vers la dernière AMI optimisée pour Amazon EKS pour une version Kubernetes existante.

**Important**  
Cette rubrique couvre les mises à jour des nœuds pour les groupes de nœuds autogérés. Pour plus d’informations sur l’utilisation de [Simplifier le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md), consultez [Mettre à jour un groupe de nœuds gérés pour votre cluster](update-managed-node-group.md).

Le dernier AWS CloudFormation modèle de nœud Amazon EKS par défaut est configuré pour lancer une instance avec la nouvelle AMI dans votre cluster avant de supprimer l'ancienne, une par une. Cette configuration garantit que vous disposez toujours du nombre souhaité d’instances actives de votre groupe Auto Scaling dans votre cluster pendant la mise à jour propagée.

**Note**  
Cette méthode n’est pas prise en charge pour les groupes de nœuds créés avec `eksctl`. Si vous avez créé votre cluster ou votre groupe de nœuds avec `eksctl`, consultez [Migrer des applications vers un nouveau groupe de nœuds](migrate-stack.md).

1. Déterminez le fournisseur DNS de votre cluster.

   ```
   kubectl get deployments -l k8s-app=kube-dns -n kube-system
   ```

   L'exemple qui suit illustre un résultat. Ce cluster utilise CoreDNS pour la résolution DNS, mais votre cluster peut renvoyer `kube-dns` à la place. Votre sortie peut être différente selon la version de `kubectl` que vous utilisez.

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Si votre déploiement actuel exécute moins de deux réplicas, dimensionnez le déploiement à deux réplicas. Remplacez *coredns* par `kube-dns` si la sortie de votre commande a plutôt renvoyé cette valeur.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. (Facultatif) Si vous utilisez l’outil [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) de Kubernetes, réduisez verticalement le déploiement à zéro (0) réplicas afin d’éviter tout conflit entre les actions de mise à l’échelle.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
   ```

1.  Déterminez le type d’instance et le nombre d’instances souhaité pour votre groupe de nœuds actuel. Vous entrez ces valeurs ultérieurement lorsque vous mettez à jour le AWS CloudFormation modèle du groupe.

   1. Ouvrez la console Amazon EC2 à l'adresse. https://console.aws.amazon.com/ec2/

   1. Dans le panneau de navigation de gauche, sélectionnez **Launch Configurations** (Configurations du lancement) et notez le type d'instance pour votre configuration actuelle de lancement des nœuds.

   1. Dans le panneau de navigation de gauche, sélectionnez **Auto Scaling Groups** (Groupes Auto Scaling) et notez le nombre d'instances **souhaité** pour le groupe Auto Scaling actuel des nœuds.

1. Ouvrez la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/).

1. Sélectionnez votre pile de groupe de nœuds, puis choisissez **Update** (Mettre à jour).

1. Sélectionnez **Replace current template (Remplacer le modèle actuel)** et sélectionnez **Amazon S3 URL (URL Amazon S3)**.

1. Pour **l'URL Amazon S3**, collez l'URL suivante dans la zone de texte pour vous assurer que vous utilisez la dernière version du AWS CloudFormation modèle de nœud. Ensuite, sélectionnez **Next** (Suivant) :

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
   ```

1. Sur la page **Specify stack details** (Spécifier les détails de la pile), renseignez les paramètres suivants, puis choisissez **Next** (Suivant) :
   +  **NodeAutoScalingGroupDesiredCapacity**— Entrez le nombre d'instances souhaité que vous avez enregistré lors d'une [étape précédente](#existing-worker-settings-step). Ou saisissez le nouveau nombre de nœuds souhaité pour la mise à l'échelle lorsque votre pile sera mise à jour.
   +  **NodeAutoScalingGroupMaxSize**— Entrez le nombre maximum de nœuds auxquels votre groupe Auto Scaling de nœuds peut s'étendre. Cette valeur doit être supérieure d'au moins un nœud à votre capacité souhaitée. Ceci afin de pouvoir effectuer une mise à jour continue de vos nœuds sans réduire votre nombre de nœuds pendant la mise à jour.
   +  **NodeInstanceType**— Choisissez le type d'instance que vous avez enregistré à l'[étape précédente](#existing-worker-settings-step). Vous pouvez également choisir un type d'instance différent pour vos nœuds. Avant de choisir un autre type d’instance, consultez [Choisir un type d’instance de nœud Amazon EC2 optimal](choosing-instance-type.md). Chaque type d'instance Amazon EC2 prend en charge un nombre maximal d'interfaces réseau Elastic (interface réseau) et chaque interface réseau prend en charge un nombre maximal d'adresses IP. Étant donné que chaque composant master et chaque pod se voit attribuer sa propre adresse IP, il est important de choisir un type d’instance qui prendra en charge le nombre maximal de pods que vous voulez exécuter sur chaque nœud Amazon EC2. Pour une liste du nombre d'interfaces réseau et d'adresses IP pris en charge par les types d'instances, consultez [adresses IP par interface réseau et par type d'instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI). Par exemple, le type d’instance `m5.large` prend en charge un maximum de 30 adresses IP pour le composant master et les pods.
**Note**  
Les types d'instances pris en charge pour la dernière version du [plugin CNI d'Amazon VPC pour Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) sont indiqués dans [vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) sur GitHub. Vous devrez peut-être mettre à jour votre plug-in CNI Amazon VPC pour la version Kubernetes afin d’utiliser les derniers types d’instance pris en charge. Pour de plus amples informations, veuillez consulter [Attribuer IPs à des pods avec l'Amazon VPC CNI](managing-vpc-cni.md).
**Important**  
Certains types d'instances peuvent ne pas être disponibles dans toutes les AWS régions.
   +  **NodeImageIdSSMParam**— Le paramètre Amazon EC2 Systems Manager de l'ID AMI vers lequel vous souhaitez effectuer la mise à jour. La valeur suivante utilise la dernière AMI optimisée Amazon EKS pour la version `1.35` de Kubernetes.

     ```
     /aws/service/eks/optimized-ami/1.35/amazon-linux-2/recommended/image_id
     ```

     Vous pouvez le *1.35* remplacer par une [version de plateforme](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) identique. Ou bien, elle doit être antérieure d'une version au maximum à la version Kubernetes exécutée sur votre plan de contrôle. Nous vous recommandons de conserver vos nœuds dans la même version que votre plan de contrôle. Vous pouvez également le remplacer *amazon-linux-2* par un autre type d'AMI. Pour de plus amples informations, veuillez consulter [Récupérez l'AMI Amazon Linux recommandée IDs](retrieve-ami-id.md).
**Note**  
L'utilisation du paramètre Amazon EC2 Systems Manager vous permet de mettre à jour vos nœuds à l'avenir sans avoir à rechercher et spécifier un ID d'AMI. Si votre AWS CloudFormation stack utilise cette valeur, toute mise à jour de stack lance toujours la dernière AMI optimisée Amazon EKS recommandée pour la version de Kubernetes que vous avez spécifiée. C’est le cas même si vous ne modifiez aucune valeur dans le modèle.
   +  **NodeImageId**— Pour utiliser votre propre AMI personnalisée, entrez l'ID de l'AMI à utiliser.
**Important**  
Cette valeur remplace toute valeur spécifiée pour **NodeImageIdSSMParam**. Si vous souhaitez utiliser la **NodeImageIdSSMParam**valeur, assurez-vous que la valeur pour **NodeImageId**est vide.
   +  **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 toutefois le désactiver IMDSv1. Sélectionnez **true** si vous ne souhaitez pas que les nœuds ou les pods planifiés dans le groupe de nœuds soient utilisés IMDSv1. Pour de plus amples informations au sujet d'IMDS, consultez [Configuration du service des métadonnées d'instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html). Si vous avez implémenté des rôles IAM pour les comptes de service, attribuez les autorisations nécessaires directement à tous les pods nécessitant un accès aux AWS services. Ainsi, aucun pod de votre cluster n'a besoin d'accéder à l'IMDS pour d'autres raisons, telles que la récupération de la région actuelle AWS . Ensuite, vous pouvez également désactiver l'accès IMDSv2 aux pods qui n'utilisent pas le réseau hôte. Pour plus d'informations, consultez [Restreindre l'accès au profil d'instance affecté au composant master](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

1. (Facultatif) Sur la page **Options (Options)**, étiquetez les ressources de votre pile. Choisissez **Suivant**.

1. Sur la page **Review** (Vérification), vérifiez vos informations, acceptez que la pile puisse créer des ressources IAM, puis choisissez **Update stack** (Mettre à jour la pile).
**Note**  
La mise à jour de chaque nœud du cluster prend plusieurs minutes. Attendez que la mise à jour de tous les nœuds soit terminée avant d'effectuer les étapes suivantes.

1. Si le fournisseur DNS de votre cluster est `kube-dns`, réduisez horizontalement le déploiement `kube-dns` à une réplica.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

1. (Facultatif) Si vous utilisez le composant [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) de Kubernetes, redimensionnez le déploiement à la quantité souhaitée de réplicas.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Facultatif) Vérifiez que vous utilisez la dernière version du [plug-in CNI Amazon VPC pour Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s). Vous devrez peut-être mettre à jour votre plug-in CNI Amazon VPC pour la version Kubernetes afin d’utiliser les derniers types d’instance pris en charge. Pour de plus amples informations, veuillez consulter [Attribuer IPs à des pods avec l'Amazon VPC CNI](managing-vpc-cni.md).

# Simplifiez la gestion des calculs avec AWS Fargate
<a name="fargate"></a>

Cette rubrique porte sur l’utilisation d’Amazon EKS pour exécuter les pods Kubernetes sur AWS Fargate. Fargate est une technologie qui fournit une capacité de calcul à la demande et de taille appropriée pour les [conteneurs](https://aws.amazon.com/what-are-containers). Avec Fargate, il n’est pas nécessaire d’allouer, de configurer ou de mettre à l’échelle des groupes de machines virtuelles pour exécuter les conteneurs. Vous n’avez plus à choisir les types de serveurs, à décider quand vos clusters de nœuds doivent être mis à l’échelle, ni à optimiser les packs de clusters.

Vous pouvez contrôler les pods qui démarrent sur Fargate et la manière dont ils s’exécutent avec des [profils Fargate](fargate-profile.md). Les profils Fargate sont définis dans le cadre de votre cluster Amazon EKS. Amazon EKS intègre Kubernetes à Fargate à l’aide des contrôleurs créés par AWS en utilisant le modèle extensible en amont fourni par Kubernetes. Ces contrôleurs font partie du plan de contrôle Kubernetes géré par Amazon EKS et sont responsables de la planification des pods Kubernetes natifs sur Fargate. Les contrôleurs Fargate comprennent un nouveau planificateur qui s'exécute parallèlement au planificateur Kubernetes par défaut, en plus de plusieurs contrôleurs d'admission mutants et validants. Lorsque vous démarrez un pod qui répond aux critères d’exécution sur Fargate, les contrôleurs Fargate qui fonctionnent dans le cluster reconnaissent, mettent à jour et planifient le pod sur Fargate.

Cette rubrique décrit les différents composants des pods qui s’exécutent sur Fargate, et appelle à des considérations particulières pour l’utilisation de Fargate avec Amazon EKS.

## Considérations relatives à AWS Fargate
<a name="fargate-considerations"></a>

Voici quelques éléments à prendre en compte pour l'utilisation de Fargate sur Amazon EKS.
+ Chaque pod fonctionnant sur Fargate a sa propre limite de calcul. Les nœuds ne partagent pas le noyau sous-jacent, les ressources CPU, les ressources mémoire ou l’interface réseau Elastic avec un autre pod.
+ Les Network Load Balancers et les Application Load Balancers (ALB) peuvent être utilisés avec Fargate avec des cibles IP uniquement. Pour plus d’informations, consultez [Créer un équilibreur de charge de réseau](network-load-balancing.md#network-load-balancer) et [Routage du trafic des applications et du trafic HTTP avec des équilibreurs de charge Application Load Balancer](alb-ingress.md).
+ Les services exposés de Fargate s'exécutent uniquement en mode IP de type cible, et non en mode IP de nœud. La manière recommandée de vérifier la connectivité entre un service s'exécutant sur un nœud géré et un service s'exécutant sur Fargate est de se connecter via le nom du service.
+ Les pods doivent correspondre à un profil Fargate au moment où ils sont programmés pour fonctionner sur Fargate. Les pods qui ne correspondent pas à un profil Fargate peuvent être bloqués comme `Pending`. Si un profil Fargate correspondant existe, vous pouvez supprimer les pods en attente que vous avez créés pour les reprogrammer sur Fargate.
+ Les DaemonSets ne sont pas pris en charge sur Fargate. Si votre application nécessite un démon, reconfigurez ce démon pour qu’il s’exécute en tant que conteneur secondaire dans vos pods.
+ Les conteneurs privilégiés ne sont pas pris en charge sur Fargate.
+ Les pods fonctionnant sur Fargate ne peuvent pas spécifier `HostPort` ou `HostNetwork` dans le manifeste du pod.
+ La limite logicielle par défaut `nofile` et `nproc` est de 1 024 et la limite matérielle est de 65 535 pour les pods Fargate.
+ Les GPU ne sont actuellement pas disponibles sur Fargate.
+ Les pods qui fonctionnent sur Fargate ne sont pris en charge que sur des sous-réseaux privés (avec un accès aux services AWS par passerelle NAT, mais sans route directe vers une passerelle Internet). Le VPC de votre cluster doit donc disposer de sous-réseaux privés. Pour les clusters sans accès Internet sortant, veuillez consulter [Déployer des clusters privés avec un accès Internet limité](private-clusters.md).
+ Vous pouvez utiliser la fonctionnalité [Ajuster les ressources des pods avec Vertical Pod Autoscaler](vertical-pod-autoscaler.md) pour définir la taille initiale correcte du processeur et de la mémoire pour vos pods Fargate, puis utiliser la fonctionnalité [Mettre à l’échelle les déploiements de pods avec Horizontal Pod Autoscaler](horizontal-pod-autoscaler.md) pour mettre à l’échelle ces pods. Si vous souhaitez que le Vertical Pod Autoscaler redéploie automatiquement les pods vers Fargate avec des combinaisons de CPU et de mémoire plus importantes, définissez le mode de Vertical Pod Autoscale sur `Auto` ou `Recreate` pour garantir une fonctionnalité correcte. Pour plus d'informations, consultez la documentation [Vertical Pod Autoscaler (VPA)](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) sur GitHub.
+ La résolution DNS et les noms d'hôte DNS doivent être activés pour votre VPC. Pour plus d'informations, consultez [Affichage et mise à jour de la prise en charge de DNS pour votre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).
+ Amazon EKS Fargate ajoute une défense approfondie aux applications Kubernetes en isolant chaque pod au sein d'une machine virtuelle (VM). Cette frontière VM empêche l'accès aux ressources basées sur l'hôte utilisées par d'autres pods en cas de fuite du conteneur, qui est une méthode courante d'attaque des applications conteneurisées et d'accès aux ressources en dehors du conteneur.

  L’utilisation d’Amazon EKS ne modifie pas vos responsabilités dans le cadre du [modèle de responsabilité partagée](security.md). Vous devez examiner attentivement la configuration des contrôles de sécurité et de gouvernance du cluster. Le moyen le plus sûr d'isoler une application est toujours de l'exécuter dans un cluster séparé.
+ Les profils Fargate prennent en charge la spécification de sous-réseaux à partir de blocs CIDR secondaires de VPC. Vous pouvez spécifier un bloc CIDR secondaire. En effet, le nombre d’adresses IP disponibles dans un sous-réseau est limité. Par conséquent, il existe également un nombre limité de pods qui peuvent être créés dans le cluster. En utilisant différents sous-réseaux pour les pods, vous pouvez augmenter le nombre d’adresses IP disponibles. Pour plus d'informations, consultez [Ajout de blocs d'adresse CIDR IPv4 à un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#vpc-resize). 
+  Le service de métadonnées d’instance Amazon EC2 (IMDS) n’est pas disponible pour les pods qui sont déployés sur des nœuds Fargate. Si vous avez des pods déployés sur Fargate qui nécessitent des informations d’identification IAM, attribuez-les à vos pods à l’aide des [rôles IAM pour les comptes de service](iam-roles-for-service-accounts.md). Si vos pods ont besoin d’accéder à d’autres informations disponibles via IMDS, vous devez coder ces informations en dur dans la spécification de votre pod. Cela inclut la région AWS ou la zone de disponibilité dans laquelle un pod est déployé.
+ Vous ne pouvez pas déployer de pods Fargate sur AWS Outposts, AWS Wavelength ou AWS Local Zones.
+ Amazon EKS doit régulièrement appliquer des correctifs aux pods Fargate pour assurer leur sécurité. Les tentatives de mises à jour sont réalisées de manière à réduire les potentielles répercussions ; toutefois, il arrive que des pods doivent être supprimés si leur expulsion a échoué. Certaines actions peuvent être prises pour minimiser les perturbations. Pour de plus amples informations, consultez [Définir des actions pour les événements de correction du système d’exploitation AWS Fargate](fargate-pod-patching.md).
+ Le [pluginAmazon VPC CNI pour Amazon EKS](https://github.com/aws/amazon-vpc-cni-plugins) est installé sur des nœuds Fargate. Vous ne pouvez pas utiliser les [plugins Alternate CNI pour les clusters Amazon EKS](alternate-cni-plugins.md) avec des nœuds Fargate.
+ Un Pod fonctionnant sur Fargate monte automatiquement un système de fichiers Amazon EFS, sans nécessiter d’étapes manuelles d’installation de pilotes. Vous ne pouvez pas utiliser l’approvisionnement dynamique des volumes persistants avec les nœuds Fargate, mais vous pouvez utiliser l’approvisionnement statique.
+ Amazon EKS ne prend pas en charge Fargate Spot.
+ Vous ne pouvez pas monter des volumes Amazon EBS sur des pods Fargate.
+ Vous pouvez exécuter le contrôleur Amazon EBS CSI sur les nœuds Fargate, mais le DaemonSet du nœud Amazon EBS CSI ne peut fonctionner que sur les instances Amazon EC2.
+ Une fois qu’une [tâche Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/job/) est marquée `Completed` ou `Failed`, les pods créés par la tâche continuent généralement d’exister. Ce comportement vous permet de consulter vos journaux et vos résultats, mais avec Fargate, vous devrez payer des frais si vous ne nettoyez pas le travail après coup.

  Pour supprimer automatiquement les pods associés après l’exécution ou l’échec d’une tâche, vous pouvez spécifier une durée à l’aide du contrôleur TTL (time-to-live). L’exemple suivant montre comment spécifier `.spec.ttlSecondsAfterFinished` dans votre manifeste de tâche.

  ```
  apiVersion: batch/v1
  kind: Job
  metadata:
    name: busybox
  spec:
    template:
      spec:
        containers:
        - name: busybox
          image: busybox
          command: ["/bin/sh", "-c", "sleep 10"]
        restartPolicy: Never
    ttlSecondsAfterFinished: 60 # <-- TTL controller
  ```

## Tableau de comparaison de Fargate
<a name="_fargate_comparison_table"></a>


| Critères |  AWS Fargate | 
| --- | --- | 
|  Peut être déployé dans [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)   |  Non  | 
|  Possibilité d'être déployé dans une [zone locale AWS](local-zones.md)   |  Non  | 
|  Possibilité d'exécuter des conteneurs qui nécessitent Windows  |  Non  | 
|  Possibilité d'exécuter des conteneurs qui nécessitent Linux  |  Oui  | 
|  Possibilité d'exécuter des applications nécessitant la puce Inferentia  |  Non  | 
|  Possibilité d'exécuter des applications nécessitant un GPU  |  Non  | 
|  Possibilité d'exécuter des applications nécessitant des processeurs Arm  |  Non  | 
|  Possibilité d'exécuter AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Non  | 
|  Les pods partagent un environnement d’exécution du noyau avec d’autres pods  |  Non : chaque pod a un noyau dédié  | 
|  Les pods partagent le processeur, la mémoire, le stockage et les ressources réseau avec d’autres pods.  |  Non : chaque pod dispose de ressources dédiées et peut être dimensionné indépendamment pour optimiser l’utilisation des ressources.  | 
|  Les pods peuvent utiliser plus de matériel et de mémoire que demandé dans les spécifications des pods  |  Non : le pod peut toutefois être redéployé à l’aide d’une plus grande configuration de vCPU et de mémoire.  | 
|  Doit déployer et gérer des instances Amazon EC2  |  Non  | 
|  Doit sécuriser, entretenir et corriger le système d'exploitation des instances Amazon EC2  |  Non  | 
|  Peut fournir des arguments bootstrap lors du déploiement d’un nœud, tels que des arguments [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) supplémentaires.  |  Non  | 
|  Possibilité d’affecter des adresses IP à des pods à partir d’un bloc d’adresse CIDR différent de l’adresse IP affectée au nœud.  |  Non  | 
|  Possibilité d'accéder au nœud via SSH  |  Non : il n’y a pas de système d’exploitation hôte de nœud auquel se connecter par SSH.  | 
|  Possibilité de déployer votre propre AMI personnalisée sur les nœuds  |  Non  | 
|  Possibilité de déployer votre propre CNI personnalisée sur les nœuds  |  Non  | 
|  Vous devez mettre à jour l'AMI du nœud par vous-même  |  Non  | 
|  Vous devez mettre à jour la version du nœud Kubernetes par vous-même  |  Non : vous ne gérez pas les nœuds.  | 
|  Possibilité d’utiliser le stockage Amazon EBS avec des pods  |  Non  | 
|  Possibilité d’utiliser le stockage Amazon EFS avec des pods  |   [Oui](efs-csi.md)   | 
|  Possibilité d’utiliser le stockage Amazon FSx pour Lustre avec des pods  |  Non  | 
|  Possibilité d'utiliser le Network Load Balancer pour les services  |  Oui, lors de l’utilisation de la fonction [Créer un Network Load Balancer](network-load-balancing.md#network-load-balancer)   | 
|  Les pods peuvent s'exécuter dans un sous-réseau public  |  Non  | 
|  Possibilité d’affecter différents groupes de sécurité VPC à des pods individuels  |  Oui  | 
|  Possibilité d'exécuter des ensembles de démons Kubernetes  |  Non  | 
|  Prend en charge `HostPort` et `HostNetwork` dans le manifeste du pod  |  Non  | 
|   AWS : disponibilité dans les régions  |   [Quelques régions prises en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   | 
|  Possibilité d'exécuter des conteneurs sur des hôtes dédiés Amazon EC2  |  Non  | 
|  Tarification  |  Coût d'une mémoire Fargate individuelle et d'une configuration CPU. Chaque pod a son propre coût. Pour plus d'informations, consultez [Tarification de AWS Fargate](https://aws.amazon.com/fargate/pricing/).  | 

# Commencez à utiliser AWS Fargate pour votre cluster
<a name="fargate-getting-started"></a>

Cette rubrique explique comment commencer à exécuter des pods sur AWS Fargate avec votre cluster Amazon EKS.

Si vous limitez l'accès au point de terminaison public de votre cluster à l'aide de blocs CIDR, nous vous recommandons d'activer également l'accès au point de terminaison privé. De cette manière, les pods Fargate peuvent communiquer avec le cluster. Sans l'activation du point de terminaison privé, les blocs CIDR que vous spécifiez pour l'accès public doivent inclure les sources de sortie de votre VPC. Pour de plus amples informations, veuillez consulter [Point de terminaison du serveur d’API du cluster](cluster-endpoint.md).

**Prérequis**  
Un cluster existant. Si vous ne disposez pas déjà d’un cluster Amazon EKS, consultez [Mise en route avec Amazon EKS](getting-started.md).

## Étape 1 : s’assurer que les nœuds existants peuvent communiquer avec les pods Fargate
<a name="fargate-gs-check-compatibility"></a>

Si vous travaillez avec un nouveau cluster sans nœuds ou un cluster comportant uniquement des groupes de nœuds gérés (voir [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md)), vous pouvez passer à [Étape 2 : créer un rôle d’exécution Fargate Pod](#fargate-sg-pod-execution-role).

Supposons que vous travaillez avec un cluster existant ayant déjà des nœuds associés. Assurez-vous que les pods sur ces nœuds peuvent communiquer librement avec les pods qui s’exécutent sur Fargate. Les pods qui s’exécutent sur Fargate sont automatiquement configurés pour utiliser le groupe de sécurité du cluster auquel ils sont associés. Assurez-vous que tous les nœuds existants dans votre cluster peuvent envoyer et recevoir du trafic vers et depuis le groupe de sécurité du cluster. Les groupes de nœuds gérés sont automatiquement configurés pour utiliser également le groupe de sécurité du cluster. Vous n’avez donc pas besoin de les modifier ou de vérifier leur compatibilité (voir [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md)).

Pour les groupes de nœuds existants créés avec `eksctl` ou avec les AWS CloudFormation modèles gérés par Amazon EKS, vous pouvez ajouter le groupe de sécurité du cluster aux nœuds manuellement. Vous pouvez également modifier le modèle de lancement du groupe Auto Scaling pour le groupe de nœuds, afin d'attacher le groupe de sécurité du cluster aux instances. Pour plus d’informations, consultez [Modification des groupes de sécurité d’une instance](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SG_Changing_Group_Membership) dans le *Guide de l’utilisateur VPC Amazon*.

Vous pouvez rechercher un groupe de sécurité pour votre cluster dans la AWS Management Console section **Mise en réseau** du cluster. Vous pouvez également le faire à l'aide de la commande AWS CLI suivante. Lorsque vous utilisez cette commande, remplacez `<my-cluster>` par le nom de votre cluster.

```
aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId
```

## Étape 2 : créer un rôle d’exécution Fargate Pod
<a name="fargate-sg-pod-execution-role"></a>

Lorsque votre cluster crée des pods sur AWS Fargate, les composants qui s'exécutent sur l'infrastructure Fargate doivent effectuer des appels en votre nom. AWS APIs Pour ce faire, le rôle d’exécution de pod Amazon EKS fournit les autorisations IAM. Pour créer un rôle d'exécution AWS Fargate Pod, consultez. [Rôle IAM d’exécution de pod Amazon EKS](pod-execution-role.md)

**Note**  
Si vous avez créé votre cluster avec `eksctl` à l’aide de l’option `--fargate`, votre cluster comporte déjà un rôle d’exécution de pod que vous pouvez trouver dans la console IAM en utilisant `eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL`. De même, si vous utilisez `eksctl` pour créer vos profils Fargate, `eksctl` créera votre rôle d’exécution de pod si celui-ci n’existe pas déjà.

## Étape 3 : créer un profil Fargate pour votre cluster
<a name="fargate-gs-create-profile"></a>

Avant de pouvoir planifier des pods s’exécutant sur Fargate dans votre cluster, vous devez définir un profil Fargate qui spécifie quels pods utilisent Fargate lorsqu’ils sont lancés. Pour de plus amples informations, veuillez consulter [Définissez quels pods utilisent AWS Fargate lors de leur lancement](fargate-profile.md).

**Note**  
Si vous avez créé votre cluster avec `eksctl` à l’aide de l’option `--fargate`, un profil Fargate est déjà créé pour votre cluster avec des sélecteurs pour tous les pods dans les espaces de noms `kube-system` et `default`. Utilisez la procédure suivante pour créer des profils Fargate pour tout autre espace de noms que vous souhaitez utiliser avec Fargate.

Vous pouvez créer un profil Fargate en utilisant l’un des outils suivants :
+  [`eksctl`](#eksctl_fargate_profile_create) 
+  [AWS Management Console](#console_fargate_profile_create) 

### `eksctl`
<a name="eksctl_fargate_profile_create"></a>

Cette procédure nécessite `eksctl` version `0.215.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](https://eksctl.io/installation) dans la documentation `eksctl`.

 **Pour créer un profil Fargate avec `eksctl` ** 

Créez votre profil Fargate avec la commande `eksctl` suivante, en remplaçant chaque `<example value>` par vos propres valeurs. Vous devez spécifier un espace de noms. Cependant, l’option `--labels` n’est pas obligatoire.

```
eksctl create fargateprofile \
    --cluster <my-cluster> \
    --name <my-fargate-profile> \
    --namespace <my-kubernetes-namespace> \
    --labels <key=value>
```

Vous pouvez utiliser certains caractères génériques pour les étiquettes `<my-kubernetes-namespace>` et `<key=value>`. Pour de plus amples informations, veuillez consulter [Caractères génériques du profil Fargate](fargate-profile.md#fargate-profile-wildcards).

### AWS Management Console
<a name="console_fargate_profile_create"></a>

 **Pour créer un profil Fargate avec AWS Management Console ** 

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le cluster pour lequel vous voulez créer un profil Fargate.

1. Choisissez l'onglet **Calcul**.

1. Sous **Fargate profiles** (Profils Fargate), choisissez **Add Fargate profile** (Ajouter un profil Fargate).

1. Sur la page **Configure Fargate profile (Configurer le profil Fargate)**, procédez comme suit :

   1. Dans **Nom**, saisissez un nom pour votre profil Fargate. Le nom doit être unique.

   1. Pour le **rôle d’exécution du pod**, choisissez le rôle d’exécution du pod à utiliser avec votre profil Fargate. Seuls les rôles IAM avec le principal de service `eks-fargate-pods.amazonaws.com` sont affichés. Si vous ne voyez aucun rôle répertorié ici, vous devez en créer un. Pour de plus amples informations, veuillez consulter [Rôle IAM d’exécution de pod Amazon EKS](pod-execution-role.md).

   1. Modifiez les **sous-réseaux** sélectionnés selon vos besoins.
**Note**  
Seuls les sous-réseaux privés sont pris en charge pour les pods qui s’exécutent sur Fargate.

   1. Dans **Identifications**, vous pouvez éventuellement étiqueter votre profil Fargate. Ces balises ne se propagent pas aux autres ressources qui sont associées au profil, comme les pods.

   1. Choisissez **Suivant**.

1. Sur la page **Configurer la sélection de pod**, procédez comme suit :

   1. Pour **l’espace de noms**, saisissez un espace de noms correspondant aux pods.
      + Vous pouvez utiliser des espaces de noms spécifiques pour les faire correspondre, tels que `kube-system` ou `default`.
      + Vous pouvez utiliser certains caractères génériques (par exemple, `prod-*`) pour faire correspondre plusieurs espaces de noms (par exemple, `prod-deployment` et `prod-test`). Pour de plus amples informations, veuillez consulter [Caractères génériques du profil Fargate](fargate-profile.md#fargate-profile-wildcards).

   1. (Facultatif) Ajoutez des labels Kubernetes au sélecteur. Ajoutez-les spécifiquement à celui auquel les pods de l’espace de noms spécifié doivent correspondre.
      + Vous pouvez ajouter la balise `infrastructure: fargate` au sélecteur afin que seuls les pods de l’espace de noms spécifié qui possèdent également la balise Kubernetes `infrastructure: fargate` correspondent au sélecteur.
      + Vous pouvez utiliser certains caractères génériques (par exemple, `key?: value?`) pour faire correspondre plusieurs espaces de noms (par exemple, `keya: valuea` et `keyb: valueb`). Pour de plus amples informations, veuillez consulter [Caractères génériques du profil Fargate](fargate-profile.md#fargate-profile-wildcards).

   1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, vérifiez les informations de votre profil Fargate et choisissez **Créer**.

## Étape 4 : mettre à jour CoreDNS
<a name="fargate-gs-coredns"></a>

Par défaut, CoreDNS est configuré pour s'exécuter sur l' EC2 infrastructure Amazon sur des clusters Amazon EKS. Si vous souhaitez *uniquement* exécuter vos pods sur Fargate dans votre cluster, effectuez les étapes suivantes.

**Note**  
Si vous avez créé votre cluster à l'aide de `eksctl` en utilisant l'option `--fargate`, vous pouvez passer directement à [Étapes suivantes](#fargate-gs-next-steps).

1. Créez un profil Fargate pour CoreDNS à l’aide de la commande suivante. Remplacez-le `<my-cluster>` par le nom de votre cluster, `<111122223333>` par votre identifiant de compte, `<AmazonEKSFargatePodExecutionRole>` par le nom de votre rôle d'exécution de Pod et `<000000000000000c>` par le nom IDs de vos sous-réseaux privés. `<000000000000000a>` `<000000000000000b>` Si vous ne disposez pas d’un rôle d’exécution Pod, vous devez d’abord en créer un (voir [Étape 2 : créer un rôle d’exécution Fargate Pod](#fargate-sg-pod-execution-role)).
**Important**  
L’ARN de rôle ne peut pas inclure un [chemin d’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) autre que `/`. Par exemple, si le nom de votre rôle est `development/apps/AmazonEKSFargatePodExecutionRole`, vous devez le remplacer par `AmazonEKSFargatePodExecutionRole` lorsque vous spécifiez l'ARN du rôle. Le format de l'ARN de rôle doit être ` arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>`.

   ```
   aws eks create-fargate-profile \
       --fargate-profile-name coredns \
       --cluster-name <my-cluster> \
       --pod-execution-role-arn arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \
       --selectors namespace=kube-system,labels={k8s-app=kube-dns} \
       --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c>
   ```

1. Déclenchez le déploiement du déploiement `coredns`.

   ```
   kubectl rollout restart -n kube-system deployment coredns
   ```

## Étapes suivantes
<a name="fargate-gs-next-steps"></a>
+ Vous pouvez commencer à migrer vos applications existantes pour les exécuter sur Fargate avec le flux suivant.

  1.  [Créer un profil Fargate](fargate-profile.md#create-fargate-profile) qui correspond à l’espace de noms Kubernetes et aux étiquettes Kubernetes de votre application.

  1. Supprimez et recréez tous les pods existants afin qu’ils soient planifiés sur Fargate. Modifiez le `<namespace>` et `<deployment-type>` pour mettre à jour vos pods spécifiques.

     ```
     kubectl rollout restart -n <namespace> deployment <deployment-type>
     ```
+ Déployez [Routage du trafic des applications et du trafic HTTP avec des équilibreurs de charge Application Load Balancer](alb-ingress.md) pour autoriser les objets d’entrée pour vos pods fonctionnant sur Fargate.
+ Vous pouvez utiliser le [Ajuster les ressources des pods avec Vertical Pod Autoscaler](vertical-pod-autoscaler.md) pour définir la taille initiale correcte du processeur et de la mémoire pour vos pods Fargate, puis utiliser le [Déployez des pods à l’échelle avec Horizontal Pod Autoscaler](horizontal-pod-autoscaler.md) pour faire évoluer ces pods. Si vous souhaitez que Vertical Pod Autoscaler redéploie automatiquement les pods vers Fargate avec des combinaisons de CPU et de mémoire plus élevées, définissez le mode de Vertical Pod Autoscaler sur `Auto` ou `Recreate`. Ceci permet de garantir une fonctionnalité correcte. Pour plus d'informations, consultez la documentation [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) sur GitHub.
+ Vous pouvez configurer le collecteur [AWS Distro pour OpenTelemetry](https://aws.amazon.com/otel) (ADOT) pour la surveillance des applications en suivant [ces instructions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-otel.html).

# Définissez quels pods utilisent AWS Fargate lors de leur lancement
<a name="fargate-profile"></a>

Avant de planifier des pods sur Fargate dans votre cluster, vous devez définir au moins un profil Fargate qui spécifie quels pods utilisent Fargate lors de leur lancement.

En tant qu’administrateur, vous pouvez utiliser un profil Fargate pour déclarer quels pods s’exécutent sur Fargate. Vous pouvez faire cela via les sélecteurs du profil. Vous pouvez ajouter jusqu'à cinq sélecteurs à chaque profil. Chaque sélecteur doit contenir un espace de noms. Le sélecteur peut également inclure des étiquettes. Le champ de label se compose de plusieurs paires clé-valeur facultatives. Les pods qui correspondent à un sélecteur sont programmés sur Fargate. Les pods sont associés à l'aide d'un espace de noms et des étiquettes spécifiées dans le sélecteur. Si un sélecteur d’espace de noms est défini sans étiquettes, Amazon EKS tente de planifier tous les pods qui s’exécutent dans cet espace de noms sur Fargate à l’aide du profil. Si un pod à planifier correspond à l’un des sélecteurs du profil Fargate, ce pod est planifié sur Fargate.

Si un pod correspond à plusieurs profils Fargate, vous pouvez spécifier le profil utilisé par le pod en ajoutant le label Kubernetes suivant à la spécification du pod : `eks.amazonaws.com/fargate-profile: my-fargate-profile`. Le Pod doit correspondre à un sélecteur dans ce profil pour être planifié sur Fargate. Les règles d’affinité/anti-affinité Kubernetes ne s’appliquent pas et ne sont pas nécessaires avec les pods Amazon EKS Fargate.

Lorsque vous créez un profil Fargate, vous devez spécifier un rôle d’exécution de pod. Ce rôle d'exécution concerne les composants Amazon EKS qui s'exécutent sur l'infrastructure Fargate utilisant le profil. Il est ajouté au [contrôle d’accès basé sur les rôles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) Kubernetes du cluster pour l’autorisation. Ainsi, le `kubelet` qui est exécuté sur l'infrastructure Fargate peut s'enregistrer dans votre cluster Amazon EKS et apparaître dans votre cluster comme un nœud. Le rôle d’exécution du pod fournit également des autorisations IAM à l’infrastructure Fargate pour permettre un accès en lecture aux référentiels d’images Amazon ECR. Pour de plus amples informations, consultez [Rôle IAM d’exécution de pod Amazon EKS](pod-execution-role.md).

Les profils Fargate ne peuvent pas être modifiés. Toutefois, vous pouvez créer un nouveau profil mis à jour pour remplacer un profil existant, puis supprimer l'original.

**Note**  
Tous les pods qui s’exécutent à l’aide d’un profil Fargate sont arrêtés et placés en attente lorsque le profil est supprimé.

Si tous les profils Fargate d'un cluster ont l'état `DELETING`, vous devez attendre que ce profil Fargate soit définitivement supprimé avant de pouvoir créer d'autres profils dans ce cluster.

**Note**  
Fargate ne prend actuellement pas en charge Kubernetes [TopologySpreadConstraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/).

Amazon EKS et Fargate répartissent les pods entre chacun des sous-réseaux définis dans le profil Fargate. Cependant, vous risquez de vous retrouver avec une répartition inégale. Si vous avez besoin d'une répartition uniforme, utilisez deux profils Fargate. Une répartition uniforme est importante dans les scénarios où vous souhaitez déployer deux réplicas sans aucune durée d’indisponibilité. Nous vous recommandons de n'avoir qu'un seul sous-réseau pour chaque profil.

## Composants de profil Fargate
<a name="fargate-profile-components"></a>

Les composants suivants sont contenus dans un profil Fargate.

 **Rôle d'exécution du pod**   
Lorsque votre cluster crée des pods sur AWS Fargate, le `kubelet` qui s’exécute sur l’infrastructure Fargate doit effectuer des appels vers les API AWS en votre nom. Par exemple, il doit effectuer des appels pour extraire des images de conteneur à partir d'Amazon ECR. Pour ce faire, le rôle d’exécution de pod Amazon EKS fournit les autorisations IAM.  
Lorsque vous créez un profil Fargate, vous devez spécifier un rôle d’exécution de pods à utiliser avec vos pods. Ce rôle est ajouté au [contrôle d’accès basé sur les rôles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) Kubernetes du cluster à des fins d’autorisation. Ainsi, le `kubelet` exécuté sur l’infrastructure Fargate peut s’enregistrer dans votre cluster Amazon EKS et apparaître dans votre cluster comme un nœud. Pour de plus amples informations, consultez [Rôle IAM d’exécution de pod Amazon EKS](pod-execution-role.md).

 **Sous-réseaux**   
Les ID des sous-réseaux poury lancer des pods utilisent ce profil. Pour l’instant, les pods fonctionnant sur Fargate n’ont pas d’adresse IP publique. Par conséquent, seuls les sous-réseaux privés sans route directe vers une passerelle Internet sont acceptés pour ce paramètre.

 **Sélecteurs**   
Les sélecteurs à faire correspondre pour que les pods utilisent ce profil Fargate. Vous pouvez spécifier jusqu'à cinq sélecteurs dans un profil Fargate. Les sélecteurs intègrent les composants suivants :  
+  **Espace de noms** : vous devez spécifier un espace de noms pour un sélecteur. Le sélecteur ne correspond qu’aux pods créés dans cet espace de noms. Vous pouvez toutefois créer plusieurs sélecteurs pour cibler plusieurs espaces de noms.
+  **Labels** : vous pouvez éventuellement spécifier des labels Kubernetes à faire correspondre pour le sélecteur. Le sélecteur ne correspond qu’aux pods qui possèdent tous les labels spécifiés dans le sélecteur.

## Caractères génériques du profil Fargate
<a name="fargate-profile-wildcards"></a>

En plus des caractères autorisés par Kubernetes, vous pouvez utiliser `*` et `?` dans les critères de sélection pour les espaces de noms, les clés d’étiquette et les valeurs d’étiquette :
+  `*` représente aucun, un ou plusieurs caractères. Par exemple, `prod*` peut représenter `prod` et `prod-metrics`.
+  `?` représente un caractère unique (par exemple, `value?` peut représenter `valuea`). Cependant, il ne peut pas représenter `value` et `value-a`, parce que `?` ne peut représenter qu'un seul et unique caractère.

Ces caractères génériques peuvent être utilisés dans n'importe quelle position et en combinaison (par exemple, `prod*`, `*dev` et `frontend*?`). Les autres caractères génériques et formes de correspondance de modèles, tels que les expressions régulières, ne sont pas pris en charge.

S’il existe plusieurs profils correspondants pour l’espace de noms et les étiquettes dans la spécification du pod, Fargate sélectionne le profil avec un tri alphanumérique par nom de profil. Par exemple, si les deux profils A (avec le nom `beta-workload`) et le profil B (avec le nom `prod-workload`) ont des sélecteurs correspondants pour les pods à lancer, Fargate choisit le profil A (`beta-workload`) pour les pods. Les pods ont des étiquettes avec le profil A sur les pods (par exemple, `eks.amazonaws.com/fargate-profile=beta-workload`).

Si vous souhaitez migrer des pods Fargate existants vers de nouveaux profils qui utilisent des caractères génériques, vous pouvez procéder de deux manières :
+ Créez un nouveau profil avec les sélecteurs correspondants, puis supprimez les anciens profils. Les pods étiquetés avec d'anciens profils sont reprogrammés vers de nouveaux profils correspondants.
+ Si vous souhaitez migrer des charges de travail mais que vous ne savez pas quelles étiquettes Fargate figurent sur chaque pod Fargate, vous pouvez utiliser la méthode suivante. Créez un nouveau profil avec un nom qui trie d'abord par ordre alphanumérique parmi les profils du même cluster. Recyclez ensuite les pods Fargate qui doivent être migrés vers de nouveaux profils.

## Créer un profil Fargate
<a name="create-fargate-profile"></a>

Cette section décrit comment créer un profil Fargate. Vous devez également avoir créé un rôle d’exécution de pod à utiliser pour votre profil Fargate. Pour de plus amples informations, consultez [Rôle IAM d’exécution de pod Amazon EKS](pod-execution-role.md). Les pods qui s’exécutent sur Fargate ne sont pris en charge que sur les sous-réseaux privés avec accès [NAT Gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) aux services AWS, mais pas sur une route directe vers une passerelle Internet. Le VPC de votre cluster doit donc disposer de sous-réseaux privés.

Vous pouvez créer un profil avec les éléments suivants :
+  [`eksctl`](#eksctl_create_a_fargate_profile) 
+  [AWS Management Console](#console_create_a_fargate_profile) 

## `eksctl`
<a name="eksctl_create_a_fargate_profile"></a>

 **Pour créer un profil Fargate avec `eksctl` ** 

Créez votre profil Fargate à l’aide de la commande `eksctl` suivante, en remplaçant chaque valeur d’exemple par vos propres valeurs. Vous devez spécifier un espace de noms. Cependant, l’option `--labels` n’est pas obligatoire.

```
eksctl create fargateprofile \
    --cluster my-cluster \
    --name my-fargate-profile \
    --namespace my-kubernetes-namespace \
    --labels key=value
```

Vous pouvez utiliser certains caractères génériques pour les étiquettes `my-kubernetes-namespace` et `key=value`. Pour de plus amples informations, consultez [Caractères génériques du profil Fargate](#fargate-profile-wildcards).

## AWS Management Console
<a name="console_create_a_fargate_profile"></a>

 **Pour créer un profil Fargate avec AWS Management Console ** 

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le cluster pour lequel vous voulez créer un profil Fargate.

1. Choisissez l'onglet **Calcul**.

1. Sous **Fargate profiles** (Profils Fargate), choisissez **Add Fargate profile** (Ajouter un profil Fargate).

1. Sur la page **Configure Fargate profile (Configurer le profil Fargate)**, procédez comme suit :

   1. Pour **Nom**, saisissez un nom unique pour votre profil Fargate, tel que `my-profile`.

   1. Pour le **rôle d’exécution du pod**, choisissez le rôle d’exécution du pod à utiliser avec votre profil Fargate. Seuls les rôles IAM avec le principal de service `eks-fargate-pods.amazonaws.com` sont affichés. Si vous ne voyez aucun rôle répertorié ici, vous devez en créer un. Pour de plus amples informations, consultez [Rôle IAM d’exécution de pod Amazon EKS](pod-execution-role.md).

   1. Modifiez les **sous-réseaux** sélectionnés selon vos besoins.
**Note**  
Seuls les sous-réseaux privés sont pris en charge pour les pods qui s’exécutent sur Fargate.

   1. Dans **Identifications**, vous pouvez éventuellement étiqueter votre profil Fargate. Ces balises ne se propagent pas aux autres ressources qui sont associées au profil, comme les pods.

   1. Choisissez **Suivant**.

1. Sur la page **Configurer la sélection de pod**, procédez comme suit :

   1. Pour **l’espace de noms**, saisissez un espace de noms correspondant aux pods.
      + Vous pouvez utiliser des espaces de noms spécifiques pour les faire correspondre, tels que `kube-system` ou `default`.
      + Vous pouvez utiliser certains caractères génériques (par exemple, `prod-*`) pour faire correspondre plusieurs espaces de noms (par exemple, `prod-deployment` et `prod-test`). Pour de plus amples informations, consultez [Caractères génériques du profil Fargate](#fargate-profile-wildcards).

   1. (Facultatif) Ajoutez des labels Kubernetes au sélecteur. Ajoutez-les spécifiquement à celui auquel les pods de l’espace de noms spécifié doivent correspondre.
      + Vous pouvez ajouter la balise `infrastructure: fargate` au sélecteur afin que seuls les pods de l’espace de noms spécifié qui possèdent également la balise Kubernetes `infrastructure: fargate` correspondent au sélecteur.
      + Vous pouvez utiliser certains caractères génériques (par exemple, `key?: value?`) pour faire correspondre plusieurs espaces de noms (par exemple, `keya: valuea` et `keyb: valueb`). Pour de plus amples informations, consultez [Caractères génériques du profil Fargate](#fargate-profile-wildcards).

   1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, vérifiez les informations de votre profil Fargate et choisissez **Créer**.

# Supprimer un profil Fargate
<a name="delete-fargate-profile"></a>

Cette rubrique décrit comment supprimer un profil Fargate. Lorsque vous supprimez un profil Fargate, tous les pods qui étaient programmés sur Fargate avec ce profil sont supprimés. Si ces pods correspondent à un autre profil Fargate, ils sont programmés sur Fargate avec ce profil. S’ils ne correspondent plus à aucun profil Fargate, ils ne sont pas planifiés sur Fargate et peuvent rester en attente.

Un seul profil Fargate d'un cluster peut avoir le statut `DELETING` à la fois. Vous devez attendre que la suppression d'un profil Fargate soit terminée pour pouvoir supprimer un autre profil de ce cluster.

Vous pouvez supprimer un profil à l’aide de l’un des outils suivants :
+  [`eksctl`](#eksctl_delete_a_fargate_profile) 
+  [AWS Management Console](#console_delete_a_fargate_profile) 
+  [AWS CLI](#awscli_delete_a_fargate_profile) 

## `eksctl`
<a name="eksctl_delete_a_fargate_profile"></a>

 **Supprimer un profil Fargate avec `eksctl`** 

Utilisez la commande suivante pour supprimer un profil d'un cluster. Remplacez la *valeur d’exemple* par vos propres valeurs.

```
eksctl delete fargateprofile  --name my-profile --cluster my-cluster
```

## AWS Management Console
<a name="console_delete_a_fargate_profile"></a>

 **Supprimer un profil Fargate avec AWS Management Console** 

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Dans le volet de navigation de gauche, choisissez **Clusters**. Dans la liste des clusters, sélectionnez celui dont vous souhaitez supprimer le profil Fargate.

1. Choisissez l'onglet **Calcul**.

1. Sélectionnez le profil Fargate à supprimer, puis l'option **Delete** (Supprimer).

1. Sur la page **Delete Fargate profile** (Supprimer le profil Fargate), saisissez le nom du profil, puis sélectionnez **Delete** (Supprimer).

## AWS CLI
<a name="awscli_delete_a_fargate_profile"></a>

 **Supprimer un profil Fargate avec l’interface CLI AWS** 

Utilisez la commande suivante pour supprimer un profil d'un cluster. Remplacez la *valeur d’exemple* par vos propres valeurs.

```
aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster
```

# Comprendre les détails de configuration des pods Fargate
<a name="fargate-pod-configuration"></a>

Cette section décrit certains des détails de configuration uniques des pods pour l’exécution de pods Kubernetes sur AWS Fargate.

## CPU et mémoire d'un pod
<a name="fargate-cpu-and-memory"></a>

Avec Kubernetes, vous pouvez définir des demandes, un nombre minimal de ressources vCPU et mémoire qui sont allouées à chaque conteneur dans un pod. Les pods sont planifiés par Kubernetes pour garantir qu’au moins les ressources demandées pour chaque pod sont disponibles sur la ressource de calcul. Pour plus d'informations, consultez [Gestion des ressources de calcul des conteneurs](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) dans la documentation Kubernetes.

**Note**  
Étant donné qu’Amazon EKS Fargate n’exécute qu’un seul pod par nœud, le scénario d’expulsion des pods en cas de ressources insuffisantes ne se produit pas. Tous les pods Amazon EKS Fargate s’exécutent avec une priorité garantie, de sorte que le CPU et la mémoire demandés doivent être égaux à la limite pour tous les conteneurs. Pour plus d'informations, consultez [Configurer la qualité de service pour les pods](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/) dans la documentation Kubernetes.

Lorsque les pods sont planifiés sur Fargate, les réservations de vCPU et de mémoire dans la spécification du pod déterminent la quantité de CPU et de mémoire à allouer au pod.
+ La demande maximale de tous les conteneurs Init est utilisée pour déterminer les besoins en vCPU et en mémoire de la demande Init.
+ Les demandes de tous les conteneurs à longue durée d'exécution sont additionnées pour déterminer les besoins en vCPU et en mémoire de la demande à longue durée d'exécution.
+ La plus grande des deux valeurs ci-dessus est choisie pour la demande de vCPU et la demande de mémoire à utiliser pour votre pod.
+ Fargate ajoute 256 Mo à la réservation de mémoire de chaque pod pour les composants Kubernetes requis (`kubelet`, `kube-proxy`, et `containerd`).

Fargate arrondit à la configuration informatique suivante qui correspond le mieux à la somme des demandes de vCPU et de mémoire afin de garantir que les pods disposent toujours des ressources nécessaires à leur fonctionnement.

Si vous ne spécifiez pas de combinaison vCPU et mémoire, la plus petite combinaison disponible est utilisée (0,25 vCPU et 0,5 Go de mémoire).

Le tableau suivant répertorie les combinaisons de vCPU et de mémoire qui sont disponibles pour les pods fonctionnant sur Fargate.


| Valeur vCPU | Valeur de mémoire | 
| --- | --- | 
|  0,25 vCPU  |  0,5 Go, 1 Go, 2 Go  | 
|  0,5 vCPU  |  1 Go, 2 Go, 3 Go, 4 Go  | 
|  1 vCPU  |  2 Go, 3 Go, 4 Go, 5 Go, 6 Go, 7 Go, 8 Go  | 
|  2 vCPU  |  Entre 4 Go et 16 Go par incrément de 1 Go  | 
|  4 vCPU  |  Entre 8 Go et 30 Go par incrément de 1 Go  | 
|  8 vCPU  |  Entre 16 Go et 60 Go par incréments de 4 Go  | 
|  16 vCPU  |  Entre 32 Go et 120 Go par incréments de 8 Go  | 

La mémoire supplémentaire réservée aux composants Kubernetes peut entraîner l'approvisionnement d'une tâche Fargate avec plus de vCPU que demandé. Par exemple, une demande pour 1 vCPU et 8 Go de mémoire verra 256 Mo ajoutés à sa demande de mémoire, et approvisionnera une tâche Fargate avec 2 vCPU et 9 Go de mémoire, puisqu'aucune tâche avec 1 vCPU et 9 Go de mémoire n'est disponible.

Il n’existe pas de corrélation entre la taille du pod fonctionnant sur Fargate et la taille du nœud signalée par Kubernetes avec `kubectl get nodes`. La taille du nœud signalée est souvent supérieure à la capacité du pod. Vous pouvez vérifier la capacité du pod avec la commande suivante. Remplacez *default* par l’espace de noms de votre pod et *pod-name* par le nom de votre pod.

```
kubectl describe pod --namespace default pod-name
```

L'exemple qui suit illustre un résultat.

```
[...]
annotations:
    CapacityProvisioned: 0.25vCPU 0.5GB
[...]
```

L’annotation `CapacityProvisioned` représente la capacité du pod appliquée et détermine le coût de votre pod fonctionnant sur Fargate. Pour plus d'informations sur la tarification de ces configurations de calcul, reportez-vous à [Tarification AWS](https://aws.amazon.com/fargate/pricing/).

## Stockage Fargate
<a name="fargate-storage"></a>

Un Pod fonctionnant sur Fargate monte automatiquement un système de fichiers Amazon EFS, sans nécessiter d’étapes manuelles d’installation de pilotes. Vous ne pouvez pas utiliser l’approvisionnement dynamique des volumes persistants avec les nœuds Fargate, mais vous pouvez utiliser l’approvisionnement statique. Pour plus d'informations, voir [Pilote CSI Amazon EFS](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/README.md) sur GitHub.

Une fois provisionné, chaque pod exécuté sur Fargate reçoit par défaut un espace de stockage éphémère de 20 GiB. Ce type de stockage est supprimé après l’arrêt du pod. Lorsque de nouveaux pods sont lancés sur Fargate, le chiffrement du volume de stockage éphémère est activé par défaut. Le stockage éphémère des pods est chiffré avec un algorithme de chiffrement AES-256 utilisant des clés gérées par AWS Fargate.

**Note**  
La capacité de stockage par défaut pour les pods Amazon EKS exécutés sur Fargate est inférieure à 20 GiB. En effet, une partie de l’espace est utilisée par le module `kubelet` et d’autres modules Kubernetes chargés dans le pod.

Vous pouvez augmenter la capacité totale de stockage éphémère jusqu'à un maximum de 175 GiB. Pour configurer la taille avec Kubernetes, spécifiez les demandes de ressources `ephemeral-storage` pour chaque conteneur dans un pod. Lorsque Kubernetes planifie les pods, il s’assure que la somme des demandes de ressources pour chaque pod est inférieure à la capacité de la tâche Fargate. Pour plus d’informations, consultez la section [Gestion des ressources pour les pods et les conteneurs](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) dans la documentation Kubernetes.

Amazon EKS Fargate alloue une capacité de stockage éphémère supérieure à celle demandée aux fins de l'utilisation du système. Par exemple, une demande de 100 GiB allouera à une tâche Fargate une capacité de stockage éphémère de 115 GiB.

# Définir des actions pour les événements de correction du système d’exploitation AWS Fargate
<a name="fargate-pod-patching"></a>

Amazon EKS doit régulièrement appliquer des correctifs au système d’exploitation pour les nœuds AWS Fargate afin d’assurer leur sécurité. Dans le cadre du processus d'application des correctifs, nous recyclons les nœuds pour installer les correctifs du système d'exploitation. Les tentatives de mises à jour sont réalisées de manière à avoir des répercussions minimales sur vos services. Toutefois, si les pods ne sont pas expulsés avec succès, ils doivent parfois être supprimés. Voici les actions que vous pouvez effectuer pour minimiser les perturbations potentielles :
+ Définissez des budgets de perturbation de pods (PDB) appropriés pour contrôler le nombre de pods simultanément hors service.
+ Créez des règles Amazon EventBridge pour réagir aux expulsions ayant échoué avant la suppression des pods.
+ Redémarrez manuellement vos pods concernés avant la date d’expulsion indiquée dans la notification que vous avez reçue.
+ Créez une configuration de notification dans Notifications d'utilisateur AWS.

Amazon EKS travaille en étroite collaboration avec la communauté Kubernetes pour corriger les bugs et appliquer les correctifs de sécurité le plus rapidement possible. Tous les pods Fargate démarrent sur la version la plus récente du correctif Kubernetes, disponible auprès d’Amazon EKS pour la version Kubernetes de votre cluster. Si un pod présente une ancienne version de correctif, Amazon EKS peut le recycler pour le mettre à jour à la dernière version. Cela garantit que vos pods comprennent les dernières mises à jour de sécurité. De cette façon, en cas de problème critique inhérent aux [vulnérabilités et expositions courantes](https://cve.mitre.org/) (CVE), vous êtes tenu à jour pour réduire les risques de sécurité.

Lorsque le système d’exploitation AWS Fargate est mis à jour, Amazon EKS vous envoie une notification indiquant les ressources concernées et la date des prochaines expulsions de pods. Si la date d’expulsion indiquée ne vous convient pas, vous avez la possibilité de redémarrer manuellement vos pods concernés avant la date d’expulsion indiquée dans la notification. Tous les pods créés avant le moment où vous recevez la notification sont susceptibles d’être expulsés. Consultez la [documentation Kubernetes](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_rollout/kubectl_rollout_restart) pour obtenir des instructions supplémentaires sur la manière de redémarrer manuellement vos pods.

Pour limiter le nombre de pods hors service simultanément lors du recyclage des pods, vous pouvez définir des budgets de perturbation des pods (PDB). Vous pouvez utiliser les PDB pour définir une disponibilité minimale en fonction des exigences de chacune de vos applications, tout en autorisant les mises à jour. La disponibilité minimale de votre PDB doit être inférieure à 100 %. Pour plus d’informations, consultez la section [Spécification d’un budget de perturbation pour votre application](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) dans la documentation Kubernetes.

Amazon EKS utilise l’[API d’expulsion](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/#eviction-api) pour vider le pod en toute sécurité tout en respectant les PDB que vous avez définis pour l’application. Les pods sont expulsés par zone de disponibilité pour minimiser les répercussions. Si l’expulsion réussit, le nouveau pod reçoit le dernier correctif et aucune autre action n’est requise.

Lorsque l’expulsion d’un pod échoue, Amazon EKS envoie un événement à votre compte avec des informations sur les pods dont l’expulsion a échoué. Vous pouvez agir en fonction du message avant l'heure de fin prévue. Le temps spécifique varie en fonction de l'urgence du correctif. Le moment venu, Amazon EKS tente à nouveau d’expulser les pods. Toutefois, si l'expulsion échoue lors de cette tentative, un nouvel événement n'est pas envoyé. Si l’expulsion échoue à nouveau, vos pods existants sont supprimés périodiquement afin que les nouveaux pods puissent comporter le dernier correctif.

Vous trouverez ci-dessous un exemple d’événement reçu lorsque l’expulsion d’un pod échoue. Il contient des informations sur le cluster, le nom du pod, l’espace de noms du pod, le profil Fargate et l’heure de fin planifiée.

```
{
    "version": "0",
    "id": "12345678-90ab-cdef-0123-4567890abcde",
    "detail-type": "EKS Fargate Pod Scheduled Termination",
    "source": "aws.eks",
    "account": "111122223333",
    "time": "2021-06-27T12:52:44Z",
    "region": "region-code",
    "resources": [
        "default/my-database-deployment"
    ],
    "detail": {
        "clusterName": "my-cluster",
        "fargateProfileName": "my-fargate-profile",
        "podName": "my-pod-name",
        "podNamespace": "default",
        "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget",
        "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]"
    }
}
```

En outre, si plusieurs PDB sont associés à un pod, un événement d’échec d’expulsion peut survenir. Cet événement renvoie le message d'erreur suivant.

```
"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",
```

Vous pouvez créer une action souhaitée en fonction de cet événement. Par exemple, vous pouvez ajuster votre budget de perturbation de pod (PDB) pour contrôler l’expulsion des pods. Plus précisément, imaginions que vous utilisiez un PDB qui spécifie le pourcentage cible de pods disponibles. Avant que la résiliation de vos pods soit forcée lors d’une mise à niveau, vous pouvez ajuster le PDB à un pourcentage différent de pods. Pour recevoir cet événement, vous devez créer une règle Amazon EventBridge dans le compte AWS et la région AWS auxquels le cluster appartient. La règle doit utiliser le **modèle personnalisé** suivant. Pour plus d'informations, veuillez consulter [Création d'une règle Amazon EventBridge qui réagit aux événements](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) dans le *Guide de l'utilisateur Amazon EventBridge*.

```
{
  "source": ["aws.eks"],
  "detail-type": ["EKS Fargate Pod Scheduled Termination"]
}
```

Une cible appropriée peut être définie pour que l'événement le capture. Pour obtenir une liste complète des cibles disponibles, consultez [Cibles Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) dans le *Guide de l'utilisateur Amazon EventBridge*. Vous pouvez également créer une configuration de notification dans Notifications d'utilisateurs AWS. Lorsque vous utilisez le AWS Management Console pour créer la notification, sous **Règles d’événement**, choisissez **Elastic Kubernetes Service (EKS)** comme **nom de service AWS** et **EKS Fargate Pod Scheduled Termination** comme **Type d’événement**. Pour plus d'informations, consultez la section [Prise en main des notifications d'utilisateur AWS](https://docs.aws.amazon.com/notifications/latest/userguide/getting-started.html) dans le Guide de l'utilisateur des notifications d'utilisateur AWS.

Consultez la [FAQ : Avis d’expulsion de pod Fargate](https://repost.aws/knowledge-center/fargate-pod-eviction-notice) dans *re:Post AWS* pour connaître les questions fréquemment posées concernant les expulsions de pod EKS.

# Collectez l' AWS application Fargate et les statistiques d'utilisation
<a name="monitoring-fargate-usage"></a>

Vous pouvez collecter des métriques du système et des métriques CloudWatch d'utilisation pour AWS Fargate.

## Métriques d'application
<a name="fargate-application-metrics"></a>

Pour les applications exécutées sur Amazon EKS et AWS Fargate, vous pouvez utiliser Distro OpenTelemetry for ( AWS ADOT). ADOT vous permet de collecter des métriques du système et de les envoyer aux tableaux de bord de CloudWatch Container Insights. Pour démarrer avec ADOT pour les applications exécutées sur Fargate, [consultez la section CloudWatch Utilisation de Container Insights AWS with Distro OpenTelemetry](https://aws-otel.github.io/docs/getting-started/container-insights) dans la documentation ADOT.

## Métriques d’utilisation
<a name="fargate-usage-metrics"></a>

Vous pouvez utiliser les statistiques CloudWatch d'utilisation pour obtenir une visibilité sur l'utilisation des ressources par votre compte. Utilisez ces indicateurs pour visualiser l'utilisation actuelle de vos services sur CloudWatch des graphiques et des tableaux de bord.

 AWS Les métriques d'utilisation de Fargate correspondent aux AWS quotas de service. Vous pouvez configurer des alarmes qui vous alertent lorsque votre utilisation approche un quota de service. Pour de plus amples informations sur les Service Quotas pour Fargate, consultez [Afficher et gérer les quotas de service Amazon EKS et Fargate](service-quotas.md).

 AWS Fargate publie les métriques suivantes dans l'espace de noms. ` AWS/Usage`


| Métrique | Description | 
| --- | --- | 
|   `ResourceCount`   |  Nombre total des ressources spécifiées exécutées sur votre compte. La ressource est définie par les dimensions associées à la métrique.  | 

Les dimensions suivantes sont utilisées pour affiner les métriques d'utilisation publiées par AWS Fargate.


| Dimension | Description | 
| --- | --- | 
|   `Service`   |  Nom du AWS service contenant la ressource. Pour les métriques AWS d'utilisation de Fargate, la valeur de cette dimension est. `Fargate`  | 
|   `Type`   |  Le type d’entité qui fait l’objet du rapport. Actuellement, la seule valeur valide pour les métriques d' AWS utilisation de Fargate est. `Resource`  | 
|   `Resource`   |  Le type de ressource en cours d’exécution. Actuellement, AWS Fargate renvoie des informations sur votre utilisation de Fargate On-Demand. La valeur de ressource pour l'utilisation de Fargate On-Demand est `OnDemand`. [NOTE] ==== L’utilisation de Fargate On-Demand combine les pods Amazon EKS utilisant Fargate, les tâches Amazon ECS utilisant le type de lancement Fargate et les tâches Amazon ECS utilisant le fournisseur de capacité `FARGATE`. ====  | 
|   `Class`   |  Classe de ressource suivie. Actuellement, AWS Fargate n'utilise pas la dimension de classe.  | 

### Création d'une CloudWatch alarme pour surveiller les métriques d'utilisation des ressources de Fargate
<a name="service-quota-alarm"></a>

 AWS Fargate CloudWatch fournit des métriques d'utilisation qui correspondent aux quotas de service pour AWS l'utilisation des ressources Fargate On-Demand. Dans la console Service Quotas, vous pouvez visualiser votre utilisation sur un graphique. Vous pouvez également configurer des alarmes qui vous alertent lorsque votre utilisation approche d'un quota de service. Pour de plus amples informations, veuillez consulter [Collectez l' AWS application Fargate et les statistiques d'utilisation](#monitoring-fargate-usage).

Suivez les étapes ci-dessous pour créer une CloudWatch alarme basée sur les métriques d'utilisation des ressources de Fargate.

1. Ouvrez la console Service Quotas à l'adresse https://console.aws.amazon.com/servicequotas/.

1. Dans le volet de navigation de gauche, sélectionnez ** AWS services**.

1. Dans la liste des ** AWS services**, recherchez et sélectionnez ** AWS Fargate.**

1. Dans la liste **Quotas de service**, sélectionnez le quota d'utilisation Fargate pour lequel vous souhaitez créer une alarme.

1. Dans la section CloudWatch Alarmes Amazon, choisissez **Create**.

1. Pour **Alarm threshold** (Seuil d'alarme), choisissez le pourcentage de la valeur de quota appliquée que vous souhaitez définir comme valeur d'alarme.

1. Pour **Nom de l'alarme**, saisissez un nom pour l'alarme, puis choisissez **Créer**.

# Démarrez la journalisation AWS Fargate pour votre cluster
<a name="fargate-logging"></a>

Amazon EKS on Fargate propose un routeur de journal intégré basé sur Fluent Bit. Cela signifie que vous n’exécutez pas explicitement un conteneur Fluent Bit comme sidecar, mais qu’Amazon l’exécute pour vous. Tout ce que vous avez à faire est de configurer le routeur de journaux. La configuration se fait par le biais d'un `ConfigMap` qui doit répondre aux critères suivants :
+ Nommé `aws-logging` 
+ Créé dans un espace de noms dédié appelé `aws-observability` 
+ Ne doit pas dépasser 5 300 caractères.

Une fois que vous avez créé le `ConfigMap`, Amazon EKS on Fargate le détecte automatiquement et configure le routeur de journaux avec lui. Fargate utilise une version de AWS pour Fluent Bit, une distribution compatible en amont de Fluent Bit gérée par AWS. Pour plus d'informations, consultez [AWS for Fluent Bit](https://github.com/aws/aws-for-fluent-bit) sur GitHub.

Le routeur de journaux vous permet d'utiliser la diversité des services sur AWSpour l'analyse des journaux et le stockage. Vous pouvez diffuser les journaux depuis Fargate directement vers Amazon CloudWatch, Amazon OpenSearch Service. Vous pouvez également diffuser les journaux vers des destinations telles qu’[Amazon S3](https://aws.amazon.com/s3/), [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/) et des outils partenaires via [Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/).
+ Un profil Fargate existant qui spécifie un espace de noms Kubernetes existant dans lequel vous déployez des pods Fargate. Pour de plus amples informations, consultez [Étape 3 : créer un profil Fargate pour votre cluster](fargate-getting-started.md#fargate-gs-create-profile).
+ Un rôle d’exécution de pod Fargate existant. Pour de plus amples informations, consultez [Étape 2 : créer un rôle d’exécution Fargate Pod](fargate-getting-started.md#fargate-sg-pod-execution-role).

## Configuration du routeur de journaux
<a name="fargate-logging-log-router-configuration"></a>

**Important**  
Pour que les journaux soient publiés avec succès, il doit y avoir un accès réseau depuis le VPC dans lequel se trouve votre cluster vers la destination des journaux. Cela concerne principalement les utilisateurs qui personnalisent les règles de sortie pour leur VPC. Pour un exemple d’utilisation de CloudWatch, consultez la section [Utilisation des journaux CloudWatch avec les points de terminaison d’un VPC d’interface](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) dans le *Guide de l’utilisateur Amazon CloudWatch Logs*.

Dans les étapes suivantes, remplacez chaque *valeur d’exemple* par vos propres valeurs.

1. Créez un espace de noms Kubernetes dédié nommé `aws-observability`.

   1. Enregistrez le contenu suivant dans un fichier nommé `aws-observability-namespace.yaml` sur votre ordinateur. La valeur pour `name` doit être `aws-observability` et le label `aws-observability: enabled` est obligatoire.

      ```
      kind: Namespace
      apiVersion: v1
      metadata:
        name: aws-observability
        labels:
          aws-observability: enabled
      ```

   1. Créez l'espace de noms.

      ```
      kubectl apply -f aws-observability-namespace.yaml
      ```

1. Créez un `ConfigMap` avec une valeur de données `Fluent Conf` pour envoyer les journaux des conteneurs vers une destination. Fluent Conf est Fluent Bit, qui est un langage de configuration de processeur de journaux rapide et léger, utilisé pour acheminer les journaux des conteneurs vers une destination de journalisation de votre choix. Pour plus d'informations, consultez [Fichier de configuration](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/configuration-file) dans la documentation Fluent Bit.
**Important**  
Dans une `Fluent Conf` type, les principales sections incluses sont `Service`, `Input`, `Filter` et `Output`. Le routeur de journaux Fargate n'accepte cependant que :  
Les sections `Filter` et `Output`.
Une section `Parser`.
Si vous fournissez d'autres sections, elles seront rejetées.

   Le routeur de journal Fargate gère les sections `Service` et `Input`. Il comporte la section `Input` suivante, qui ne peut pas être modifiée et n’est pas nécessaire dans votre `ConfigMap`. Cependant, vous pouvez en tirer des informations, telles que la limite de la mémoire tampon et la balise appliquée pour les journaux.

   ```
   [INPUT]
       Name tail
       Buffer_Max_Size 66KB
       DB /var/log/flb_kube.db
       Mem_Buf_Limit 45MB
       Path /var/log/containers/*.log
       Read_From_Head On
       Refresh_Interval 10
       Rotate_Wait 30
       Skip_Long_Lines On
       Tag kube.*
   ```

   Lors de la création du `ConfigMap`, prenez en compte les règles suivantes que Fargate utilise pour valider les champs :
   +  `[FILTER]`, `[OUTPUT]` et `[PARSER]` sont censés être spécifiés sous chaque clé correspondante. Par exemple, `[FILTER]` doit être inférieur à `filters.conf`. Vous pouvez avoir un ou plusieurs `[FILTER]` sous `filters.conf`. `[OUTPUT]` et `[PARSER]` doivent également être sous leurs clés correspondantes. En spécifiant plusieurs sections `[OUTPUT]`, vous pouvez acheminer vos journaux vers différentes destinations en même temps.
   + Fargate valide les clés requises de chaque section. `Name` et `match` sont nécessaires pour chaque `[FILTER]` et `[OUTPUT]`. `Name` et `format` sont nécessaires pour chaque `[PARSER]`. Ces noms sont sensibles à la casse.
   + Les variables d’environnement telles que `${ENV_VAR}` ne sont pas autorisées dans le `ConfigMap`.
   + L'indentation doit être la même pour la directive ou la paire clé-valeur dans chaque `filters.conf`, `output.conf` et `parsers.conf`. Les paires clé-valeur doivent être indentées plus que les directives.
   + Fargate valide par rapport aux filtres pris en charge suivants : `grep`, `parser`, `record_modifier`, `rewrite_tag`, `throttle`, `nest`, `modify` et `kubernetes`.
   + Fargate valide par rapport à la sortie prise en charge suivante : `es`, `firehose`, `kinesis_firehose`, `cloudwatch`, `cloudwatch_logs` et `kinesis`.
   + Au moins un plug-in `Output` doit être fourni dans le `ConfigMap` pour activer la journalisation. `Filter` et `Parser` ne sont pas nécessaires pour activer la journalisation.

     Vous pouvez également exécuter Fluent Bit sur Amazon EC2 en utilisant la configuration souhaitée pour résoudre les problèmes qui surviennent lors de la validation. Créez votre `ConfigMap` en utilisant l'un des exemples suivants.
**Important**  
La journalisation Amazon EKS Fargate ne prend pas en charge la configuration dynamique d’un `ConfigMap`. Les modifications apportées à un `ConfigMap` sont appliquées uniquement aux nouveaux pods. Les modifications ne sont pas appliquées aux pods existants.

     Créez un `ConfigMap` en utilisant l'exemple pour votre destination de journal désirée.
**Note**  
Vous pouvez également utiliser Amazon Kinesis Data Streams comme destination du journal. Si vous utilisez Kinesis Data Streams, assurez-vous que l'autorisation `kinesis:PutRecords` a été accordée au rôle d'exécution du pod. Pour plus d’informations, consultez [Permissions](https://docs.fluentbit.io/manual/pipeline/outputs/kinesis#permissions) d’Amazon Kinesis Data Streams dans le *Manuel officiel Fluent Bit*.  
**Example**  

------
#### [ CloudWatch ]

   Vous disposez de deux options de sortie lorsque vous utilisez CloudWatch :
   +  [Un plugin de sortie écrit en C](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/cloudwatch) 
   +  [Un plugin de sortie écrit en Golang](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) 

   L'exemple suivant explique comment utiliser le plugin `cloudwatch_logs` pour envoyer des journaux à CloudWatch.

   1. Enregistrez le contenu suivant dans un fichier nommé `aws-logging-cloudwatch-configmap.yaml`. Remplacez *region-code* par la région AWS dans laquelle votre cluster se situe. Les paramètres sous `[OUTPUT]` sont requises.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        flb_log_cw: "false"  # Set to true to ship Fluent Bit process logs to CloudWatch.
        filters.conf: |
          [FILTER]
              Name parser
              Match *
              Key_name log
              Parser crio
          [FILTER]
              Name kubernetes
              Match kube.*
              Merge_Log On
              Keep_Log Off
              Buffer_Size 0
              Kube_Meta_Cache_TTL 300s
        output.conf: |
          [OUTPUT]
              Name cloudwatch_logs
              Match   kube.*
              region region-code
              log_group_name my-logs
              log_stream_prefix from-fluent-bit-
              log_retention_days 60
              auto_create_group true
        parsers.conf: |
          [PARSER]
              Name crio
              Format Regex
              Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
              Time_Key    time
              Time_Format %Y-%m-%dT%H:%M:%S.%L%z
      ```

   1. Appliquez le manifeste à votre cluster.

      ```
      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
      ```

------
#### [ Amazon OpenSearch Service ]

   Si vous souhaitez envoyer des journaux à Amazon OpenSearch Service, vous pouvez utiliser [es](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/elasticsearch) output, un plug-in écrit en C. L’exemple suivant vous montre comment utiliser le plug-in pour envoyer des journaux à OpenSearch.

   1. Enregistrez le contenu suivant dans un fichier nommé `aws-logging-opensearch-configmap.yaml`. Remplacez la *valeur d’exemple* par vos propres valeurs.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        output.conf: |
          [OUTPUT]
            Name  es
            Match *
            Host  search-example-gjxdcilagiprbglqn42jsty66y.region-code.es.amazonaws.com
            Port  443
            Index example
            Type  example_type
            AWS_Auth On
            AWS_Region region-code
            tls   On
      ```

   1. Appliquez le manifeste à votre cluster.

      ```
      kubectl apply -f aws-logging-opensearch-configmap.yaml
      ```

------
#### [ Firehose ]

   Vous disposez de deux options de sortie lorsque vous envoyez des journaux à Firehose :
   +  [kinesis\$1firehose](https://docs.fluentbit.io/manual/pipeline/outputs/firehose) : un plug-in de sortie écrit en C.
   +  [firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit) : un plug-in de sortie écrit en Golang.

     L’exemple suivant vous montre comment utiliser le plug-in `kinesis_firehose` pour envoyer des journaux à Firehose.

     1. Enregistrez le contenu suivant dans un fichier nommé `aws-logging-firehose-configmap.yaml`. Remplacez *region-code* par la région AWS dans laquelle votre cluster se situe.

        ```
        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: aws-logging
          namespace: aws-observability
        data:
          output.conf: |
            [OUTPUT]
             Name  kinesis_firehose
             Match *
             region region-code
             delivery_stream my-stream-firehose
        ```

     1. Appliquez le manifeste à votre cluster.

        ```
        kubectl apply -f aws-logging-firehose-configmap.yaml
        ```

------

1. Configurez les autorisations pour le rôle d’exécution Fargate Pod afin d’envoyer les journaux vers votre destination.

   1. Téléchargez la politique IAM pour votre destination sur votre ordinateur.  
**Example**  

------
#### [ CloudWatch ]

      Téléchargez la politique IAM CloudWatch sur votre ordinateur. Vous pouvez également [afficher la politique](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json) sur GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
      ```

------
#### [ Amazon OpenSearch Service ]

      Téléchargez la politique IAM OpenSearch sur votre ordinateur. Vous pouvez également [afficher la politique](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json) sur GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json
      ```

      Assurez-vous que le contrôle d'accès OpenSearch Dashboards est correctement configuré. Le `all_access role` dans OpenSearch Dashboards doit avoir le rôle d’exécution du pod Fargate et le rôle IAM mappés. Le même mappage doit être fait pour le rôle `security_manager`. Vous pouvez ajouter les mappages précédents en sélectionnant `Menu`, `Security` et `Roles`, puis sélectionner les rôles correspondants. Pour plus d'informations, consultez [Comment dépanner CloudWatch Logs afin qu'il diffuse vers mon domaine Amazon ES ?](https://aws.amazon.com/tr/premiumsupport/knowledge-center/es-troubleshoot-cloudwatch-logs/).

------
#### [ Firehose ]

      Téléchargez la politique IAM Firehose sur votre ordinateur. Vous pouvez également [afficher la politique](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json) sur GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json
      ```

------

   1. Créez une politique IAM à partir du fichier de politique que vous avez téléchargé.

      ```
      aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
      ```

   1. Attachez la politique IAM au rôle d'exécution de pod spécifié pour votre profil Fargate avec la commande suivante. Remplacez *111122223333* par votre ID de compte. Remplacez *AmazonEKSFargatePodExecutionRole* par votre rôle d’exécution de pod (pour plus d’informations, consultez [Étape 2 : créer un rôle d’exécution Fargate Pod](fargate-getting-started.md#fargate-sg-pod-execution-role)).

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::111122223333:policy/eks-fargate-logging-policy \
        --role-name AmazonEKSFargatePodExecutionRole
      ```

### Prise en charge des filtres Kubernetes
<a name="fargate-logging-kubernetes-filter"></a>

Le filtre Kubernetes de Fluent Bit vous permet d'ajouter des métadonnées Kubernetes à vos fichiers journaux. Pour plus d'informations sur le filtre, consultez [Kubernetes](https://docs.fluentbit.io/manual/pipeline/filters/kubernetes) dans la documentation Fluent Bit. Vous pouvez appliquer un filtre en utilisant le point de terminaison du serveur d'API.

```
filters.conf: |
    [FILTER]
        Name             kubernetes
        Match            kube.*
        Merge_Log           On
        Buffer_Size         0
        Kube_Meta_Cache_TTL 300s
```

**Important**  
 `Kube_URL`, `Kube_CA_File`, `Kube_Token_Command` et `Kube_Token_File` sont des paramètres de configuration appartenant au service et ne doivent pas être spécifiés. Amazon EKS Fargate remplit ces valeurs.
 `Kube_Meta_Cache_TTL` est le moment où Fluent Bit attend qu'il communique avec le serveur d'API pour obtenir les dernières métadonnées. Si la valeur `Kube_Meta_Cache_TTL` n’est pas spécifiée, Amazon EKS Fargate ajoute une valeur par défaut de 30 minutes pour diminuer la charge sur le serveur d’API.

### Pour envoyer les journaux de processus de Fluent Bit à votre compte
<a name="ship-fluent-bit-process-logs"></a>

Vous pouvez aussi envoyer les journaux de processus de Fluent Bit à Amazon CloudWatch en utilisant le `ConfigMap` suivant. L'envoi des journaux de processus Fluent Bit à CloudWatch implique des coûts supplémentaires d'ingestion de journaux et de stockage. Remplacez *region-code* par la région AWS dans laquelle votre cluster se situe.

```
kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
  labels:
data:
  # Configuration files: server, input, filters and output
  # ======================================================
  flb_log_cw: "true"  # Ships Fluent Bit process logs to CloudWatch.

  output.conf: |
    [OUTPUT]
        Name cloudwatch
        Match kube.*
        region region-code
        log_group_name fluent-bit-cloudwatch
        log_stream_prefix from-fluent-bit-
        auto_create_group true
```

Les journaux se trouvent dans CloudWatch, dans la même région AWS que le cluster. Le nom du groupe de journaux est ` my-cluster-fluent-bit-logs` et le nom du flux de journaux Fluent Bit est `fluent-bit-podname-pod-namespace `.

**Note**  
Les journaux de processus sont envoyés seulement lorsque le processus Fluent Bit démarre avec succès. S'il y a un échec lors du démarrage de Fluent Bit, les journaux de processus sont manqués. Vous pouvez uniquement envoyer les journaux de processus à CloudWatch.
Pour déboguer l'envoi des journaux de processus à votre compte, vous pouvez appliquer le `ConfigMap` précédent pour obtenir les journaux de processus. L'échec du démarrage de Fluent Bit est généralement dû au fait que votre `ConfigMap` n'est pas analysé ou accepté par Fluent Bit lors du démarrage.

### Pour arrêter l’envoi des journaux de processus Fluent Bit
<a name="stop-fluent-bit-process-logs"></a>

L'envoi des journaux de processus Fluent Bit à CloudWatch implique des coûts supplémentaires d'ingestion de journaux et de stockage. Pour exclure les journaux de processus d'une configuration de `ConfigMap` existante, procédez comme suit.

1. Localisez le groupe de journaux CloudWatch créé automatiquement pour les journaux de processus Fluent Bit de votre cluster Amazon EKS après avoir activé la journalisation Fargate. Il utilise le format ` my-cluster-fluent-bit-logs`.

1. Supprimez les flux de journaux CloudWatch existants créés pour les journaux de processus de chaque pod dans le groupe de journaux CloudWatch.

1. Modifiez la `ConfigMap` et définissez `flb_log_cw: "false"`.

1. Redémarrez tous les pods existants du cluster.

## Tester l'application
<a name="fargate-logging-test-application"></a>

1. Déployez un exemple de pod.

   1. Enregistrez le contenu suivant dans un fichier nommé `sample-app.yaml` sur votre ordinateur.

      ```
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sample-app
        namespace: same-namespace-as-your-fargate-profile
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:latest
                ports:
                  - name: http
                    containerPort: 80
      ```

   1. Appliquez le fichier manifeste à votre cluster.

      ```
      kubectl apply -f sample-app.yaml
      ```

1. Affichez les journaux NGINX en utilisant les destinations que vous avez configurées dans le fichier `ConfigMap`.

## Considérations sur les tailles
<a name="fargate-logging-size-considerations"></a>

Nous vous suggérons de prévoir jusqu'à 50 Mo de mémoire pour le routeur de journaux. Si votre application doit générer des journaux à un débit très élevé, vous devez prévoir jusqu'à 100 Mo.

## Dépannage
<a name="fargate-logging-troubleshooting"></a>

Pour vérifier si la fonctionnalité de journalisation est activée ou désactivée pour une raison quelconque, telle qu’une valeur non valide `ConfigMap`, et pourquoi elle n’est pas valide, vérifiez les événements de votre Pod avec `kubectl describe pod pod-name `. La sortie peut inclure des événements de pods qui précisent si la journalisation est activée ou non, comme l’exemple de sortie suivant.

```
[...]
Annotations:          CapacityProvisioned: 0.25vCPU 0.5GB
                      Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
[...]
Events:
  Type     Reason           Age        From                                                           Message
  ----     ------           ----       ----                                                           -------
  Warning  LoggingDisabled  <unknown>  fargate-scheduler                                              Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
```

Les événements du pod sont éphémères avec une période de temps dépendant des paramètres. Vous pouvez également afficher les annotations d’un pod à l’aide de `kubectl describe pod pod-name `. Dans l’annotation du pod, il existe des informations sur l’activation ou la désactivation de la fonction de journalisation et la cause.

# Choix du type d’instance Amazon EC2 optimal pour les nœuds
<a name="choosing-instance-type"></a>

Amazon EC2 fournit un large choix de types d'instance pour les composants master. Chaque type d'instance offre des capacités de calcul, de mémoire, de stockage et de réseau différentes. Chaque instance est également regroupée dans une famille d'instances en fonction de ces capacités. Pour la liste complète, consultez [Types d’instances disponibles](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) dans le *Guide de l’utilisateur Amazon EC2*. Amazon EKS publie plusieurs variantes d'Amazon EC2 AMIs pour permettre le support. Pour vous assurer que le type d'instance que vous sélectionnez est compatible avec Amazon EKS, tenez compte des critères suivants.
+ Tous les Amazon EKS AMIs ne prennent actuellement pas en charge `mac` cette famille.
+ Arm et Amazon EKS non accéléré AMIs ne prennent pas en charge les`g3`, `g4``inf`, et `p` les familles.
+ Amazon EKS accéléré AMIs ne prend pas en charge les `a``c`,`hpc`,`m`, et `t` les familles.
+ Pour les instances basées sur ARM, Amazon Linux 2023 (AL2023) ne prend en charge que les types d'instances qui utilisent des processeurs Graviton2 ou version ultérieure. AL2023 ne prend pas en charge `A1` les instances.

Lorsque vous choisissez entre les types d'instances pris en charge par Amazon EKS, tenez compte des fonctionnalités suivantes de chaque type.

 **Nombre d'instances dans un groupe de nœuds**   
De manière générale, il est préférable d’utiliser moins d’instances, mais plus grandes, surtout si vous avez de nombreux DaemonSets. Chaque instance nécessitant des appels API vers le serveur d'API, plus le nombre d'instances est élevé, plus la charge sur le serveur d'API est importante.

 **Système d’exploitation**   
Examinez les types d'instances pris en charge pour [Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html), [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html) et [Bottlerocket](https://aws.amazon.com/bottlerocket/faqs/). Avant de créer des instances Windows, consultez [Déploiement de nœuds Windows sur les clusters EKS](windows-support.md).

 **Architecture matérielle**   
Avez-vous besoin d’une architecture x86 ou Arm ? Avant de déployer des instances Arm, consultez [Arm Amazon Linux optimisé pour Amazon EKS AMIs](eks-optimized-ami.md#arm-ami). Avez-vous besoin d’instances basées sur le système Nitro ([Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) ou [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)) ou disposant de capacités [accélérées](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/accelerated-computing-instances.html) ? Si vous avez besoin de fonctionnalités accélérées, vous ne pouvez utiliser Linux qu'avec Amazon EKS.

 **Nombre maximal de pods**   
Comme chaque pod reçoit sa propre adresse IP, le nombre d’adresses IP prises en charge par un type d’instance est un facteur déterminant pour savoir combien de pods peuvent s’exécuter sur cette instance. Pour déterminer manuellement combien de pods un type d’instance peut prendre en charge, consultez .  
AWS Les types [d'instances Nitro System](https://aws.amazon.com/ec2/nitro/) prennent éventuellement en charge un plus grand nombre d'adresses IP que les types d'instances autres que Nitro System. Cependant, toutes les adresses IP attribuées à une instance ne sont pas disponibles pour les pods. Pour attribuer un nombre significativement plus élevé d'adresses IP à vos instances, la version `1.9.0` ou ultérieure du module complémentaire Amazon VPC CNI doit être installée dans votre cluster et configurée de manière appropriée. Pour de plus amples informations, veuillez consulter [Attribution de davantage d’adresses IP aux nœuds Amazon EKS avec des préfixes](cni-increase-ip-addresses.md). Pour attribuer le plus grand nombre d'adresses IP à vos instances, vous devez avoir installé la version `1.10.1` ou une version ultérieure du module complémentaire Amazon VPC CNI dans votre cluster et déployer le cluster avec la famille `IPv6`.

 **Famille IP**   
Vous pouvez utiliser n’importe quel type d’instance pris en charge lorsque vous utilisez la famille `IPv4` pour un cluster, ce qui permet à votre cluster d’attribuer des adresses `IPv4` privées à vos pods et services. Mais si vous souhaitez utiliser la famille `IPv6` pour votre cluster, alors vous devez utiliser les types d'instance [AWS Nitro System](https://aws.amazon.com/ec2/nitro/) ou les types d'instance matériel nu. Seul `IPv4` est pris en charge pour les instances Windows. Votre cluster doit utiliser la version `1.10.1` ou une version ultérieure du module complémentaire Amazon VPC CNI. Pour plus d'informations sur l'utilisation de `IPv6`, consultez [En savoir plus sur IPv6 les adresses des clusters, des pods et des services](cni-ipv6.md).

 **Version du module complémentaire Amazon VPC CNI que vous exécutez**   
La dernière version du [plug-in CNI Amazon VPC pour Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) prend en charge [ces types d'instance](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go). Il peut être nécessaire de mettre à jour la version de votre module complémentaire CNI Amazon VPC pour bénéficier des derniers types d'instance pris en charge. Pour de plus amples informations, veuillez consulter [Attribuer IPs à des pods avec l'Amazon VPC CNI](managing-vpc-cni.md). La dernière version prend en charge les dernières fonctions pour une utilisation avec Amazon EKS. Les versions antérieures ne prennent pas en charge toutes les fonctionnalités. Vous pouvez afficher les fonctions prises en charge par les différentes versions dans [Changelog](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/CHANGELOG.md) sur GitHub.

 **Région  AWS dans laquelle vous créez vos nœuds**   
Tous les types d'instances ne sont pas disponibles dans toutes les AWS régions.

 **Si vous utilisez des groupes de sécurité pour les pods**   
Si vous utilisez des groupes de sécurité pour les pods, seuls certains types d’instances sont pris en charge. Pour de plus amples informations, veuillez consulter [Attribution de groupes de sécurité à des pods individuels](security-groups-for-pods.md).

## Comment est déterminé MaxPods
<a name="max-pods-precedence"></a>

La `maxPods` valeur finale appliquée à un nœud dépend de plusieurs composants qui interagissent dans un ordre de priorité spécifique. La compréhension de cet ordre vous permet d'éviter les comportements inattendus lors de la personnalisation`maxPods`.

 **Ordre de priorité (du plus élevé au plus bas) :** 

1.  **Application des groupes de nœuds gérés** : lorsque vous utilisez un groupe de nœuds gérés sans [AMI personnalisée](launch-templates.md#launch-template-custom-ami), Amazon EKS impose un plafonnement `maxPods` des données utilisateur du nœud. Pour les instances avec moins de 30 VCPUs, le plafond est`110`. Pour les instances avec une tension supérieure à 30 VCPUs, le plafond est fixé à`250`. Cette valeur a priorité sur toute autre `maxPods` configuration, y compris`maxPodsExpression`.

1.  **`maxPods`configuration kubelet** — Si vous définissez `maxPods` directement dans la configuration kubelet (par exemple, via un modèle de lancement avec une AMI personnalisée), cette valeur a priorité sur. `maxPodsExpression`

1.  **nodeadm `maxPodsExpression`** — Si vous utilisez [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression)in your`NodeConfig`, nodeadm évalue l'expression à calculer. `maxPods` Cela n'est efficace que lorsque la valeur n'est pas déjà définie par une source de priorité supérieure.

1.  **Calcul par défaut basé sur l'ENI** : si aucune autre valeur n'est définie, l'AMI calcule en `maxPods` fonction du nombre d'interfaces réseau élastiques et d'adresses IP prises en charge par le type d'instance. Cela équivaut à la formule`(number of ENIs × (IPs per ENI − 1)) + 2`. Les `+ 2` comptes Amazon VPC CNI s'`kube-proxy`exécutent sur chaque nœud, qui ne consomment pas d'adresse IP de pod.

**Important**  
Si vous utilisez un groupe de nœuds gérés et que vous le définissez `maxPodsExpression` dans votre`NodeConfig`, l'application du groupe de nœuds gérés remplace votre expression. Pour utiliser une `maxPods` valeur personnalisée avec des groupes de nœuds gérés, vous devez spécifier une AMI personnalisée dans votre modèle de lancement et la définir `maxPods` directement. Pour de plus amples informations, veuillez consulter [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md).

 **Groupes de nœuds gérés et nœuds autogérés** 

Avec les groupes de nœuds gérés (sans AMI personnalisée), Amazon EKS injecte la `maxPods` valeur dans les données utilisateur bootstrap du nœud. Autrement dit :
+ La `maxPods` valeur est toujours plafonnée à `110` ou `250` en fonction de la taille de l'instance.
+ Toute configuration `maxPodsExpression` que vous configurez est remplacée par cette valeur injectée.
+ Pour utiliser une `maxPods` valeur différente, spécifiez une AMI personnalisée dans votre modèle de lancement et `--use-max-pods false` transmettez-la `--kubelet-extra-args '--max-pods=my-value'` au `bootstrap.sh` script. Pour obtenir des exemples, consultez [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md).

Avec les nœuds autogérés, vous avez un contrôle total sur le processus d'amorçage. Vous pouvez l'utiliser `maxPodsExpression` dans votre `NodeConfig` ou le passer `--max-pods` directement à`bootstrap.sh`.

## Considérations relatives au mode automatique EKS
<a name="_considerations_for_eks_auto_mode"></a>

Le mode automatique EKS limite le nombre de pods sur les nœuds à la plus faible des deux valeurs suivantes :
+ Plafond strict de 110 pods
+ Le résultat du calcul du nombre maximal de pods décrit ci-dessus.

# Créez des nœuds avec des images optimisées prédéfinies
<a name="eks-optimized-amis"></a>

Vous pouvez déployer des nœuds avec des images [Amazon Machine Images](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) (AMI) optimisées pour Amazon EKS pré-construites ou vos propres AMI personnalisées lorsque vous utilisez des groupes de nœuds gérés ou des nœuds autogérés. Si vous utilisez des nœuds hybrides, consultez [Préparer le système d’exploitation pour les nœuds hybrides](hybrid-nodes-os.md). Pour plus d'informations sur chaque type d'AMI optimisées pour Amazon EKS, veuillez consulter l'une des rubriques suivantes. Pour obtenir des instructions sur la façon de créer votre propre AMI personnalisée, veuillez consulter [Créez une AMI Amazon Linux personnalisée optimisée pour EKS](eks-ami-build-scripts.md).

Avec le mode automatique Amazon EKS, EKS gère l’instance EC2, y compris la sélection et la mise à jour de l’AMI.

**Topics**
+ [Guide des fonctionnalités d' AL2 EKS et de AMIs transition AL2 accélérée](eks-ami-deprecation-faqs.md)
+ [Créez des nœuds avec Amazon Linux optimisé AMIs](eks-optimized-ami.md)
+ [Créez des nœuds avec Bottlerocket optimisé AMIs](eks-optimized-ami-bottlerocket.md)
+ [Créer des nœuds avec des AMI Ubuntu Linux optimisées](eks-partner-amis.md)
+ [Créez des nœuds avec Windows optimisé AMIs](eks-optimized-windows-ami.md)

# Guide des fonctionnalités d' AL2 EKS et de AMIs transition AL2 accélérée
<a name="eks-ami-deprecation-faqs"></a>

**Avertissement**  
Amazon EKS a cessé de publier Amazon Linux 2 (AL2) optimisé pour EKS AMIs le 26 novembre 2025. AL2Les versions 023 et Bottlerocket pour AMIs Amazon EKS sont disponibles pour toutes les versions de Kubernetes prises en charge, y compris les versions 1.33 et supérieures.

 AWS mettra fin à la prise en charge d'EKS, AL2 AL2 optimisée et accélérée AMIs, à compter du 26 novembre 2025. Bien que vous puissiez continuer à utiliser EKS AL2 AMIs après la date end-of-support (EOS) (26 novembre 2025), EKS ne publiera plus de nouvelles versions ou mises à jour de Kubernetes AL2 AMIs, y compris les versions mineures, les correctifs et les corrections de bogues après cette date. Nous vous recommandons de passer à Amazon Linux 2023 (AL2023) ou à AMIs Bottlerocket :
+ AL2Le 023 permet une secure-by-default approche avec des politiques de sécurité préconfigurées, SELinux en mode permissif, le mode IMDSv2 uniquement activé par défaut, des temps de démarrage optimisés et une gestion des packages améliorée pour une sécurité et des performances améliorées, parfaitement adapté aux infrastructures nécessitant des personnalisations importantes, telles qu'un accès direct au niveau du système d'exploitation ou des modifications importantes des nœuds. Pour en savoir plus, consultez le numéro [AL2023 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs/) ou consultez nos conseils de migration détaillés à l'[Mise à niveau d’Amazon Linux 2 vers Amazon Linux 2023](al2023.md)adresse.
+ Bottlerocket offre une sécurité renforcée, des temps de démarrage plus rapides et une surface d’attaque réduite pour une efficacité accrue grâce à sa conception spécialement optimisée pour les conteneurs, parfaitement adaptée aux approches natives des conteneurs avec un minimum de personnalisations des nœuds. Pour en savoir plus, consultez [Bottlerocket FAQs](https://aws.amazon.com/bottlerocket/faqs/) ou consultez nos conseils de migration détaillés à l'adresse. [Créez des nœuds avec Bottlerocket optimisé AMIs](eks-optimized-ami-bottlerocket.md)

Vous pouvez également le faire [Créez une AMI Amazon Linux personnalisée optimisée pour EKS](eks-ami-build-scripts.md) jusqu'à la date EOS (26 novembre 2025). En outre, vous pouvez créer une AMI personnalisée avec une instance de base Amazon Linux 2 jusqu'à la date Amazon Linux 2 EOS (30 juin 2026).

## Migration et support FAQs
<a name="_migration_and_support_faqs"></a>

### Comment migrer de mon AMI AL2 vers une AMI AL2 023 ?
<a name="_how_do_i_migrate_from_my_al2_to_an_al2023_ami"></a>

Nous vous recommandons de créer et de mettre en œuvre un plan de migration comprenant des tests approfondis de la charge de travail des applications et des procédures de restauration documentées, puis de suivre les step-by-step instructions [de la documentation officielle relative à la mise à niveau d'Amazon Linux 2 vers Amazon Linux 2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html) dans la documentation officielle d'EKS.

### Puis-je créer une AL2 AMI personnalisée après la date EKS end-of-support (EOS) pour EKS Optimized AL2 AMIs ?
<a name="_can_i_build_a_custom_al2_ami_past_the_eks_end_of_support_eos_date_for_eks_optimized_al2_amis"></a>

Bien que nous vous recommandions de passer à EKS, officiellement pris en charge et publié, optimisé AMIs pour AL2 023 ou Bottlerocket, vous pouvez créer des EKS personnalisés AL2 optimisés et accélérés AL2 jusqu'à AMIs la date AL2 AMI EOS (26 novembre 2025). Vous pouvez également créer une AMI personnalisée avec une instance de base Amazon Linux 2 jusqu’à la date de fin de vie d’Amazon Linux 2 (30 juin 2026). Pour step-by-step obtenir des instructions sur la création d'une AL2 AMI personnalisée AL2 optimisée et accélérée pour EKS, consultez la section [Création d'une AMI Amazon Linux](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-build-scripts.html) personnalisée dans la documentation officielle d'EKS.

### La politique de prise en charge des versions d’EKS Kubernetes s’applique-t-elle aux distributions Amazon Linux ?
<a name="_does_the_eks_kubernetes_version_support_policy_apply_to_amazon_linux_distributions"></a>

Non La date EOS pour EKS AL2 AL2 optimisée et accélérée AMIs est indépendante des délais de support standard et étendus pour les versions Kubernetes d'EKS. Vous devez migrer vers AL2 023 ou Bottlerocket même si vous utilisez le support étendu d'EKS.

### Comment le passage de cgroupv1 à cgroupv2 affecte-t-il ma migration ?
<a name="_how_does_the_shift_from_cgroupv1_to_cgroupv2_affect_my_migration"></a>

La [communauté Kubernetes a fait passer](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/4569-cgroup-v1-maintenance-mode/README.md) le `cgroupv1` support (utilisé par AL2) en mode maintenance, ce qui signifie qu'aucune nouvelle fonctionnalité ne sera ajoutée et que seules des mesures de sécurité critiques et des corrections de bogues majeures seront fournies. Pour adopter `cgroupv2` dans Kubernetes, vous devez vous assurer de la compatibilité entre le système d’exploitation, le noyau, l’exécution de conteneur et les composants Kubernetes. Cela nécessite une distribution Linux activée `cgroupv2` par défaut, telle que AL2 023, Bottlerocket, Red Hat Enterprise Linux (RHEL) 9\$1, Ubuntu 22.04\$1 ou Debian 11\$1. Ces distributions sont fournies avec des versions du noyau ≥ 5.8, qui constituent la configuration minimale requise pour la prise en charge `cgroupv2` dans Kubernetes. Pour en savoir plus, consultez [À propos de cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).

### Que dois-je faire si j'ai besoin de Neuron dans mon AL2 AMI personnalisée ?
<a name="_what_do_i_do_if_i_need_neuron_in_my_custom_al2_ami"></a>

Vous ne pouvez pas exécuter toutes vos applications alimentées par Neuron de manière native sur une base. AL2 AMIs Pour tirer parti de AWS Neuron sur une AL2 AMI, vous devez conteneuriser vos applications à l'aide d'un conteneur compatible avec Neuron avec une distribution autre que AL2 Linux (par exemple, Ubuntu 22.04, Amazon Linux 2023, etc.), puis déployer ces conteneurs sur une AL2 AMI basée sur laquelle le pilote Neuron () est installé. `aws-neuronx-dkms`

### Dois-je passer à une instance de base Amazon Linux 2 vierge après la date EOS de l' AL2 AMI EKS (26 novembre 2025) ?
<a name="_should_i_switch_to_a_bare_amazon_linux_2_base_instance_after_the_eks_al2_ami_eos_date_november_26_2025"></a>

Le passage à une instance de base Amazon Linux 2 pure ne présente pas les optimisations spécifiques, les configurations d'exécution des conteneurs et les personnalisations fournies par l'EKS officiel, AL2 optimisé et accéléré. AL2 AMIs Si vous devez plutôt continuer à utiliser une solution AL2 basée, nous vous recommandons de créer une AMI personnalisée à l'aide des recettes d'AMI EKS disponibles à l'adresse [Créez une AMI Amazon Linux personnalisée optimisée pour EKS](eks-ami-build-scripts.md) ou de la [spécification de construction de l'AMI Amazon EKS](https://github.com/awslabs/amazon-eks-ami). Cela garantit la compatibilité avec vos charges de travail existantes et inclut les mises à jour AL2 du noyau jusqu'à la date EOS d'Amazon Linux 2 (30 juin 2026).

### Lorsque vous créez une AL2 AMI personnalisée à l'aide du GitHub référentiel EKS AMI après la date EOS de l' AL2 AMI EKS (26 novembre 2025), quel support est disponible pour les packages provenant de référentiels tels que amzn2-core et amzn2extra-docker ?
<a name="_when_building_a_custom_al2_ami_using_the_eks_ami_github_repository_after_the_eks_al2_ami_eos_date_november_26_2025_what_support_is_available_for_packages_from_repositories_like_amzn2_core_and_amzn2extra_docker"></a>

La recette EKS AMI sur [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) récupère les paquets via YUM à partir du logiciel Amazon Linux 2 standard, tel que [amzn2-core](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) et [amzn2extra-docker](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html). Après la date EKS AL2 AMI EOS (26 novembre 2025), ce logiciel continuera d'être pris en charge jusqu'à la date plus large d'Amazon Linux 2 EOS (30 juin 2026). Veuillez noter que l’assistance est limitée aux mises à jour du noyau pendant cette période, ce qui signifie que vous devrez gérer et appliquer manuellement les autres mises à jour de paquets, les correctifs de sécurité et toutes les dépendances non liées au noyau afin de maintenir la sécurité et la compatibilité.

### Pourquoi les applications Java utilisant d'anciennes versions d' JDK8 Amazon EKS avec AL2 023 peuvent-elles rencontrer des exceptions de manque de mémoire (OOM) et des redémarrages de pods, et comment résoudre ce problème ?
<a name="_why_might_java_applications_using_older_versions_of_jdk8_on_amazon_eks_with_al2023_experience_out_of_memory_oom_exceptions_and_pod_restarts_and_how_can_this_be_resolved"></a>

Lorsqu'elles sont exécutées sur des nœuds Amazon EKS avec AL2 023, les applications Java utilisant des versions antérieures du JDK 8 `jdk8u372` peuvent provoquer des exceptions OOM et des redémarrages de pods car la machine virtuelle Java n'est pas compatible avec. `cgroupv2` Ce problème provient spécifiquement de l’incapacité de la JVM à détecter les limites de mémoire du conteneur à l’aide de `cgroupv2`, la valeur par défaut dans Amazon Linux 2023. Par conséquent, il base l’allocation de tas sur la mémoire totale du nœud plutôt que sur la limite définie par le pod. Cela provient du fait que `cgroupv2` change l’emplacement de stockage des données relatives à la limite de mémoire, ce qui entraîne une mauvaise lecture de la mémoire disponible par les anciennes versions de Java et une estimation erronée des ressources au niveau des nœuds. Les options suivantes sont les suivantes :
+  **Mise à niveau de la version JDK** : La mise à niveau vers `jdk8u372` ou une version ultérieure, ou vers une version JDK plus récente avec prise en charge `cgroupv2` complète, peut résoudre ce problème. Pour obtenir la liste des versions Java compatibles qui prennent entièrement en charge `cgroupv2`, consultez la section [À propos de cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).
+  **Création d'une AMI personnalisée** : si vous devez continuer à utiliser une solution AL2 basée, vous pouvez créer une AMI personnalisée AL2 (jusqu'au 26 novembre 2025) à l'aide [Créez une AMI Amazon Linux personnalisée optimisée pour EKS](eks-ami-build-scripts.md) de la [spécification de construction de l'AMI Amazon EKS](https://github.com/awslabs/amazon-eks-ami). Par exemple, vous pouvez créer une AMI AL2 basée sur la version v1.33 (jusqu'au 26 novembre 2025). Amazon EKS fournira des informations AL2 basées sur AMIs la date AL2 EKS EOS (26 novembre 2025). Après la date EOS (26 novembre 2025), vous devrez créer votre propre AMI.
+  **Activer cgroupv1** : si vous devez continuer à utiliser`cgroupv1`, vous pouvez l'activer `cgroupv1` sur une AMI EKS AL2 023. Pour activer, exécuter `sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"` et redémarrer le système (par exemple, une EC2 instance ou un nœud exécutant Amazon Linux 2023). Cela modifiera les paramètres de démarrage du système (par exemple, en ajoutant le paramètre du noyau « systemd.unified\$1cgroup\$1hierarchy=0 » à la configuration GRUB, qui indique à systemd d’utiliser l’ancienne hiérarchie `cgroupv1`) et activera `cgroupv1`. Notez que lorsque vous exécutez cette commande grubby, vous reconfigurez le noyau avec `cgroupv1` activé et `cgroupv2` désactivé. Une seule de ces versions de cgroup est utilisée pour la gestion active des ressources sur un nœud. Ce n’est pas la même chose que d’assurer la rétrocompatibilité de `cgroupv2` pour l’API `cgroupv1`.

**Avertissement**  
Nous ne recommandons pas l’utilisation continue de `cgroupv1`. Nous vous recommandons plutôt de migrer vers `cgroupv2`. La communauté Kubernetes a fait passer le `cgroupv1` support (utilisé par AL2) en mode maintenance, ce qui signifie qu'aucune nouvelle fonctionnalité ou mise à jour ne sera ajoutée et que seuls des correctifs de sécurité essentiels et des corrections de bogues majeurs seront fournis. La suppression complète de la prise en charge `cgroupv1` est prévue dans une prochaine version, mais aucune date précise n’a encore été annoncée. Si vous rencontrez des problèmes avec`cgroupv1`, ne AWS sera pas en mesure de fournir une assistance et vous recommandera de passer à`cgroupv2`.

## Compatibilité et versions
<a name="_compatibility_and_versions"></a>

### Versions de Kubernetes prises en charge pour AL2 AMIs
<a name="_supported_kubernetes_versions_for_al2_amis"></a>

La version 1.32 de Kubernetes est la dernière version pour laquelle Amazon EKS publiera ( AL2 Amazon Linux 2). AMIs Pour les versions de Kubernetes [prises en charge](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) jusqu'à la version 1.32, EKS continuera à publier AL2 AMIs (AL2\$1ARM\$164, \$1x86\$164) et à accélérer ( AL2\$1x86\$164\$1GPU) jusqu'au 26 novembre 2025. AL2 AMIs AL2 Après cette date, EKS cessera de publier des versions AL2 optimisées et AL2 accélérées AMIs pour toutes les versions de Kubernetes. Notez que la date EOS pour EKS AL2 AL2 optimisée et accélérée AMIs est indépendante des délais de support standard et étendu pour les versions Kubernetes d'EKS.

### Comparaison des pilotes pris en charge et des versions du noyau Linux pour AL2, AL2 023 et Bottlerocket AMIs
<a name="_supported_drivers_and_linux_kernel_versions_comparison_for_al2_al2023_and_bottlerocket_amis"></a>


| Composant |  AL2 AMI D'EKS | EKS AL2 023 AMI | EKS Bottlerocket AMI | 
| --- | --- | --- | --- | 
|  Compatibilité du système d’exploitation de base  |  RHEL7/CentOS 7  |  Fedora/CentOS 9  |  N/A  | 
|   [pilote en mode utilisateur CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/why-cuda-compatibility.html#why-cuda-compatibility)   |  12.x  |  12,x, 13,x  |  12,x, 13,x  | 
|  Pilote GPU NVIDIA  |  R570  |  R580  |  R570, R580  | 
|   AWS Pilote Neuron  |  2,20 ans et plus  |  2,20 ans et plus  |  2,20 ans et plus  | 
|  Noyau Linux  |  5,10  |  6.1, 6.12  |  6.1, 6.12  | 

Pour plus d'informations sur le pilote NVIDIA et la compatibilité CUDA, consultez la [documentation NVIDIA](https://docs.nvidia.com/datacenter/tesla/drivers/index.html#supported-drivers-and-cuda-toolkit-versions).

### AWS Compatibilité des neurones avec AL2 AMIs
<a name="shared_aws_neuron_compatibility_with_al2_amis"></a>

À partir de [AWS la version 2.20 de Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/release-notes/prev/rn.html#neuron-2-20-0-whatsnew), le Neuron Runtime (`aws-neuronx-runtime-lib`) utilisé par EKS AL AMIs n'est plus compatible avec Amazon Linux 2 (). AL2 Le pilote Neuron (`aws-neuronx-dkms`) est désormais le seul package AWS Neuron compatible avec Amazon Linux 2. Cela signifie que vous ne pouvez pas exécuter vos applications alimentées par Neuron de manière native sur une AMI basée AL2 sur une AMI. Pour configurer Neuron on AL2 023 AMIs, consultez le guide de configuration [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/index.html#setup-guide-index).

### Compatibilité de Kubernetes avec AL2 AMIs
<a name="_kubernetes_compatibility_with_al2_amis"></a>

La communauté Kubernetes a déplacé le `cgroupv1` support (utilisé par AL2) en mode maintenance. Cela signifie qu’aucune nouvelle fonctionnalité ne sera ajoutée et que seules les corrections de sécurité critiques et les corrections de bogues majeurs seront fournies. Toutes les fonctionnalités de Kubernetes basées sur cgroupv2, telles que MemoryQo S et l'isolation améliorée des ressources, ne sont pas disponibles sur. AL2 En outre, la version 1.32 d'Amazon EKS Kubernetes était la dernière version à être prise en charge. AL2 AMIs Pour maintenir la compatibilité avec les dernières versions de Kubernetes, nous vous recommandons de migrer vers AL2 023 ou Bottlerocket, qui sont activées par défaut. `cgroupv2`

### Compatibilité des versions Linux avec AL2 AMIs
<a name="_linux_version_compatibility_with_al2_amis"></a>

Amazon Linux 2 (AL2) est pris en charge AWS jusqu'à sa date end-of-support (EOS) du 30 juin 2026. Cependant, avec le AL2 temps, le soutien apporté par l'ensemble de la communauté Linux aux nouvelles applications et fonctionnalités est devenu plus limité. AL2 AMIs sont basés sur le [noyau Linux 5.10](https://docs.aws.amazon.com/linux/al2/ug/kernel.html), tandis que AL2 023 utilise le [noyau Linux 6.1](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2-kernel.html). Contrairement à AL2 023, AL2 bénéficie d'un soutien limité de la part de la communauté Linux au sens large. Cela signifie que de nombreux packages et outils Linux en amont doivent être rétroportés pour fonctionner avec l'ancienne version AL2 du noyau, certaines fonctionnalités modernes de Linux et certaines améliorations de sécurité ne sont pas disponibles en raison de l'ancien noyau, de nombreux projets open source ont déconseillé ou limité le support des anciennes versions du noyau, comme la 5.10.

### Packages obsolètes non inclus dans la version 023 AL2
<a name="_deprecated_packages_not_included_in_al2023"></a>

Voici quelques-uns des packages les plus courants qui ne sont pas inclus ou qui ont changé en AL2 2023 :
+ Certains [paquets binaires source d’Amazon Linux 2](https://docs.aws.amazon.com/linux/al2023/release-notes/removed-AL2023.6-AL2.html) ne sont plus disponibles dans Amazon Linux 2023.
+ Modifications apportées à la manière dont Amazon Linux prend en charge les différentes versions de packages (par exemple, [amazon-linux-extras le système](https://repost.aws/questions/QUWGU3VFJMRSGf6MDPWn4tLg/how-to-resolve-amazon-linux-extras-in-al2023)) en AL2 2023
+  [Les packages supplémentaires pour Enterprise Linux (EPEL)](https://docs.aws.amazon.com/linux/al2023/ug/epel.html) ne sont pas pris en charge dans AL2 la version 023
+  Les [applications 32 bits](https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html#deprecated-32bit-rpms) ne sont pas prises en charge dans AL2 la version 2.3

Pour en savoir plus, consultez [Comparing AL2 et AL2 023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html).

### Comparaison des validations FIPS entre AL2, AL2 023 et Bottlerocket
<a name="_fips_validation_comparison_across_al2_al2023_and_bottlerocket"></a>

Amazon Linux 2 (AL2), Amazon Linux 2023 (AL2023) et Bottlerocket fournissent une assistance pour la conformité aux normes fédérales de traitement de l'information (FIPS).
+ AL2 est certifié selon FIPS 140-2 et AL2 023 est certifié selon FIPS 140-3. Pour activer le mode FIPS le AL2 023, installez les packages nécessaires sur votre EC2 instance Amazon et suivez les étapes de configuration en suivant les instructions de la section [Activer le mode FIPS](https://docs.aws.amazon.com/linux/al2023/ug/fips-mode.html) le 023. AL2 Pour en savoir plus, consultez [AL2023 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs).
+ Bottlerocket fournit des variantes spécialement conçues pour FIPS qui limitent les composants du noyau et de l’espace utilisateur à l’utilisation de modules cryptographiques qui ont été soumis au programme de validation des modules cryptographiques FIPS 140-3.

### Journal des modifications du pilote EKS AMI et des versions
<a name="_eks_ami_driver_and_versions_changelog"></a>

Pour obtenir la liste complète de tous les composants de l'AMI EKS et de leurs versions, consultez les [notes de mise à jour de l'AMI Amazon EKS](https://github.com/awslabs/amazon-eks-ami/releases) sur GitHub.

# Créez des nœuds avec Amazon Linux optimisé AMIs
<a name="eks-optimized-ami"></a>

Amazon Elastic Kubernetes Service (Amazon EKS) fournit des AMIs images Amazon Machine () spécialisées optimisées pour exécuter des nœuds de travail Kubernetes. Ces Amazon Linux (AL) optimisés pour EKS AMIs sont préconfigurés avec des composants essentiels, tels que l'AWS `kubelet` IAM Authenticator et, pour garantir une intégration et une sécurité sans faille au sein de vos clusters. `containerd` Ce guide détaille les versions d'AMI disponibles et décrit les options spécialisées pour le calcul accéléré et les architectures basées sur ARM.

## Considérations
<a name="ami-considerations"></a>
+ Vous pouvez suivre les événements liés à la sécurité ou à la confidentialité pourAmazon Linux dans le [centre de sécurité Amazon Linux](https://alas.aws.amazon.com/) 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.
+ Avant de déployer une AMI accélérée ou une AMI Arm, consultez les informations contenues dans [Amazon Linux AMIs accéléré optimisé pour Amazon EKS](#gpu-ami) et. [Arm optimisé pour Amazon EKS \$1 Amazon Linux AMIs](#arm-ami)
+ Les EC2 `P2` instances Amazon ne sont pas prises en charge sur Amazon EKS car elles nécessitent la version 470 ou antérieure du `NVIDIA` pilote.
+ Tous les groupes de nœuds gérés nouvellement créés dans des clusters de la version `1.30` ou d'une version plus récente utiliseront automatiquement par défaut AL2 023 comme système d'exploitation du nœud.

## Amazon Linux accéléré optimisé pour Amazon EKS AMIs
<a name="gpu-ami"></a>

Amazon Linux (AL) AMIs accéléré optimisé pour Amazon EKS repose sur le système Amazon Linux standard optimisé pour EKS. AMIs Ils sont configurés pour servir d’images optionnelles pour les nœuds Amazon EKS afin de prendre en charge les charges de travail basées sur GPU, [Inferentia](https://aws.amazon.com/machine-learning/inferentia/) et [Trainium](https://aws.amazon.com/machine-learning/trainium/).

Pour de plus amples informations, veuillez consulter [Utiliser l'accélérateur optimisé pour EKS AMIs pour les instances GPU](ml-eks-optimized-ami.md).

## Arm optimisé pour Amazon EKS \$1 Amazon Linux AMIs
<a name="arm-ami"></a>

Les instances Arm apportent des économies significatives en termes de coût et sont bien adaptées aux applications dimensionnables et basées sur Arm, telles que serveurs web, microservices conteneurisés, flottes de cache et magasins de données distribuées. Lorsque vous ajoutez des nœuds Arm à votre cluster, passez en revue les considérations suivantes.
+ Si votre cluster a été déployé avant le 17 août 2020, vous devez effectuer une mise à niveau unique des manifestes des modules complémentaires critiques du cluster. Ceci afin que Kubernetes puisse extraire l'image correcte pour chaque architecture matérielle utilisée dans votre cluster. Pour plus d'informations sur la mise à jour des modules complémentaires de clusters, consultez [Étape 1 : préparer la mise à niveau](update-cluster.md#update-existing-cluster). Si vous avez déployé votre cluster à partir du 17 août 2020, vos modules complémentaires CoreDNS, `kube-proxy` et le plug-in CNI Amazon VPC pour Kubernetes sont déjà compatibles avec plusieurs architectures.
+ Les applications déployées sur les nœuds Arm doivent être compilées pour Arm.
+ Si vous en avez DaemonSets déployé dans un cluster existant, ou si vous souhaitez les déployer sur un nouveau cluster dans lequel vous souhaitez également déployer des nœuds Arm, vérifiez que vous DaemonSet pouvez les exécuter sur toutes les architectures matérielles de votre cluster.
+ Vous pouvez exécuter des groupes de nœuds Arm et des groupes de nœuds x86 dans le même cluster. Si vous procédez de la sorte, envisagez de déployer des images de conteneur multi-architecture dans un registre de conteneurs tel qu’Amazon Elastic Container Registry, puis d’ajouter des sélecteurs de nœuds à vos manifestes afin que Kubernetes connaisse l’architecture matérielle dans laquelle un pod peut être déployé. Pour de plus amples informations, consultez [Transmission d'une image multi-architecture](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html) dans le *Guide de l'utilisateur Amazon ECR* et l'article de blog [Présentation d'images de conteneurs multi-architectures pour Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr).

## En savoir plus
<a name="linux-more-information"></a>

Pour plus d'informations sur l'utilisation d'Amazon Linux optimisé pour Amazon EKS AMIs, consultez les sections suivantes :
+ Pour utiliser Amazon Linux avec des groupes de nœuds gérés, veuillez consulter la rubrique [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md).
+ Pour lancer des nœuds Amazon Linux autogérés, veuillez consulter la rubrique [Récupérez l'AMI Amazon Linux recommandée IDs](retrieve-ami-id.md).
+ Pour plus d'informations sur la version, consultez [Récupérer les informations sur la version Amazon Linux AMI](eks-linux-ami-versions.md).
+ Pour accéder à la dernière version IDs d'Amazon Linux optimisée pour Amazon EKS AMIs, consultez. [Récupérez l'AMI Amazon Linux recommandée IDs](retrieve-ami-id.md)
+ Pour les scripts open source utilisés pour créer l'Amazon EKS optimisé, consultez AMIs. [Créez une AMI Amazon Linux personnalisée optimisée pour EKS](eks-ami-build-scripts.md)

# Mise à niveau d’Amazon Linux 2 vers Amazon Linux 2023
<a name="al2023"></a>

**Avertissement**  
Amazon EKS a cessé de publier Amazon Linux 2 (AL2) optimisé pour EKS AMIs le 26 novembre 2025. AL2023 et Bottlerocket basés sur AMIs Amazon EKS sont disponibles pour toutes les versions de Kubernetes prises en charge, y compris les versions 1.33 et supérieures.

AL2023 est un système d'exploitation basé sur Linux conçu pour fournir un environnement sécurisé, stable et performant pour vos applications cloud. Il s’agit de la nouvelle génération d’Amazon Linux proposée par Amazon Web Services et est disponible pour toutes les versions Amazon EKS prises en charge.

AL2023 propose plusieurs améliorations par rapport à AL2. Pour une comparaison complète, consultez [Comparing AL2 et Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) dans le *guide de l'utilisateur Amazon Linux 2023*. Plusieurs packages ont été ajoutés, mis à niveau et supprimés AL2. Il est vivement recommandé de tester vos applications AL2023 avant de procéder à la mise à niveau. Pour obtenir la liste de toutes les modifications apportées aux packages AL2023, consultez la section [Modifications de package dans Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) dans les *notes de mise à jour d'Amazon Linux 2023*.

En plus de ces modifications, prenez en compte les éléments suivants :
+ AL2023 introduit un nouveau processus d'initialisation des nœuds `nodeadm` qui utilise un schéma de configuration YAML. Si vous utilisez des groupes de nœuds autogérés ou une AMI avec un modèle de lancement, vous devez désormais fournir explicitement des métadonnées de cluster supplémentaires lors de la création d’un nouveau groupe de nœuds. Un [exemple](https://awslabs.github.io/amazon-eks-ami/nodeadm/) des paramètres minimum requis est présenté ci-dessous, où `apiServerEndpoint`, `certificateAuthority` et le service `cidr` sont désormais obligatoires :

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: my-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
  ```

  Dans AL2, les métadonnées de ces paramètres ont été découvertes à partir de l'appel d'`DescribeCluster`API Amazon EKS. Avec AL2023, ce comportement a changé car l'appel d'API supplémentaire risque d'être limité lors de la mise à l'échelle de nœuds à grande échelle. Cette modification ne vous affecte pas si vous utilisez des groupes de nœuds gérés sans modèle de lancement, ou si vous utilisez Karpenter. Pour plus d’informations sur `certificateAuthority` et le service `cidr`, consultez [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) dans la *Référence de l’API Amazon EKS*.
+ Pour AL2023, modifie `nodeadm` également le format pour appliquer des paramètres à chaque nœud utilisant [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec). `kubelet` En AL2, cela a été fait avec le `--kubelet-extra-args` paramètre. Ceci est couramment utilisé pour ajouter des étiquettes et des rejets aux nœuds. L’exemple ci-dessous illustre l’application de `maxPods` et `--node-labels` sur le nœud.

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: test-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
    kubelet:
      config:
        maxPods: 110
      flags:
        - --node-labels=karpenter.sh/capacity-type=on-demand,karpenter.sh/nodepool=test
  ```
+ La version CNI d'Amazon VPC `1.16.2` ou supérieure est requise pour. AL2023
+ AL2023 nécessite `IMDSv2` par défaut. `IMDSv2`présente plusieurs avantages qui contribuent à améliorer la posture de sécurité. Il utilise une méthode d’authentification orientée session qui nécessite la création d’un jeton secret dans une simple requête HTTP PUT pour démarrer la session. La durée de validité du jeton de session peut avoir une valeur quelconque entre 1 seconde et 6 heures. Pour plus d'informations sur la manière de passer de `IMDSv1` à`IMDSv2`, consultez [Transition vers l'utilisation du service de métadonnées d'instance version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html) et [Profitez pleinement des avantages de votre AWS infrastructure IMDSv2 et désactivez-la IMDSv1 dans l'ensemble de celle-ci](https://aws.amazon.com/blogs/security/get-the-full-benefits-of-imdsv2-and-disable-imdsv1-across-your-aws-infrastructure). Si vous souhaitez continuer à utiliser `IMDSv1`, vous pouvez le faire en surchargant manuellement les paramètres via les propriétés de lancement de l’instance.
**Note**  
Pour `IMDSv2` with AL2023, le nombre de sauts par défaut pour les groupes de nœuds gérés peut varier :  
Lorsque vous n’utilisez pas de modèle de lancement, la valeur par défaut est définie sur `1`. Cela signifie que les conteneurs n’auront pas accès aux informations d’identification du nœud via IMDS. Si vous avez besoin d’un accès par conteneur aux informations d’identification du nœud, vous pouvez toujours le faire en utilisant un [modèle de lancement Amazon EC2 personnalisé](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html).
Lorsque vous utilisez un AMI personnalisée dans un modèle de lancement, la valeur `HttpPutResponseHopLimit` par défaut est définie sur `2`. Vous pouvez modifier manuellement `HttpPutResponseHopLimit` dans le modèle de lancement.
Vous pouvez également utiliser [Identité du pod Amazon EKS](pod-identities.md) pour fournir des informations d’identification, plutôt que d’utiliser `IMDSv2`.
+ AL2023 propose la nouvelle génération de hiérarchie unifiée des groupes de contrôle (`cgroupv2`). `cgroupv2`est utilisé pour implémenter un environnement d'exécution de conteneur, et par`systemd`. Bien qu'elle contienne AL2023 toujours du code permettant au système de fonctionner`cgroupv1`, cette configuration n'est ni recommandée ni prise en charge. Cette configuration sera complètement supprimée dans une prochaine version majeure d’Amazon Linux.
+  `eksctl`une version `0.176.0` ou supérieure est requise `eksctl` pour le support AL2023.

Pour les groupes de nœuds gérés existants, vous pouvez effectuer une mise à niveau sur place ou une mise à blue/green niveau en fonction de la manière dont vous utilisez un modèle de lancement :
+ Si vous utilisez une AMI personnalisée avec un groupe de nœuds gérés, vous pouvez effectuer une mise à niveau sur place en remplaçant l’ID de l’AMI dans le modèle de lancement. Vous devez vous assurer que vos applications et toutes les données utilisateur sont transférées vers le AL2023 premier avant de mettre en œuvre cette stratégie de mise à niveau.
+ Si vous utilisez des groupes de nœuds gérés avec le modèle de lancement standard ou avec un modèle de lancement personnalisé qui ne précise pas l'ID de l'AMI, vous devez effectuer une mise à niveau à l'aide d'une blue/green stratégie. Une blue/green mise à niveau est généralement plus complexe et implique la création d'un tout nouveau groupe de nœuds dans lequel vous devez spécifier AL2023 le type d'AMI. Le nouveau groupe de nœuds devra ensuite être configuré avec soin pour garantir que toutes les données personnalisées du groupe de AL2 nœuds sont compatibles avec le nouveau système d'exploitation. Une fois le nouveau groupe de nœuds testé et validé avec vos applications, vous pouvez migrer les pods de l’ancien groupe vers le nouveau. Après la migration, vous pouvez supprimer l’ancien groupe de nœuds.

Si vous utilisez Karpenter et que vous souhaitez l'utiliser AL2023, vous devez modifier le `EC2NodeClass` `amiFamily` champ avec AL2023. Par défaut, la fonction de dérive est activée dans Karpenter. Cela signifie qu’une fois le champ `amiFamily` modifié, Karpenter mettra automatiquement à jour vos composants master avec la dernière AMI lorsqu’elle sera disponible.

## Informations supplémentaires sur nodeadm
<a name="_additional_information_about_nodeadm"></a>

Lorsque vous utilisez une AMI Amazon Linux 2023 optimisée pour EKS ou que vous créez une AMI EKS Amazon Linux 2023 personnalisée via les scripts Packer fournis dans le amazon-eks-ami GitHub référentiel officiel, vous devez éviter d'exécuter explicitement nodeadm init dans les données utilisateur EC2 ou dans le cadre de votre AMI personnalisée.

Si vous souhaitez générer une dynamique NodeConfig dans vos données utilisateur, vous pouvez écrire cette configuration dans un fichier yaml ou json intégré. `/etc/eks/nodeadm.d` Ces fichiers de configuration seront fusionnés et appliqués à votre nœud lorsque nodeadm init sera automatiquement lancé ultérieurement dans le processus de démarrage. Par exemple :

```
cat > /etc/eks/nodeadm.d/additional-node-labels.yaml << EOF
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  kubelet:
    flags:
      - --node-labels=foo=bar
EOF
```

Amazon Linux 2023, optimisé pour EKS, exécute AMIs automatiquement nodeadm init en deux phases via des services systemd distincts : nodeadm-config s'exécute avant l'exécution des données utilisateur, tandis que nodeadm-run s'exécute ensuite. Le service nodeadm-config établit des configurations de base pour containerd et kubelet avant l'exécution des données utilisateur. Le service nodeadm-run exécute certains démons du système et effectue toutes les configurations finales après l'exécution des données utilisateur. Si la commande nodeadm init est exécutée une fois de plus, via les données utilisateur ou une AMI personnalisée, elle risque de briser les hypothèses concernant l'ordre d'exécution et d'entraîner des résultats inattendus, notamment des erreurs de configuration. ENIs

# Récupérer les informations sur la version Amazon Linux AMI
<a name="eks-linux-ami-versions"></a>

Les AMI optimisées par Amazon EKS Linux sont versionnées par la version Kubernetes et la date de sortie de l’AMI dans le format suivant :

```
k8s_major_version.k8s_minor_version.k8s_patch_version-release_date
```

Chaque version AMI comprend différentes versions de [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), du noyau Linux et de [containerd](https://containerd.io/). Les AMI accélérées comprennent également différentes versions du pilote NVIDIA. Vous trouverez ces informations sur la version dans le [journal des modifications](https://github.com/awslabs/amazon-eks-ami/blob/main/CHANGELOG.md) sur GitHub.

# Récupérez l'AMI Amazon Linux recommandée IDs
<a name="retrieve-ami-id"></a>

Lors du déploiement de nœuds, vous pouvez spécifier un identifiant pour une image Amazon Machine Image (AMI) optimisée pour Amazon EKS pré-créée. Pour récupérer un ID d'AMI correspondant à la configuration souhaitée, interrogez l'API du magasin de paramètres AWS Systems Manager. L'utilisation de cette API élimine le besoin de rechercher manuellement l'AMI optimisée pour Amazon EKS IDs. Pour de plus amples informations, veuillez consulter [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Le [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que vous utilisez doit disposer de l'autorisation IAM `ssm:GetParameter` pour récupérer les métadonnées de l'AMI optimisée pour Amazon EKS.

Vous pouvez récupérer l’ID d’image de la dernière AMI Amazon Linux optimisée pour Amazon EKS recommandée à l’aide de la commande suivante, qui utilise le sous-paramètre `image_id`. Si nécessaire, apportez les modifications suivantes à la commande, puis exécutez la commande modifiée :
+ Veuillez remplacer `<kubernetes-version>` par une [version prise en charge par Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).
+ *ami-type*Remplacez-le par l'une des options suivantes. Pour plus d'informations sur les types d' EC2 instances Amazon, consultez la section [Types d' EC2 instances Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
  + *amazon-linux-2023/x86\$164/standard*À utiliser pour les instances `x86` basées sur Amazon Linux 2023 (AL2023).
  + *amazon-linux-2023/arm64/standard*À utiliser pour AL2 023 instances ARM, telles que les instances basées sur [AWS Graviton](https://aws.amazon.com/ec2/graviton/).
  + *amazon-linux-2023/x86\$164/nvidia*À utiliser pour les dernières instances NVIDIA AL2 `x86` 023 approuvées.
  + *amazon-linux-2023/arm64/nvidia*À utiliser pour les dernières instances NVIDIA AL2 `arm64` 023 approuvées.
  + *amazon-linux-2023/x86\$164/neuron*À utiliser pour les dernières instances AL2 023 [AWS Neuron](https://aws.amazon.com/machine-learning/neuron/).
+ `<region-code>`Remplacez-le par une [AWS région prise en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) pour laquelle vous souhaitez obtenir l'ID AMI.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/<kubernetes-version>/<ami-type>/recommended/image_id \
    --region <region-code> --query "Parameter.Value" --output text
```

Voici un exemple de commande après remplacement des espaces réservés.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.31/amazon-linux-2023/x86_64/standard/recommended/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

L'exemple qui suit illustre un résultat.

```
ami-1234567890abcdef0
```

# Créez une AMI Amazon Linux personnalisée optimisée pour EKS
<a name="eks-ami-build-scripts"></a>

**Avertissement**  
Amazon EKS a cessé de publier Amazon Linux 2 (AL2) optimisé pour EKS AMIs le 26 novembre 2025. AL2Les versions 023 et Bottlerocket pour AMIs Amazon EKS sont disponibles pour toutes les versions de Kubernetes prises en charge, y compris les versions 1.33 et supérieures.

Amazon EKS fournit des scripts de génération open source dans le référentiel [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) que vous pouvez utiliser pour consulter les configurations, le moteur d'exécution`kubelet`, l'authentificateur AWS IAM pour Kubernetes et créer votre propre AMI basée sur AL à partir de zéro.

Ce dépôt contient le [script bootstrap](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) spécialisé AL2 et l'[outil nodeadm pour AL2 023](https://awslabs.github.io/amazon-eks-ami/nodeadm/) qui s'exécute au démarrage. Ces scripts configurent les données de certificat de votre instance, le point de terminaison du plan de contrôle, le nom du cluster, et bien plus encore. Les scripts sont considérés comme la source de vérité pour les versions d'AMI optimisées pour Amazon EKS. Vous pouvez donc suivre le GitHub référentiel pour suivre les modifications apportées à notre. AMIs

Lors de la création personnalisée AMIs avec l'EKS Optimized AMIs comme base, il n'est pas recommandé ou pris en charge d'exécuter une mise à niveau du système d'exploitation (par ex. `dnf upgrade`) ou mettez à niveau l'un des packages Kubernetes ou GPU inclus dans l'EKS Optimized AMIs, car cela risque de compromettre la compatibilité des composants. Si vous mettez à niveau le système d'exploitation ou les packages inclus dans l'EKS Optimized AMIs, il est recommandé de procéder à des tests approfondis dans un environnement de développement ou de préparation avant le déploiement en production.

Lors de la création d'instances personnalisées AMIs pour le GPU, il est recommandé de créer une AMIs configuration personnalisée distincte pour chaque génération et famille d'instances que vous allez exécuter. L'accélérateur optimisé pour EKS installe de AMIs manière sélective les pilotes et les packages au moment de l'exécution en fonction de la génération et de la famille du type d'instance sous-jacent. Pour plus d'informations, consultez les scripts EKS AMI pour [l'installation et l'](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh)[exécution](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh).

## Conditions préalables
<a name="_prerequisites"></a>
+  [Installation de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+  [Installez HashiCorp Packer v1.9.4\$1](https://developer.hashicorp.com/packer/downloads) 
+  [Installez GNU Make](https://www.gnu.org/software/make/) 

## Démarrage rapide
<a name="_quickstart"></a>

Ce guide de démarrage rapide vous montre les commandes permettant de créer une AMI personnalisée dans votre AWS compte. Pour en savoir plus sur les configurations disponibles pour personnaliser votre AMI, consultez les variables de modèle sur la page [Amazon Linux 2023](https://awslabs.github.io/amazon-eks-ami/usage/al2023/).

### Conditions préalables
<a name="_prerequisites_2"></a>

Installez le [plug-in Amazon](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon) requis. Par exemple :

```
packer plugins install github.com/hashicorp/amazon
```

### Étape 1. Configurez votre environnement
<a name="_step_1_setup_your_environment"></a>

Clonez ou créez une fourche du référentiel AMI officiel d’Amazon EKS. Par exemple :

```
git clone https://github.com/awslabs/amazon-eks-ami.git
cd amazon-eks-ami
```

Vérifiez que Packer est installé :

```
packer --version
```

### Étape 2. Pour créer une AMI personnalisée
<a name="_step_2_create_a_custom_ami"></a>

Vous trouverez ci-dessous des exemples de commandes pour différentes commandes personnalisées AMIs.

 ** AL2 AMI NVIDIA de base :** 

```
make k8s=1.31 os_distro=al2 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **AMI NVIDIA AL2 023 de base :** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **AMI Neuron AL2 023 conforme aux STIG :** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=neuron \
  enable_fips=true \
  source_ami_id=ami-0abcd1234efgh5678 \
  kms_key_id=alias/aws-stig
```

Après avoir exécuté ces commandes, Packer effectuera les opérations suivantes :\$1 Lancer une EC2 instance Amazon temporaire. \$1 Installez les composants, les pilotes et les configurations de Kubernetes. \$1 Créez l'AMI dans votre AWS compte.

Le résultat attendu devrait ressembler à ceci :

```
==> Wait completed after 8 minutes 42 seconds

==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9
```

### Étape 3. Afficher les valeurs par défaut
<a name="_step_3_view_default_values"></a>

Pour afficher les valeurs par défaut et les options supplémentaires, exécutez la commande suivante :

```
make help
```

# Créez des nœuds avec Bottlerocket optimisé AMIs
<a name="eks-optimized-ami-bottlerocket"></a>

 [Bottlerocket](https://aws.amazon.com/bottlerocket/) est une distribution Linux open source sponsorisée et soutenue par. AWS Bottlerocket est spécialement conçu pour héberger des charges de travail conteneurisées. Avec Bottlerocket, vous pouvez améliorer la disponibilité des déploiements conteneurisés et réduire les coûts opérationnels en automatisant les mises à jour de votre infrastructure de conteneurs. Bottlerocket ne comprend que les logiciels essentiels à l’exécution des conteneurs, ce qui améliore l’utilisation des ressources, réduit les menaces de sécurité et diminue les frais généraux liés à la gestion. L'AMI Bottlerocket `containerd` inclut`kubelet`, AWS et l'authentificateur IAM. En plus des groupes de nœuds gérés et des nœuds autogérés, Bottlerocket est également pris en charge par [Karpenter](https://karpenter.sh/).

## Avantages
<a name="bottlerocket-advantages"></a>

L'utilisation de Bottlerocket avec votre cluster Amazon EKS présente les bénéfices suivants :
+  **Disponibilité accrue, coûts d’exploitation réduits et gestion simplifiée** : Bottlerocket nécessite moins de ressources, démarre plus rapidement et est moins vulnérable aux menaces de sécurité que les autres distributions Linux. L’empreinte réduite de Bottlerocket permet de réduire les coûts en utilisant moins de ressources de stockage, de calcul et de réseau.
+  **Sécurité améliorée grâce aux mises à jour automatiques du système d'exploitation** – les mises à jour de Bottlerocket sont appliquées en une seule unité et peuvent être annulées si nécessaire. Cela élimine le risque de mises à jour corrompues ou échouées qui peuvent laisser le système dans un état inutilisable. Avec Bottlerocket, les mises à jour de sécurité peuvent être appliquées automatiquement dès qu’elles sont disponibles, de manière peu perturbatrice, et être annulées en cas de défaillance.
+  **Support premium** : à AWS condition que les versions de Bottlerocket sur Amazon EC2 soient couvertes par les mêmes plans de AWS support qui couvrent également AWS des services tels qu'Amazon, EC2 Amazon EKS et Amazon ECR.

## Considérations
<a name="bottlerocket-considerations"></a>

Tenez compte des éléments suivants lorsque vous utilisez Bottlerocket pour votre type d’AMI :
+ Bottlerocket prend en charge les EC2 instances Amazon avec `x86_64` et les processeurs. `arm64`
+ Bottlerocket prend en charge les instances Amazon EC2 avec. GPUs Pour de plus amples informations, veuillez consulter [Utiliser l'accélérateur optimisé pour EKS AMIs pour les instances GPU](ml-eks-optimized-ami.md).
+ Les images Bottlerocket n’incluent pas de serveur SSH ni de shell. Vous pouvez utiliser des méthodes out-of-band d'accès pour autoriser le SSH. Ces approches activent le conteneur d'administration et transmettent certaines étapes de configuration de l'action d'amorçage avec des données utilisateur. Pour plus d'informations, consultez les sections suivantes de [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) OS sur : GitHub
  +  [Exploration](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#exploration) 
  +  [Conteneur d'administration](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) 
  +  [Paramètres Kubernetes](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#kubernetes-settings) 
+ Bottlerocket utilise différents types de conteneur :
  + Par défaut, est activé un [conteneur de contrôle](https://github.com/bottlerocket-os/bottlerocket-control-container). Ce conteneur exécute l'[agent AWS Systems Manager](https://github.com/aws/amazon-ssm-agent) que vous pouvez utiliser pour exécuter des commandes ou démarrer des sessions shell sur des instances Amazon EC2 Bottlerocket. Pour plus d'informations, consultez la section [Configuration du gestionnaire de session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) dans le *guide de l'utilisateur de AWS Systems Manager*.
  + Un conteneur d'administration est activé si une clé SSH est fournie lors de la création du groupe de nœuds. Nous recommandons d'utiliser le conteneur d'administration uniquement pour les scénarios de développement et de test. Nous ne recommandons pas de l’utiliser pour les environnements de production. Pour plus d'informations, consultez [Conteneur d'administration](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) sur GitHub.

## En savoir plus
<a name="bottlerocket-more-information"></a>

Pour plus d'informations sur l'utilisation de Bottlerocket optimisé pour Amazon EKS AMIs, consultez les sections suivantes :
+ [Pour plus de détails sur Bottlerocket, consultez la documentation de Bottlerocket.](https://bottlerocket.dev/en/)
+ Pour les ressources d’informations sur les versions, voir [Récupérer les informations relatives à la version AMI de Bottlerocket](eks-ami-versions-bottlerocket.md).
+ Pour utiliser Bottlerocket avec des groupes de nœuds gérés, consultez [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md).
+ Pour lancer des nœuds Bottlerocket autogérés, consultez [Créer des nœuds Bottlerocket autogérés](launch-node-bottlerocket.md).
+ Pour récupérer la dernière version IDs du Bottlerocket AMIs optimisé pour Amazon EKS, consultez. [Récupérer les ID d’AMI Bottlerocket recommandés](retrieve-ami-id-bottlerocket.md)
+ Pour plus de détails sur la prise en charge en matière de conformité, veuillez consulter la rubrique [Respect des exigences en matière de conformité avec Bottlerocket](bottlerocket-compliance-support.md).

# Récupérer les informations relatives à la version AMI de Bottlerocket
<a name="eks-ami-versions-bottlerocket"></a>

Chaque version de Bottlerocket AMI comprend différentes versions de [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), du noyau Bottlerocket et de [containerd](https://containerd.io/). Les variantes AMI accélérées comprennent également différentes versions du pilote NVIDIA. Vous trouverez ces informations sur la version dans la rubrique [OS](https://bottlerocket.dev/en/os/) de la *documentation Bottlerocket*. À partir de cette page, accédez à la sous-rubrique *Informations sur la version* qui vous intéresse.

La *documentation Bottlerocket* peut parfois être en retard par rapport aux versions disponibles sur GitHub. Vous trouverez la liste des modifications apportées aux dernières versions dans les [publications](https://github.com/bottlerocket-os/bottlerocket/releases) sur GitHub.

# Récupérer les ID d’AMI Bottlerocket recommandés
<a name="retrieve-ami-id-bottlerocket"></a>

Lors du déploiement de nœuds, vous pouvez spécifier un identifiant pour une image Amazon Machine Image (AMI) optimisée pour Amazon EKS pré-créée. Pour récupérer un identifiant AMI qui correspond à la configuration souhaitée, interrogez l’API AWS Systems Manager Parameter Store. L’utilisation de cette API élimine le besoin de rechercher manuellement les identifiants AMI optimisés pour Amazon EKS. Pour plus d’informations, consultez [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Le [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que vous utilisez doit disposer de l'autorisation IAM `ssm:GetParameter` pour récupérer les métadonnées de l'AMI optimisée pour Amazon EKS.

Vous pouvez récupérer l’ID d’image de la dernière AMI Bottlerocket optimisée pour Amazon EKS recommandée à l’aide de la commande AWS CLI suivante, qui utilise le sous-paramètre `image_id`. Si nécessaire, apportez les modifications suivantes à la commande, puis exécutez la commande modifiée :
+ Remplacez *kubernetes-version* par une [platform-version](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) prise en charge.
+ Remplacez *-flavor* par l’une des options suivantes.
  + Supprimez *-flavor* pour les variantes sans GPU.
  + Utilisez *-nvidia* pour les variantes compatibles avec le GPU.
  + Utilisez *-fips* pour les variantes compatibles avec FIPS.
+ Remplacez *architecture* par l’une des options suivantes.
  + Utilisez *x86\$164* pour les instances basées sur `x86`.
  + Utilisez *arm64* pour les instances ARM.
+ Remplacez *region-code* par une [région AWS prise en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) pour laquelle vous voulez obtenir l’ID d’AMI.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-kubernetes-version-flavor/architecture/latest/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Voici un exemple de commande après remplacement des espaces réservés.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-1.31/x86_64/latest/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

L'exemple qui suit illustre un résultat.

```
ami-1234567890abcdef0
```

# Respect des exigences en matière de conformité avec Bottlerocket
<a name="bottlerocket-compliance-support"></a>

Bottlerocket est conforme aux recommandations définies par plusieurs organisations :
+ Un [Référentiel CIS](https://www.cisecurity.org/benchmark/bottlerocket) spécifique a été défini pour Bottlerocket. Dans une configuration par défaut, l’image Bottlerocket applique déjà la majorité des contrôles requis par le profil de configuration CIS de niveau 1. Vous pouvez implémenter les contrôles requis pour un profil de configuration CIS de niveau 2. Pour plus d’informations, consultez [Validation de l’AMI Bottlerocket optimisée pour Amazon EKS par rapport au référentiel CIS](https://aws.amazon.com/blogs/containers/validating-amazon-eks-optimized-bottlerocket-ami-against-the-cis-benchmark) sur le blog AWS.
+ Grâce à son ensemble de fonctionnalités optimisées et à sa surface d’attaque réduite, Bottlerocket nécessite moins de configuration pour satisfaire aux exigences PCI DSS. Le [Référentiel CIS pour Bottlerocket](https://www.cisecurity.org/benchmark/bottlerocket) constitue une excellente référence pour le renforcement de la sécurité et vous aide à respecter les exigences liées aux normes de configuration sécurisée définies dans l’exigence PCI DSS 2.2. Vous pouvez également utiliser [Fluent Bit](https://opensearch.org/blog/technical-post/2022/07/bottlerocket-k8s-fluent-bit/) pour satisfaire aux exigences en matière de journalisation d’audit au niveau du système d’exploitation, conformément à l’exigence PCI DSS 10.2. AWS publie régulièrement de nouvelles images Bottlerocket mises à jour (corrigées) afin de vous aider à répondre à l’exigence PCI DSS 6.2 (pour v3.2.1) et à l’exigence 6.3.3 (pour v4.0).
+ Bottlerocket est une fonctionnalité admissible à HIPAA, autorisée pour les charges de travail réglementées sur Amazon EC2 et Amazon EKS. Pour plus d’informations, consultez la [Référence des services admissibles à HIPAA](https://aws.amazon.com/compliance/hipaa-eligible-services-reference/).
+ Les AMI Bottlerocket sont disponibles et préconfigurées pour utiliser des modules cryptographiques validés FIPS 140-3. Cela inclut le module cryptographique Amazon Linux 2023 Kernel Crypto API et le module cryptographique AWS-LC. Pour de plus amples informations, consultez [Préparez vos nœuds de travail à la norme FIPS avec Bottlerocket FIPS AMIs](bottlerocket-fips-amis.md).

# Préparez vos nœuds de travail à la norme FIPS avec Bottlerocket FIPS AMIs
<a name="bottlerocket-fips-amis"></a>

La norme Federal Information Processing Standard (FIPS) Publication 140-3 est un standard gouvernemental des États-Unis et du Canada qui définit les exigences de sécurité applicables aux modules cryptographiques protégeant des informations sensibles. Bottlerocket facilite l'adhésion à la norme FIPS en proposant un AMIs noyau FIPS.

Ils AMIs sont préconfigurés pour utiliser des modules cryptographiques validés par la norme FIPS 140-3. Cela inclut le module cryptographique de l'API Kernel Crypto d'Amazon Linux 2023 et le module cryptographique AWS-LC.

L'utilisation de Bottlerocket FIPS AMIs rend vos nœuds de travail « prêts pour la norme FIPS », mais pas automatiquement « conformes à la norme FIPS ». Pour plus d'informations, consultez la [norme fédérale de traitement de l'information (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

## Considérations
<a name="_considerations"></a>
+ Si votre cluster utilise des sous-réseaux isolés, le point de terminaison FIPS d’Amazon ECR risque de ne pas être accessible. Cela peut entraîner l’échec de l’amorçage des nœuds. Assurez-vous que votre configuration réseau permet d’accéder aux points de terminaison FIPS nécessaires. *Pour plus d'informations, consultez la section [Accès à une ressource via un point de terminaison VPC de ressource](https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html) dans le AWS PrivateLink Guide.*
+ Si votre cluster utilise un sous-réseau avec [PrivateLink](vpc-interface-endpoints.md), les extractions d'images échoueront car les points de terminaison FIPS Amazon ECR ne sont pas disponibles via. PrivateLink

## Création d’un groupe de nœuds géré avec une AMI Bottlerocket FIPS
<a name="_create_a_managed_node_group_with_a_bottlerocket_fips_ami"></a>

L'AMI FIPS Bottlerocket est disponible en quatre variantes pour prendre en charge vos charges de travail :
+  `BOTTLEROCKET_x86_64_FIPS` 
+  `BOTTLEROCKET_ARM_64_FIPS` 
+  `BOTTLEROCKET_x86_64_NVIDIA_FIPS` 
+  `BOTTLEROCKET_ARM_64_NVIDIA_FIPS` 

Pour créer un groupe de nœuds géré utilisant une AMI Bottlerocket FIPS, choisissez le type d’AMI approprié lors du processus de création. Pour de plus amples informations, veuillez consulter [Création d’un groupe de nœuds gérés pour votre cluster](create-managed-node-group.md).

Pour plus d’informations sur la sélection des variantes compatibles FIPS, consultez [Récupérer les ID d’AMI Bottlerocket recommandés](retrieve-ami-id-bottlerocket.md).

## Désactiver le point de terminaison FIPS pour les régions non prises en charge AWS
<a name="disable_the_fips_endpoint_for_non_supported_shared_aws_regions"></a>

Les systèmes FIPS Bottlerocket AMIs sont pris en charge directement aux États-Unis d'Amérique, y compris dans les régions (américaines). AWS GovCloud Pour AWS les régions où AMIs ils sont disponibles mais ne sont pas directement pris en charge, vous pouvez toujours les utiliser AMIs en créant un groupe de nœuds gérés avec un modèle de lancement.

Les AMI Bottlerocket FIPS s’appuient sur le point de terminaison FIPS d’Amazon ECR lors de l’amorçage, mais ce point de terminaison n’est généralement pas disponible en dehors des États-Unis. Pour utiliser l'AMI pour son noyau FIPS dans les AWS régions où le point de terminaison Amazon ECR FIPS n'est pas disponible, procédez comme suit pour désactiver le point de terminaison FIPS :

1. Créez un nouveau fichier de configuration avec le contenu ci-dessous, ou ajoutez-le à votre fichier de configuration existant.

```
[default]
use_fips_endpoint=false
```

1. Encodez le contenu du fichier au format Base64.

1. Dans la section `UserData` de votre modèle de lancement, ajoutez la chaîne encodée ci-dessus au format TOML :

```
[settings.aws]
config = "<your-base64-encoded-string>"
```

Pour les autres paramètres, consultez la [description des paramètres de Bottlerocket sur](https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#description-of-settings). GitHub

Voici un exemple de `UserData` d’un modèle de lancement :

```
[settings]
motd = "Hello from eksctl!"
[settings.aws]
config = "W2RlZmF1bHRdCnVzZV9maXBzX2VuZHBvaW50PWZhbHNlCg==" # Base64-encoded string.
[settings.kubernetes]
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
cluster-name = "<cluster-name>"
...<other-settings>
```

Pour plus d’informations sur la création d’un modèle de lancement contenant des données utilisateur, consultez [Personnaliser les nœuds gérés à l’aide de modèles de lancement](launch-templates.md).

# Créer des nœuds avec des AMI Ubuntu Linux optimisées
<a name="eks-partner-amis"></a>

Canonical a établi un partenariat avec Amazon EKS pour créer des AMI de nœuds que vous pouvez utiliser dans vos clusters.

 [Canonical](https://www.canonical.com/) fournit une image du système d'exploitation Kubernetes Node conçue pour l'utilisateur. Cette image Ubuntu réduite est optimisée pour Amazon EKS et inclut le noyau AWS personnalisé qui est développé conjointement avec AWS. Pour plus d’informations, consultez [Ubuntu sur Amazon Elastic Kubernetes Service (EKS)](https://cloud-images.ubuntu.com/aws-eks/) et [Créer des nœuds Ubuntu Linux autogérés](launch-node-ubuntu.md). Pour plus d’informations sur la prise en charge, consultez la section [Logiciels tiers](https://aws.amazon.com/premiumsupport/faqs/#Third-party_software) de *Questions fréquentes sur AWS Premium Support*.

# Créez des nœuds avec Windows optimisé AMIs
<a name="eks-optimized-windows-ami"></a>

Les versions optimisées pour Windows Amazon EKS AMIs sont basées sur Windows Server 2019, Windows Server 2022 et Windows Server 2025. Elles sont configurées pour servir d'image de base pour les nœuds Amazon EKS. Par défaut, ils AMIs incluent les composants suivants :
+  [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 
+  [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) 
+  [AWS Authentificateur IAM pour Kubernetes](https://github.com/kubernetes-sigs/aws-iam-authenticator) 
+  [csi-proxy](https://github.com/kubernetes-csi/csi-proxy) 
+  [containerd](https://containerd.io/) 

**Note**  
Vous pouvez suivre les événements de sécurité ou de confidentialité pour Windows Server à l'aide du [Guide de mise à jour de sécurité Microsoft](https://portal.msrc.microsoft.com/en-us/security-guidance).

Amazon EKS propose AMIs des offres optimisées pour les conteneurs Windows dans les variantes suivantes :
+ AMI Windows Server 2019 Core optimisée pour Amazon EKS
+ AMI Windows Server 2019 Full optimisée pour Amazon EKS
+ AMI Windows Server 2022 Core optimisée pour Amazon EKS
+ AMI Windows Server 2022 Full optimisée pour Amazon EKS
+ AMI principale pour Windows Server 2025 optimisée pour Amazon EKS
+ AMI complète pour Windows Server 2025 optimisée pour Amazon EKS

**Important**  
L’AMI Windows Server 20H2 Core optimisée pour Amazon EKS est obsolète. Aucune nouvelle version de cette AMI ne sera publiée.
Pour garantir que vous disposez des dernières mises à jour de sécurité par défaut, Amazon EKS gère Windows optimisé au cours AMIs des 4 derniers mois. Chaque nouvelle AMI sera disponible pendant 4 mois à compter de la date de publication initiale. Après cette période, AMIs les anciens fichiers deviennent privés et ne sont plus accessibles. Nous vous encourageons à utiliser la dernière version AMIs afin d'éviter les failles de sécurité et de perdre l'accès aux versions plus anciennes AMIs qui ont atteint la fin de leur durée de vie prise en charge. Bien que nous ne puissions pas garantir que nous puissions fournir un accès à AMIs ce qui a été rendu privé, vous pouvez demander l'accès en déposant un ticket auprès du AWS Support.

## Calendrier des versions
<a name="windows-ami-release-calendar"></a>

Le tableau suivant répertorie les dates de publication et de fin de support pour les versions Windows sur Amazon EKS. Si une date de fin est vide, c’est parce que la version est toujours prise en charge.


| Version Windows | Version d'Amazon EKS | Fin de support pour Amazon EKS | 
| --- | --- | --- | 
|  Windows Server 2025 Core  |  27/01/2026  |  | 
|  Windows Server 2025 complet  |  27/01/2026  |  | 
|  Windows Server 2022 Core  |  17 octobre 2022  |  | 
|  Windows Server 2022 Full  |  17 octobre 2022  |  | 
|  Windows Server 20H2 Core  |  8/12/2021  |  09/08/2022  | 
|  Windows Server 2004 Core  |  19/08/2020  |  14/12/2021  | 
|  Windows Server 2019 Core  |  07/10/2019  |  | 
|  Windows Server 2019 Full  |  07/10/2019  |  | 
|  Windows Server 1909 Core  |  07/10/2019  |  8/12/2020  | 

## Paramètres de configuration du script d'amorçage
<a name="bootstrap-script-configuration-parameters"></a>

Lorsque vous créez un nœud Windows, un script sur le nœud permet la configuration de différents paramètres. En fonction de votre configuration, ce script peut être trouvé sur le nœud à un emplacement similaire à :`C:\Program Files\Amazon\EKS\Start-EKSBootstrap.ps1`. Vous pouvez indiquer des valeurs de paramètres personnalisées en les spécifiant comme arguments dans le script d'amorçage. Par exemple, vous pouvez mettre à jour les données utilisateur dans le modèle de lancement. Pour de plus amples informations, veuillez consulter [Données utilisateur Amazon EC2](launch-templates.md#launch-template-user-data).

Le script comprend les paramètres de ligne de commande suivants :
+  `-EKSClusterName` : spécifie le nom du cluster Amazon EKS que ce composant master doit rejoindre.
+  `-KubeletExtraArgs` : spécifie des arguments supplémentaires pour `kubelet` (facultatif).
+  `-KubeProxyExtraArgs` : spécifie des arguments supplémentaires pour `kube-proxy` (facultatif).
+  `-APIServerEndpoint` : spécifie le point de terminaison du serveur d'API de cluster Amazon EKS (facultatif). Uniquement valable lorsqu'il est utilisé avec `-Base64ClusterCA`. Évite d'appeler `Get-EKSCluster`.
+  `-Base64ClusterCA` : spécifie le contenu de l'autorité de certification du cluster codée en base64 (facultatif). Uniquement valable lorsqu'il est utilisé avec `-APIServerEndpoint`. Évite d'appeler `Get-EKSCluster`.
+  `-DNSClusterIP` : remplace l'adresse IP à utiliser pour les requêtes DNS au sein du cluster (facultatif). La valeur par défaut est `10.100.0.10` ou `172.20.0.10` en fonction de l'adresse IP de l'interface principale.
+  `-ServiceCIDR` : remplace la plage d’adresses IP du service Kubernetes à partir de laquelle les services du cluster sont adressés. La valeur par défaut est `172.20.0.0/16` ou `10.100.0.0/16` en fonction de l'adresse IP de l'interface principale.
+  `-ExcludedSnatCIDRs`— Liste des adresses `IPv4` CIDRs à exclure de la traduction des adresses réseau source (SNAT). Cela signifie que l’adresse IP privée du pod, qui est adressable par VPC, ne serait pas traduite en adresse IP de l’adresse principale `IPv4` de l’ENI de l’instance pour le trafic sortant. Par défaut, le CIDR `IPv4` du VPC pour le nœud Amazon EKS Windows est ajouté. La spécification CIDRs de ce paramètre exclut également le paramètre spécifié CIDRs. Pour de plus amples informations, veuillez consulter [Activer l’accès Internet sortant pour les Pods](external-snat.md).

En plus des paramètres de la ligne de commande, vous pouvez également spécifier certains paramètres de la variable d'environnement. Lorsqu'un paramètre de ligne de commande est spécifié, il est prioritaire sur la variable d'environnement correspondante. La ou les variables d'environnement doivent être définies au niveau de la machine (ou du système), car le script d'amorçage ne lira que les variables au niveau de la machine.

Le script prend en compte les variables d'environnement suivantes :
+  `SERVICE_IPV4_CIDR`— Reportez-vous au paramètre de la ligne de commande `ServiceCIDR` pour la définition.
+  `EXCLUDED_SNAT_CIDRS`— Il doit s'agir d'une chaîne de caractères séparée par des virgules. Reportez-vous au paramètre de la ligne de commande `ExcludedSnatCIDRs` pour la définition.

### Prise en charge de l’authentification gMSA
<a name="ad-and-gmsa-support"></a>

Les pods Windows Amazon EKS autorisent différents types d’authentification de compte de service géré de groupe (gMSA).
+ Amazon EKS prend en charge les identités de domaine Active Directory à des fins d’authentification. Pour plus d'informations sur les GMSA joints à un domaine, consultez Windows [Authentication on Amazon EKS Windowspods sur le](https://aws.amazon.com/blogs/containers/windows-authentication-on-amazon-eks-windows-pods) blog. AWS 
+ Amazon EKS propose un plug-in qui permet aux nœuds non-domain-joined Windows de récupérer les informations d'identification GMSA à l'aide d'une identité utilisateur portable. Pour plus d'informations sur les GMSA sans domaine, [consultez Domainless Windows Authentication for Amazon EKS](https://aws.amazon.com/blogs/containers/domainless-windows-authentication-for-amazon-eks-windows-pods) Windowspods sur le blog. AWS 

## Images de conteneur en cache
<a name="windows-cached-container-images"></a>

Certaines images de conteneur AMIs optimisées pour Amazon EKS pour Windows sont mises en cache pour l'`containerd`exécution. Les images de conteneur sont mises en cache lors de la création personnalisée à AMIs l'aide de composants de génération gérés par Amazon. Pour de plus amples informations, veuillez consulter [Utilisation du composant de génération géré par Amazon](eks-custom-ami-windows.md#custom-windows-ami-build-component).

Les images de conteneur mises en cache suivantes sont destinées à l'exécution `containerd` :
+  `amazonaws.com/eks/pause-windows` 
+  `mcr.microsoft.com/windows/nanoserver` 
+  `mcr.microsoft.com/windows/servercore` 

## En savoir plus
<a name="windows-more-information"></a>

Pour plus d'informations sur l'utilisation de Windows optimisé pour Amazon EKS AMIs, consultez les sections suivantes :
+ Pour en savoir plus sur l'exécution des charges de travail sur un système Windows accéléré optimisé pour Amazon EKS AMIs, consultez[Exécutez des conteneurs accélérés par GPU (Windows sur EC2 G-Series)](ml-eks-windows-optimized-ami.md).
+ Pour utiliser Windows avec des groupes de nœuds gérés, consultez [Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés](managed-node-groups.md).
+ Pour lancer des nœuds Windows autogérés, veuillez consulter la rubrique [Créer des nœuds Microsoft Windows autogérés](launch-windows-workers.md).
+ Pour plus d'informations sur la version, consultez [Récupérez les informations relatives à la version des AMI Windows](eks-ami-versions-windows.md).
+ Pour accéder à la dernière version IDs de Windows optimisée pour Amazon EKS AMIs, consultez[Récupérez l'AMI Microsoft Windows recommandée IDs](retrieve-windows-ami-id.md).
+ Pour utiliser Amazon EC2 Image Builder afin de créer des fenêtres personnalisées optimisées pour Amazon EKS AMIs, consultez. [Créer une AMI Windows personnalisée avec Image Builder](eks-custom-ami-windows.md)
+ Pour connaître les meilleures pratiques, consultez la section [Gestion des AMI Windows optimisées pour Amazon EKS](https://aws.github.io/aws-eks-best-practices/windows/docs/ami/) dans le *Guide des meilleures pratiques EKS*.

# Créer des nœuds Windows Server 2022 autogérés avec `eksctl`
<a name="self-managed-windows-server-2022"></a>

Vous pouvez utiliser le fichier `test-windows-2022.yaml` suivant comme référence pour la création de nœuds Windows Server 2022 autogérés. Remplacez chaque *example value* par vos propres valeurs.

**Note**  
Vous devez utiliser `eksctl` version [0.116.0](https://github.com/weaveworks/eksctl/releases/tag/v0.116.0) ou ultérieure pour exécuter des nœuds Windows Server 2022 autogérés.

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: windows-2022-cluster
  region: region-code
  version: '1.35'

nodeGroups:
  - name: windows-ng
    instanceType: m5.2xlarge
    amiFamily: WindowsServer2022FullContainer
    volumeSize: 100
    minSize: 2
    maxSize: 3
  - name: linux-ng
    amiFamily: AmazonLinux2
    minSize: 2
    maxSize: 3
```

Les groupes de nœuds peuvent ensuite être créés à l'aide de la commande suivante.

```
eksctl create cluster -f test-windows-2022.yaml
```

# Récupérez les informations relatives à la version des AMI Windows
<a name="eks-ami-versions-windows"></a>

[Cette rubrique répertorie les versions de Windows optimisé pour Amazon EKS AMIs et les versions correspondantes de [kubelet, containerd et](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)[csi-proxy](https://containerd.io/).](https://github.com/kubernetes-csi/csi-proxy)

Les métadonnées d'AMI optimisées pour Amazon EKS, notamment l'ID d'AMI, peuvent être extraites par programmation pour chaque variante. Pour de plus amples informations, veuillez consulter [Récupérez l'AMI Microsoft Windows recommandée IDs](retrieve-windows-ami-id.md).

AMIs sont versionnés en fonction de la version de Kubernetes et de la date de sortie de l'AMI au format suivant :

```
k8s_major_version.k8s_minor_version-release_date
```

**Note**  
Les groupes de nœuds gérés par Amazon EKS sont compatibles avec les versions de novembre 2022 et ultérieures de Windows AMIs.

Pour recevoir des notifications concernant toutes les modifications apportées aux fichiers sources de cette page de documentation spécifique, vous pouvez vous abonner à l’URL suivante à l’aide d’un lecteur RSS :

```
https://github.com/awsdocs/amazon-eks-user-guide/commits/mainline/latest/ug/nodes/eks-ami-versions-windows.adoc.atom
```

## AMI principale optimisée pour Windows Server 2025 pour Amazon EKS
<a name="eks-ami-versions-windows-2025-core"></a>

Les tableaux suivants répertorient les versions actuelles et précédentes de l'AMI Windows Server 2025 Core optimisée pour Amazon EKS.

**Example**  


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## AMI complète optimisée pour Windows Server 2025 pour Amazon EKS
<a name="eks-ami-versions-windows-2025-full"></a>

Les tableaux suivants répertorient les versions actuelles et précédentes de l'AMI complète Windows Server 2025 optimisée pour Amazon EKS.

**Example**  


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## AMI Windows Server 2022 Core optimisée pour Amazon EKS
<a name="eks-ami-versions-windows-2022-core"></a>

Les tableaux suivants répertorient les versions actuelles et précédentes de l’AMI Windows Server 2022 Core optimisée pour Amazon EKS.

**Example**  


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Mise à niveau `containerd` vers `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`. Mise à niveau `kubelet` vers `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Correction d’un bug qui entraînait la suppression incorrecte de l’image de pause par le processus de récupération de mémoire `kubelet`.  | 
|   `1.29-2024.01.11`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  Windows Update autonome exclu [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)sur Windows Server 2022 Core AMIs. La base de connaissances s'applique uniquement aux installations Windows avec une partition WinRE distincte, qui ne sont incluses dans aucun de nos systèmes Windows AMIs optimisés pour Amazon EKS.  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. Mise à niveau `kubelet` vers `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.25`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.11`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  Windows Update autonome exclu [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)sur Windows Server 2022 Core AMIs. La base de connaissances s'applique uniquement aux installations Windows avec une partition WinRE distincte, qui ne sont incluses dans aucun de nos systèmes Windows AMIs optimisés pour Amazon EKS.  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.18`. Ajout de nouvelles [variables d'environnement pour le script d'amorçage](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` et `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Correction d'une [recommandation de sécurité](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) dans `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## AMI Windows Server 2022 Full optimisée pour Amazon EKS
<a name="eks-ami-versions-windows-2022-full"></a>

Les tableaux suivants répertorient les versions actuelles et précédentes de l’AMI complète Windows Server 2022 optimisée pour Amazon EKS.

**Example**  


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Mise à niveau `containerd` vers `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau de `containrd` vers `1.7.27`   | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.01`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `contianerd` vers `1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`. Mise à niveau `kubelet` vers `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Correction d’un bug qui entraînait la suppression incorrecte de l’image de pause par le processus de récupération de mémoire `kubelet`.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. Mise à niveau `kubelet` vers `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.25`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.18`. Ajout de nouvelles [variables d'environnement pour le script d'amorçage](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` et `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Correction d'une [recommandation de sécurité](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) dans `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## AMI Windows Server 2019 Core optimisée pour Amazon EKS
<a name="eks-ami-versions-windows-2019-core"></a>

Les tableaux suivants répertorient les versions actuelles et précédentes de l’AMI Windows Server 2019 Core optimisée pour Amazon EKS.

**Example**  


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Mise à niveau `containerd` vers `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.4`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.30-2025-02-15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`. Mise à niveau `kubelet` vers `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Correction d’un bug qui entraînait la suppression incorrecte de l’image de pause par le processus de récupération de mémoire `kubelet`.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. Mise à niveau `kubelet` vers `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.25`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.18`. Ajout de nouvelles [variables d'environnement pour le script d'amorçage](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` et `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Correction d'une [recommandation de sécurité](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) dans `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## AMI Windows Server 2019 Full optimisée pour Amazon EKS
<a name="eks-ami-versions-windows-2019-full"></a>

Les tableaux suivants répertorient les versions actuelles et précédentes de l’AMI complète Windows Server 2019 optimisée pour Amazon EKS.

**Example**  


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Mise à niveau `containerd` vers `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`. Mise à niveau `kubelet` vers `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Correction d’un bug qui entraînait la suppression incorrecte de l’image de pause par le processus de récupération de mémoire `kubelet`.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Version d'AMI | version kubelet | version de containerd | version csi-proxy | Notes de mise à jour | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Le plug-in GMSA modifié enregistre les événements Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  Mise à niveau `containerd` vers `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Mise à niveau `containerd` vers `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Comprend des correctifs pour `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.28`. Mise à niveau `kubelet` vers `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.25`. CNI reconstruit et `csi-proxy` utilise `golang 1.22.1`.  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Comprend des correctifs pour `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Mise à niveau `containerd` vers `1.6.18`. Ajout de nouvelles [variables d'environnement pour le script d'amorçage](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` et `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Correction d'une [recommandation de sécurité](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) dans `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

# Récupérez l'AMI Microsoft Windows recommandée IDs
<a name="retrieve-windows-ami-id"></a>

Lors du déploiement de nœuds, vous pouvez spécifier un identifiant pour une image Amazon Machine Image (AMI) optimisée pour Amazon EKS pré-créée. Pour récupérer un ID d'AMI correspondant à la configuration souhaitée, interrogez l'API du magasin de paramètres AWS Systems Manager. L'utilisation de cette API élimine le besoin de rechercher manuellement l'AMI optimisée pour Amazon EKS IDs. Pour de plus amples informations, veuillez consulter [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Le [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que vous utilisez doit disposer de l'autorisation IAM `ssm:GetParameter` pour récupérer les métadonnées de l'AMI optimisée pour Amazon EKS.

Vous pouvez récupérer l’ID d’image de la dernière AMI Windows optimisée Amazon EKS recommandée à l’aide de la commande suivante, qui utilise le sous-paramètre `image_id`. Si nécessaire, apportez les modifications suivantes à la commande, puis exécutez la commande modifiée :
+ *release*Remplacez-le par l'une des options suivantes.
  + À utiliser *2025* pour Windows Server 2025.
  + À utiliser *2022* pour Windows Server 2022.
  + À utiliser *2019* pour Windows Server 2019.
+ *installation-option*Remplacez-le par l'une des options suivantes. Pour plus d’informations, consultez [Qu’est-ce que l’option d’installation Server Core dans Windows Server](https://learn.microsoft.com/en-us/windows-server/administration/server-core/what-is-server-core).
  + *Core*À utiliser pour une installation minimale avec une surface d'attaque plus petite.
  + *Full*À utiliser pour inclure l'expérience de bureau Windows.
+ *kubernetes-version*Remplacez-le par une version de [plate-forme](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) prise en charge.
+ *region-code*Remplacez-le par une [AWS région prise en charge par Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) pour laquelle vous souhaitez obtenir l'ID AMI.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-release-English-installation-option-EKS_Optimized-kubernetes-version/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Voici un exemple de commande après remplacement des espaces réservés.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-EKS_Optimized-k8s-n-2/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

L'exemple qui suit illustre un résultat.

```
ami-1234567890abcdef0
```

# Créer une AMI Windows personnalisée avec Image Builder
<a name="eks-custom-ami-windows"></a>

Vous pouvez utiliser EC2 Image Builder pour créer des fenêtres personnalisées optimisées pour Amazon EKS AMIs avec l'une des options suivantes :
+  [Utilisation d’une AMI optimisée pour Amazon EKS comme base](#custom-windows-ami-as-base) 
+  [Utilisation du composant de compilation géré par Amazon](#custom-windows-ami-build-component) 

Vous devez créer votre propre recette Image Builder avec les deux méthodes. Pour plus d'informations, veuillez consulter la rubrique [Créer une nouvelle version d'une recette d'image](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html) dans le Guide de l'utilisateur Image Builder.

**Important**  
Les composants **gérés par Amazon** suivants pour `eks` incluent des correctifs pour `CVE-2024-5321`.  
 `1.28.2` et ultérieures
 `1.29.2` et ultérieures
 `1.30.1` et ultérieures
Toutes les versions pour Kubernetes 1.31 et versions supérieures

## Utilisation d’une AMI Windows optimisée pour Amazon EKS comme base
<a name="custom-windows-ami-as-base"></a>

Cette option est la méthode recommandée pour créer votre Windows personnalisé AMIs. Les fenêtres optimisées pour Amazon EKS que AMIs nous proposons sont mises à jour plus fréquemment que le composant de compilation géré par Amazon.

1. Lancez une nouvelle recette Image Builder.

   1. Ouvrez la console EC2 Image Builder à l'adresse https://console.aws.amazon.com /imagebuilder.

   1. Dans le panneau de navigation de gauche, choisissez **Recettes d'image**.

   1. Choisissez **Créer une recette d'image**.

1. Dans la section **Détails de la recette**, saisissez un **Nom** et une **Version**.

1. Spécifiez l’ID de l’AMI Windows optimisée pour Amazon EKS dans la section **Image de base**.

   1. Choisissez **Saisir un ID d'AMI personnalisé**.

   1. Récupérez l’ID AMI correspondant à la version du système d’exploitation Windows dont vous avez besoin. Pour de plus amples informations, veuillez consulter [Récupérez l'AMI Microsoft Windows recommandée IDs](retrieve-windows-ami-id.md).

   1. Saisissez l'**ID d'AMI** personnalisé. Si l'ID d'AMI est introuvable, assurez-vous que la AWS région correspondant à l'ID d'AMI correspond à la AWS région affichée dans le coin supérieur droit de votre console.

1. (Facultatif) Pour obtenir les dernières mises à jour de sécurité, ajoutez le composant `update-windows` dans la section **Composants de génération**.

   1. Dans la liste déroulante située à droite du champ de recherche **Rechercher des composants par nom**, sélectionnez **Géré par Amazon**.

   1. Dans le champ de recherche **Rechercher des composants par nom**, saisissez `update-windows`.

   1. Cochez la case du résultat de recherche ** `update-windows` **. Ce composant comprend les derniers correctifs Windows pour le système d’exploitation.

1. Complétez les entrées de recette d'image restantes avec les configurations requises. Pour plus d'informations, veuillez consulter la rubrique [Créer une nouvelle version d'une recette d'image (console)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) dans le Guide de l'utilisateur Image Builder.

1. Choisissez **Créer une recette**.

1. Utilisez la nouvelle recette d'image dans un pipeline d'images nouveau ou existant. Une fois que votre pipeline d'images s'exécute correctement, votre AMI personnalisée sera répertoriée en tant qu'image de sortie et sera prête à être utilisée. Pour plus d'informations, voir [Création d'un pipeline d'images à l'aide de l'assistant de console EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Utilisation du composant de génération géré par Amazon
<a name="custom-windows-ami-build-component"></a>

Lorsque l’utilisation d’une AMI Windows optimisée pour Amazon EKS comme base n’est pas viable, vous pouvez utiliser à la place le composant de build géré par Amazon. Cette option peut être en retard par rapport aux versions Kubernetes les plus récentes prises en charge.

1. Lancez une nouvelle recette Image Builder.

   1. Ouvrez la console EC2 Image Builder à l'adresse https://console.aws.amazon.com /imagebuilder.

   1. Dans le panneau de navigation de gauche, choisissez **Recettes d'image**.

   1. Choisissez **Créer une recette d'image**.

1. Dans la section **Détails de la recette**, saisissez un **Nom** et une **Version**.

1. Déterminez l'option que vous utiliserez pour créer votre AMI personnalisée dans la section **Image de base** :
   +  **Sélectionnez les images gérées** : choisissez **Windows** pour votre **Système d'exploitation (OS) de l'image**. Choisissez ensuite l'une des options suivantes pour **Origine de l'image**.
     +  **Démarrage rapide (géré par Amazon)** : dans le menu déroulant **Nom de l’image**, choisissez une version Windows Server prise en charge par Amazon EKS. Pour de plus amples informations, veuillez consulter [Créez des nœuds avec Windows optimisé AMIs](eks-optimized-windows-ami.md).
     +  **Mes images** : pour **Nom de l'image**, sélectionnez l'ARN de votre propre image avec votre propre licence. Les composants Amazon EKS ne peuvent pas déjà être installés sur l’image que vous fournissez.
   +  **Saisir l'ID d'AMI personnalisée** : pour l'ID D'AMI, saisissez l'ID de votre AMI avec votre propre licence. Les composants Amazon EKS ne peuvent pas déjà être installés sur l’image que vous fournissez.

1. Dans la section **Composants de génération – Windows**, procédez comme suit :

   1. Dans la liste déroulante située à droite du champ de recherche **Rechercher des composants par nom**, sélectionnez **Géré par Amazon**.

   1. Dans le champ de recherche **Rechercher des composants par nom**, saisissez `eks`.

   1. Cochez la case du résultat de recherche ** `eks-optimized-ami-windows` **, même si le résultat renvoyé peut ne pas être la version que vous voulez.

   1. Dans le champ de recherche **Rechercher des composants par nom**, saisissez `update-windows`.

   1. Cochez la case du résultat de recherche **update-windows**. Ce composant comprend les derniers correctifs Windows pour le système d’exploitation.

1. Dans la section **Composants sélectionnés**, procédez comme suit :

   1. Choisissez **Options de gestion des versions** pour ** `eks-optimized-ami-windows` **.

   1. Choisissez **Spécifier la version du composant**.

   1. Dans le champ **Version du composant**, saisissez*version.x*, en *version* remplaçant par une version Kubernetes prise en charge. La saisie *x* d'une partie du numéro de version indique que vous devez utiliser la dernière version du composant qui correspond également à la partie de la version que vous avez explicitement définie. Faites attention à la sortie de la console, car elle vous indiquera si la version souhaitée est disponible en tant que composant géré. Gardez à l’esprit que les versions les plus récentes de Kubernetes peuvent ne pas être disponibles pour le composant de compilation. Pour plus d'informations sur les versions disponibles, consultez [Récupération d'informations sur les versions des composants `eks-optimized-ami-windows`](#custom-windows-ami-component-versions).

1. Complétez les entrées de recette d'image restantes avec les configurations requises. Pour plus d'informations, veuillez consulter la rubrique [Créer une nouvelle version d'une recette d'image (console)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) dans le Guide de l'utilisateur Image Builder.

1. Choisissez **Créer une recette**.

1. Utilisez la nouvelle recette d'image dans un pipeline d'images nouveau ou existant. Une fois que votre pipeline d'images s'exécute correctement, votre AMI personnalisée sera répertoriée en tant qu'image de sortie et sera prête à être utilisée. Pour plus d'informations, voir [Création d'un pipeline d'images à l'aide de l'assistant de console EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Récupération d'informations sur les versions des composants `eks-optimized-ami-windows`
<a name="custom-windows-ami-component-versions"></a>

Vous pouvez récupérer des informations spécifiques concernant ce qui est installé avec chaque composant. Par exemple, vous pouvez vérifier quelle version de `kubelet` est installée. Les composants sont soumis à des tests fonctionnels sur les versions des systèmes d’exploitation Windows prises en charge par Amazon EKS. Pour de plus amples informations, veuillez consulter [Calendrier des versions](eks-optimized-windows-ami.md#windows-ami-release-calendar). Toutes les autres versions du système d’exploitation Windows qui ne sont pas répertoriées comme prises en charge ou qui ont atteint la fin de leur prise en charge peuvent ne pas être compatibles avec le composant.

1. Ouvrez la console EC2 Image Builder à l'adresse https://console.aws.amazon.com /imagebuilder.

1. Dans le panneau de navigation de gauche, sélectionnez **Composants**.

1. Dans la liste déroulante située à droite du champ de recherche **Rechercher des composants par nom**, modifiez **M'appartenant** en **Démarrage rapide (géré par Amazon)**.

1. Dans la case **Rechercher des composants par nom**, saisissez `eks`.

1. (Facultatif) Si vous utilisez une version récente, triez la colonne **Version** par ordre décroissant en la choisissant deux fois.

1. Choisissez le lien ** `eks-optimized-ami-windows` ** avec la version souhaitée.

La **Description** de la page qui s'affiche contient les informations spécifiques.

# Détectez les problèmes de santé des nœuds et activez la réparation automatique des nœuds
<a name="node-health"></a>

L'état de santé du nœud fait référence à l'état opérationnel et à la capacité d'un nœud Kubernetes à exécuter efficacement les charges de travail. Un nœud sain maintient la connectivité réseau attendue, dispose de ressources de calcul et de stockage suffisantes et peut exécuter des charges de travail sans interruption.

Pour aider à maintenir des nœuds sains dans les clusters EKS, EKS propose l'*agent de surveillance des nœuds* et la *réparation automatique des nœuds*. Ces fonctionnalités sont automatiquement activées avec le calcul en mode automatique d'EKS. Vous pouvez également utiliser la réparation automatique des nœuds avec les groupes de nœuds gérés par EKS et Karpenter, et vous pouvez utiliser l'agent de surveillance des nœuds EKS avec tous les types de calcul EKS, à l'exception de AWS Fargate. L'agent de surveillance des nœuds EKS et la réparation automatique des nœuds sont plus efficaces lorsqu'ils sont utilisés ensemble, mais ils peuvent également être utilisés individuellement dans les clusters EKS.

**Important**  
L’*agent de surveillance des nœuds* et la *réparation automatique des nœuds* ne sont disponibles que sous Linux. Ces fonctionnalités ne sont pas disponibles sous Windows.

## Agent de surveillance des nœuds
<a name="node-monitoring-agent"></a>

L'agent de surveillance des nœuds EKS lit les journaux des nœuds pour détecter les problèmes de santé. Il analyse les journaux pour détecter les défaillances et affiche des informations sur l'état de santé des nœuds. Pour chaque catégorie de problèmes détectés, l'agent applique un nœud dédié `NodeCondition` aux nœuds de travail. Pour obtenir des informations détaillées sur les problèmes de santé des nœuds détectés par l'agent de surveillance des nœuds EKS, consultez[Détectez les problèmes de santé des nœuds avec l'agent de surveillance des nœuds EKS](node-health-nma.md).

Le calcul en mode automatique EKS inclut l'agent de surveillance des nœuds. Pour les autres types de calcul EKS, vous pouvez ajouter l'agent de surveillance des nœuds en tant que module complémentaire EKS ou vous pouvez le gérer à l'aide d'outils Kubernetes tels que Helm. Pour de plus amples informations, veuillez consulter [Configuration de l'agent de surveillance des nœuds](node-health-nma.md#node-monitoring-agent-configure).

Avec l'agent de surveillance des nœuds EKS, les catégories suivantes de problèmes de santé des nœuds apparaissent sous forme de problèmes liés aux nœuds. Notez que `Ready``DiskPressure`, et `MemoryPressure` sont des conditions de nœud Kubernetes standard qui apparaissent même sans l'agent de surveillance des nœuds EKS.


| État du nœud | Description | 
| --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady indique si le matériel accéléré (GPU, Neuron) du nœud fonctionne correctement.  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady indique si le moteur d'exécution du conteneur (containerd, etc.) fonctionne correctement et est capable d'exécuter des conteneurs.  | 
|  DiskPressure  |  DiskPressure est une condition standard de Kubernetes indiquant que le nœud est soumis à une pression sur le disque (espace disque insuffisant ou E/S élevées).  | 
|  KernelReady  |  KernelReady indique si le noyau fonctionne correctement sans erreur critique, panique ou épuisement des ressources.  | 
|  MemoryPressure  |  MemoryPressure est une condition standard de Kubernetes indiquant que le nœud est soumis à une pression de mémoire (faible mémoire disponible).  | 
|  NetworkingReady  |  NetworkingReady indique si la pile réseau du nœud fonctionne correctement (interfaces, routage, connectivité).  | 
|  StorageReady  |  StorageReady indique si le sous-système de stockage du nœud fonctionne correctement (disques, systèmes de fichiers, E/S).  | 
|  Prêt  |  Prêt est la condition standard de Kubernetes indiquant que le nœud est sain et prêt à accepter des pods.  | 

## Réparation automatique des nœuds
<a name="node-auto-repair"></a>

La réparation automatique des nœuds EKS surveille en permanence l'état des nœuds, réagit aux problèmes détectés et remplace ou redémarre les nœuds lorsque cela est possible. Cela améliore la fiabilité du cluster avec une intervention manuelle minimale et contribue à réduire les temps d'arrêt des applications.

À elle seule, la réparation automatique des nœuds EKS réagit aux `Ready` conditions du kubelet, à tous les objets de nœud supprimés manuellement et aux instances de groupes de nœuds gérés par EKS qui ne parviennent pas à rejoindre le cluster. Lorsque la réparation automatique des nœuds EKS est activée avec l'agent de surveillance des nœuds installé, la réparation automatique des nœuds EKS réagit aux conditions supplémentaires des nœuds : `AcceleratedHardwareReady` `ContainerRuntimeReady``KernelReady`,`NetworkingReady`,, et`StorageReady`.

La réparation automatique des nœuds EKS ne réagit pas à Kubernetes standard ni `PIDPressure` aux `DiskPressure` conditions `MemoryPressure` des nœuds. Ces conditions indiquent souvent des problèmes liés au comportement des applications, à la configuration de la charge de travail ou aux limites de ressources plutôt que des défaillances au niveau des nœuds, ce qui complique la détermination d'une action de réparation par défaut appropriée. Dans ces scénarios, les charges de travail sont soumises au comportement d'éviction par pression des [nœuds](https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction) Kubernetes.

Pour plus d'informations sur la réparation automatique des nœuds EKS, consultez[Réparer automatiquement les nœuds dans les clusters EKS](node-repair.md).

**Topics**

# Détectez les problèmes de santé des nœuds avec l'agent de surveillance des nœuds EKS
<a name="node-health-nma"></a>

Cette rubrique détaille les problèmes de santé des nœuds détectés par l'agent de surveillance des nœuds EKS, la manière dont ces problèmes apparaissent sous forme de conditions ou d'événements sur les nœuds, et comment configurer l'agent de surveillance des nœuds.

L'agent de surveillance des nœuds EKS peut être utilisé avec ou sans réparation automatique des nœuds EKS. Pour plus d'informations sur la réparation automatique des nœuds EKS, consultez[Réparer automatiquement les nœuds dans les clusters EKS](node-repair.md).

Le code source de l'agent de surveillance des nœuds EKS est publié GitHub dans le eks-node-monitoring-agent référentiel [aws/](https://github.com/aws/eks-node-monitoring-agent).

## Problèmes d’état du nœud
<a name="node-health-issues"></a>

Les tableaux suivants décrivent les problèmes d’état des nœuds que l’agent de surveillance des nœuds peut détecter. Il existe deux types de problèmes :
+ Condition : problème terminal qui nécessite une action corrective, telle que le remplacement d’une instance ou un redémarrage. Lorsque la réparation automatique est activée, Amazon EKS effectue une action de réparation, soit en remplaçant le nœud, soit en le redémarrant. Pour de plus amples informations, veuillez consulter [Conditions des nœuds](learn-status-conditions.md#status-node-conditions).
+ Événement : problème temporaire ou configuration sous-optimale du nœud. Aucune action de réparation automatique n’est effectuée. Pour de plus amples informations, veuillez consulter [Événements des nœuds](learn-status-conditions.md#status-node-events).

## AcceleratedHardware problèmes de santé des nœuds
<a name="node-health-AcceleratedHardware"></a>

La condition de surveillance est `AcceleratedHardwareReady` pour les problèmes du tableau suivant qui ont une sévérité « Condition ». Les événements et conditions décrits dans le tableau ci-dessous concernent les problèmes de santé des nœuds liés à NVIDIA et Neuron.


| Nom | Sévérité | Description | Action de réparation | 
| --- | --- | --- | --- | 
|  DCGMDiagnosticDéfaillance  |  Condition  |  Un cas de test de la suite de tests de diagnostic actif DCGM a échoué.  |  Aucune  | 
|  DCGMError  |  Condition  |  La connexion au processus hôte DCGM a été perdue ou n'a pas pu être établie.  |  Aucune  | 
|  DCGMFieldErreur [Code]  |  Événement  |  Le DCGM a détecté une dégradation du GPU grâce à un identifiant de champ.  |  Aucune  | 
|  DCGMHealthCode [Code]  |  Événement  |  Un bilan de santé du DCGM a échoué de manière non fatale.  |  Aucune  | 
|  DCGMHealthCode [Code]  |  Condition  |  Un bilan de santé du DCGM a échoué de manière fatale.  |  Aucune  | 
|  Neurone DMAError  |  Condition  |  Un moteur DMA a rencontré une erreur irrécupérable.  |  Remplacez  | 
|  Erreur neuronale HBMUncorrectable  |  Condition  |  Une mémoire HBM a rencontré une erreur incorrigible et a produit des résultats incorrects.  |  Remplacez  | 
|  Erreur neuronale NCUncorrectable  |  Condition  |  Une erreur mémoire incorrigible du cœur Neuron a été détectée.  |  Remplacez  | 
|  Erreur neuronale SRAMUncorrectable  |  Condition  |  Une mémoire SRAM sur puce a rencontré une erreur de parité et a produit des résultats incorrects.  |  Remplacez  | 
|  NvidiaDeviceCountMismatch  |  Événement  |  Le nombre de périphériques GPUs visibles via NVML ne correspond pas au nombre de périphériques NVIDIA présents sur le système de fichiers.  |  Aucune  | 
|  NvidiaDoubleBitError  |  Condition  |  Le pilote GPU a généré une erreur double bit.  |  Remplacez  | 
|  Nvidia NCCLError  |  Événement  |  Une erreur de segmentation s'est produite dans la bibliothèque NVIDIA Collective Communications (`libnccl`).  |  Aucune  | 
|  NVLinkErreur Nvidia  |  Condition  |  NVLink des erreurs ont été signalées par le pilote du GPU.  |  Remplacez  | 
|  PCIeErreur Nvidia  |  Événement  |  PCIe des rediffusions ont été déclenchées pour remédier à des erreurs de transmission.  |  Aucune  | 
|  NvidiaPageRetirement  |  Event  |  Le pilote GPU a marqué une page mémoire pour mise hors service. Cela peut se produire si une seule erreur double bit ou deux erreurs simple bit sont détectées à la même adresse.  |  Aucune  | 
|  NvidiaPowerError  |  Event  |  La consommation d'énergie GPUs a dépassé les seuils autorisés.  |  Aucune  | 
|  NvidiaThermalError  |  Event  |  L'état thermique GPUs a dépassé les seuils autorisés.  |  Aucune  | 
|  Erreur NvidiaXid [Code]  |  Condition  |  Une erreur critique du processeur graphique s'est produite.  |  Remplacer ou redémarrer  | 
|  NvidiaXID[Code]Warning  |  Événement  |  Une erreur GPU non critique s'est produite.  |  Aucune  | 

## Codes d'erreur NVIDIA XID
<a name="nvidia-xid-codes"></a>

L'agent de surveillance des nœuds détecte les erreurs NVIDIA XID dans les journaux du noyau du GPU. Les erreurs XID se répartissent en deux catégories :
+  **Codes XID connus** : erreurs critiques qui définissent la condition d'un nœud (`AcceleratedHardwareReady=False`) et déclenchent une réparation automatique lorsqu'ils sont activés. La raison pour laquelle le format du code est`NvidiaXID[Code]Error`. Les codes XID bien connus détectés par l'agent de surveillance des nœuds EKS ne représentent peut-être pas la liste complète des codes XID NVIDIA nécessitant des actions de réparation.
+  **Codes XID inconnus** : enregistrés uniquement en tant qu'événements Kubernetes. Ils ne déclenchent pas la réparation auto. La raison pour laquelle le format du code est`NvidiaXID[Code]Warning`. Pour rechercher des erreurs XID inconnues, consultez les journaux de votre noyau avec`dmesg | grep -i nvrm`.

Pour plus d’informations sur les erreurs XID, consultez [Erreurs XID](https://docs.nvidia.com/deploy/xid-errors/index.html#topic_5_1) dans la *Documentation sur le déploiement et la gestion des GPU NVIDIA*. Pour plus d’informations sur les messages XID individuels, consultez [Comprendre les messages XID](https://docs.nvidia.com/deploy/gpu-debug-guidelines/index.html#understanding-xid-messages) dans la *Documentation sur le déploiement et la gestion des GPU NVIDIA*.

Le tableau suivant répertorie les codes XID connus, leur signification et l'action de réparation des nœuds par défaut si elle est activée.


| Code XID | Description | Action de réparation | 
| --- | --- | --- | 
|  13  |  Exception relative au moteur graphique : une erreur du moteur graphique du processeur graphique s'est produite, généralement en raison de problèmes logiciels ou de bogues du pilote.  |  Redémarrer  | 
|  31  |  Erreur de page de mémoire du processeur graphique : une application a tenté d'accéder à la mémoire du processeur graphique qui n'est ni mappée ni accessible.  |  Redémarrer  | 
|  48  |  Erreur ECC double bit — Une erreur double bit non corrigible s'est produite dans la mémoire du GPU, indiquant une dégradation matérielle potentielle.  |  Redémarrer  | 
|  63  |  Événement de remappage de la mémoire du GPU : le pilote du GPU a remappé une partie de la mémoire du GPU en raison d'erreurs détectées. Cela est souvent récupérable.  |  Redémarrer  | 
|  64  |  Échec du remappage de la mémoire du processeur graphique : le processeur graphique n'a pas pu remapper la mémoire défectueuse, ce qui indique des problèmes matériels.  |  Redémarrer  | 
|  74  |  NVLink Erreur — Une erreur s'est produite lors de l' NVLink interconnexion haut débit entre GPUs.  |  Remplacez  | 
|  79  |  Le GPU est tombé du bus — Le GPU n'est plus accessible via PCIe, ce qui indique généralement une panne matérielle ou un problème d'alimentation.  |  Remplacez  | 
|  94  |  Erreur de mémoire contenue : une erreur de mémoire s'est produite mais elle est restée confinée et n'a pas affecté les autres applications.  |  Redémarrer  | 
|  95  |  Erreur de mémoire non confinée : une erreur de mémoire s'est produite et peut avoir affecté d'autres applications ou la mémoire du système.  |  Redémarrer  | 
|  119  |  Délai d'expiration du GSP RPC : le délai de communication avec le processeur du système GPU a expiré, probablement en raison de problèmes liés au microprogramme.  |  Remplacez  | 
|  120  |  Erreur GSP — Une erreur s'est produite dans le processeur du système GPU.  |  Remplacez  | 
|  121  |  Erreur C2C — Une erreur s'est produite sur l' chip-to-chipinterconnexion (utilisée en GPUs multipuce).  |  Remplacez  | 
|  140  |  Erreur ECC non récupérée — Une erreur ECC a échappé au confinement et a peut-être endommagé les données.  |  Remplacez  | 

Pour afficher l'état actuel du nœud lié à l'état du GPU, exécutez la commande suivante.

```
kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'
```

Pour afficher les événements liés au XID sur votre cluster, exécutez l'une des commandes suivantes.

```
kubectl get events | grep -i "NvidiaXID"
```

## ContainerRuntime problèmes de santé des nœuds
<a name="node-health-ContainerRuntime"></a>

La condition de surveillance est `ContainerRuntimeReady` pour les problèmes du tableau suivant qui ont une sévérité « Condition ».


| Nom | Sévérité | Description | Action de réparation | 
| --- | --- | --- | --- | 
|  ContainerRuntimeFailed  |  Événement  |  L’exécution du conteneur n’a pas réussi à créer un conteneur, ce qui est probablement lié à des problèmes signalés s’ils se produisent de manière répétée.  |  Aucune  | 
|  DeprecatedContainerdConfiguration  |  Event  |  Une image de conteneur utilisant le manifeste d'image obsolète version 2, schéma 1, a récemment été transférée sur le nœud via. `containerd`  |  Aucune  | 
|  KubeletFailed  |  Event  |  Le kubelet est passé à l’état d’échec.  |  Aucune  | 
|  LivenessProbeFailures  |  Event  |  Une défaillance de la sonde de vivacité a été détectée, ce qui peut indiquer des problèmes de code d’application ou des valeurs de délai d’expiration insuffisantes si cela se produit de manière répétée.  |  Aucune  | 
|  PodStuckTerminating  |  Condition  |  Un pod est ou était bloqué pendant une durée excessive, ce qui peut être dû à des erreurs CRI empêchant la progression de l’état du pod.  |  Remplacez  | 
|  ReadinessProbeFailures  |  Événement  |  Une défaillance de la sonde de disponibilité a été détectée, ce qui peut indiquer des problèmes de code d’application ou des valeurs de délai d’expiration insuffisantes si cela se produit de manière répétée.  |  Aucune  | 
|  [Nom] RepeatedRestart  |  Événement  |  Une unité systemd redémarre fréquemment.  |  Aucune  | 
|  ServiceFailedToStart  |  Event  |  Une unité systemd n’a pas pu démarrer.  |  Aucune  | 

## Problèmes d’état du nœud du noyau
<a name="node-health-Kernel"></a>

La condition de surveillance est `KernelReady` pour les problèmes du tableau suivant qui ont une sévérité « Condition ».


| Nom | Sévérité | Description | Action de réparation | 
| --- | --- | --- | --- | 
|  AppBlocked  |  Événement  |  La tâche a été bloquée pendant une longue période à partir de la planification, généralement en raison d’un blocage au niveau de l’entrée ou de la sortie.  |  Aucune  | 
|  AppCrash  |  Event  |  Une application sur le nœud a planté.  |  Aucune  | 
|  ApproachingKernelPidMax  |  Event  |  Le nombre de processus approche le nombre maximum de processus disponibles PIDs selon le `kernel.pid_max` paramètre actuel, après quoi aucun autre processus ne pourra être lancé.  |  Aucune  | 
|  ApproachingMaxOpenFiles  |  Event  |  Le nombre de fichiers ouverts approche le nombre maximal de fichiers ouverts possibles selon les paramètres actuels du noyau, après quoi l’ouverture de nouveaux fichiers échouera.  |  Aucune  | 
|  ConntrackExceededKernel  |  Event  |  Le suivi des connexions a dépassé le maximum pour le noyau et le système n’a pas pu établir de nouvelles connexions, ce qui peut entraîner une perte de paquets.  |  Aucune  | 
|  ExcessiveZombieProcesses  |  Event  |  Les processus que le système ne peut pas entièrement récupérer s’accumulent en grand nombre, ce qui indique des problèmes d’application et peut conduire à atteindre les limites des processus du système.  |  Aucune  | 
|  ForkFailedOutOfPIDs  |  Condition  |  Un appel fork ou exec a échoué en raison d'un manque de processus IDs ou de mémoire du système, ce qui peut être dû à des processus zombies ou à un épuisement physique de la mémoire.  |  Remplacez  | 
|  KernelBug  |  Événement  |  Un bogue du noyau a été détecté et signalé par le noyau Linux lui-même, bien que cela puisse parfois être causé par des nœuds avec une utilisation élevée du processeur ou de la mémoire, entraînant un retard dans le traitement des événements.  |  Aucune  | 
|  LargeEnvironment  |  Event  |  Le nombre de variables d'environnement associées à ce processus est supérieur aux prévisions, ce qui peut être dû au fait que de nombreux services sont `enableServiceLinks` définis sur true, ce qui peut entraîner des problèmes de performances.  |  Aucune  | 
|  RapidCron  |  Event  |  Une tâche cron s’exécute plus rapidement que toutes les cinq minutes sur ce nœud, ce qui peut avoir un impact sur les performances si la tâche consomme des ressources importantes.  |  Aucune  | 
|  SoftLockup  |  Event  |  Le CPU s’est bloqué pendant un certain temps.  |  Aucune  | 

## Problèmes d’état du nœud de réseau
<a name="node-health-Networking"></a>

La condition de surveillance est `NetworkingReady` pour les problèmes du tableau suivant qui ont une sévérité « Condition ».


| Nom | Sévérité | Description | Action de réparation | 
| --- | --- | --- | --- | 
|  BandwidthInExceeded  |  Événement  |  La file d’attente ou la suppression de paquets s’explique par le dépassement du maximum de bande passante agrégée entrante pour l’instance.  |  Aucune  | 
|  BandwidthOutExceeded  |  Event  |  La file d’attente ou la suppression de paquets s’explique par le dépassement du maximum de bande passante agrégée sortante pour l’instance.  |  Aucune  | 
|  ConntrackExceeded  |  Event  |  Le suivi des connexions a dépassé le maximum pour l’instance et le système n’a pas pu établir de nouvelles connexions, ce qui peut entraîner une perte de paquets.  |  Aucune  | 
|  EFAErrorMétrique  |  Événement  |  Les indicateurs du pilote EFA indiquent qu'il existe une interface présentant une dégradation des performances.  |  Aucune  | 
|  IPAMDInconsistent État  |  Événement  |  L'état du point de contrôle IPAMD sur le disque ne reflète pas l'environnement d' IPs exécution du conteneur.  |  Aucune  | 
|  IPAMDNoIPs  |  Event  |  Il n'y a plus d'adresses IP sur l'IPAMD.  |  Aucune  | 
|  IPAMDNotPrêt  |  Condition  |  IPAMD ne parvient pas à se connecter au serveur API.  |  Remplacez  | 
|  IPAMDNotCourir  |  Condition  |  Le processus Amazon VPC CNI n'a pas été détecté comme étant en cours d'exécution.  |  Remplacez  | 
|  IPAMDRepeatedlyRedémarrer  |  Événement  |  Le service IPAMD s’est redémarré plusieurs fois.  |  Aucune  | 
|  InterfaceNotRunning  |  Condition  |  Cette interface semble ne pas fonctionner ou il y a des problèmes de réseau.  |  Remplacez  | 
|  InterfaceNotUp  |  Condition  |  Cette interface semble ne pas être active ou il y a des problèmes de réseau.  |  Remplacez  | 
|  KubeProxyNotReady  |  Événement  |  Kube-proxy n’a pas réussi à surveiller ou à répertorier les ressources.  |  Aucune  | 
|  LinkLocalExceeded  |  Event  |  Le système a supprimé des paquets car le PPS du trafic vers les services mandataires locaux a dépassé le maximum de l’interface réseau.  |  Aucune  | 
|  MACAddressPolicyMisconfigured  |  Event  |  La valeur de la configuration du lien systemd-networkd est incorrecte. `MACAddressPolicy`  |  Aucune  | 
|  MissingDefaultRoutes  |  Event  |  Il manque des règles de routage par défaut.  |  Aucune  | 
|  Manquant IPRoutes  |  Événement  |  Il manque des itinéraires pour Pod IPs.  |  Aucune  | 
|  Manquant IPRules  |  Événement  |  Il manque des règles pour Pod IPs.  |  Aucune  | 
|  MissingLoopbackInterface  |  Condition  |  L’interface de bouclage est manquante dans cette instance, ce qui entraîne l’échec des services dépendant de la connectivité locale.  |  Remplacez  | 
|  NetworkSysctl  |  Événement  |  Les `sysctl` paramètres réseau de ce nœud sont potentiellement incorrects.  |  Aucune  | 
|  PPSExceeded  |  Event  |  Des paquets ont été mis en file d’attente ou supprimés car le PPS bidirectionnel a dépassé le maximum pour l’instance.  |  Aucune  | 
|  PortConflict  |  Event  |  Si un Pod utilise HostPort, il peut écrire des `iptables` règles qui remplacent les ports déjà liés de l'hôte, empêchant potentiellement l'accès du serveur API à. `kubelet`  |  Aucune  | 
|  UnexpectedRejectRule  |  Event  |  Une `DROP` règle `REJECT` ou un élément inattendu a été détecté dans le`iptables`, bloquant potentiellement le trafic attendu.  |  Aucune  | 

## Problèmes d’état du nœud de stockage
<a name="node-health-Storage"></a>

La condition de surveillance est `StorageReady` pour les problèmes du tableau suivant qui ont une sévérité « Condition ».


| Nom | Sévérité | Description | Action de réparation | 
| --- | --- | --- | --- | 
|  EBSInstanceIOPSExceeded  |  Événement  |  Le nombre maximal d'IOPS pour l'instance a été dépassé.  |  Aucune  | 
|  EBSInstanceThroughputExceeded  |  Event  |  Le débit maximal de l'instance a été dépassé.  |  Aucune  | 
|  EBSVolumeIOPSExceeded  |  Event  |  Le nombre maximal d'IOPS pour un volume EBS donné a été dépassé.  |  Aucune  | 
|  EBSVolumeThroughputExceeded  |  Event  |  Le débit maximal pour un volume Amazon EBS spécifique a été dépassé.  |  Aucune  | 
|  EtcHostsMountFailed  |  Event  |  Le montage du kubelet généré `/etc/hosts` a échoué en raison du `/var/lib/kubelet/pods` remontage des données utilisateur pendant le fonctionnement. `kubelet-container`  |  Aucune  | 
|  IODelays  |  Event  |  Un retard d’entrée ou de sortie a été détecté dans un processus, ce qui peut indiquer un provisionnement d’entrée-sortie insuffisant s’il est excessif.  |  Aucune  | 
|  KubeletDiskUsageSlow  |  Event  |  Le signale `kubelet` une utilisation lente du disque lors de la tentative d'accès au système de fichiers. Cela peut indiquer une insuffisance des entrées-sorties du disque ou des problèmes de système de fichiers.  |  Aucune  | 
|  XFSSmallAverageClusterSize  |  Event  |  La taille moyenne du cluster XFS est faible, ce qui indique une fragmentation excessive de l'espace libre. Cela peut empêcher la création de fichiers malgré les inodes disponibles ou l'espace libre.  |  Aucune  | 

## Configuration de l'agent de surveillance des nœuds
<a name="node-monitoring-agent-configure"></a>

L'agent de surveillance des nœuds EKS est déployé en tant que DaemonSet. Lorsque vous le déployez en tant que module complémentaire EKS, vous pouvez personnaliser l'installation avec les valeurs de configuration suivantes. Pour les configurations par défaut, reportez-vous au [diagramme Helm](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) de l'agent de surveillance des nœuds EKS.


| Option de configuration | Description | 
| --- | --- | 
|   `monitoringAgent.resources.requests.cpu`   |  Demande de ressources CPU pour l'agent de surveillance.  | 
|   `monitoringAgent.resources.requests.memory`   |  Demande de ressource mémoire pour l'agent de surveillance.  | 
|   `monitoringAgent.resources.limits.cpu`   |  Limite de ressources du processeur pour l'agent de surveillance.  | 
|   `monitoringAgent.resources.limits.memory`   |  Limite de ressources de mémoire pour l'agent de surveillance.  | 
|   `monitoringAgent.tolerations`   |  Tolérances pour la planification de l'agent de surveillance sur les nœuds contaminés.  | 
|   `monitoringAgent.additionalArgs`   |  Arguments de ligne de commande supplémentaires à transmettre à l'agent de surveillance.  | 

**Note**  
Vous pouvez configurer `hostname-override` et `verbosity` comme `monitoringAgent.additionalArgs` pour les modules complémentaires EKS ou l'installation de Helm. Vous ne pouvez actuellement pas personnaliser l'agent de surveillance des nœuds `probe-address` (`8002`) ou `metrics-address` (`8003`) via des arguments supplémentaires avec les modules complémentaires EKS ou l'installation de Helm.

L'agent de surveillance des nœuds inclut un composant serveur NVIDIA DCGM (Data Center GPU Manager) (`nv-hostengine`) pour surveiller NVIDIA GPUs. Ce composant s'exécute uniquement sur les nœuds qui sont des types d'instances de GPU NVIDIA, comme indiqué `nodeAffinity` dans le [graphique Helm](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) de l'agent. Vous ne pouvez pas utiliser une installation NVIDIA DCGM existante avec l'agent de surveillance des nœuds EKS. Veuillez nous faire part de vos commentaires sur le [GitHub numéro \$12763](https://github.com/aws/containers-roadmap/issues/2763) de la feuille de route EKS si vous avez besoin de cette fonctionnalité.

Lorsque vous déployez l'agent de surveillance des nœuds EKS en tant que module complémentaire EKS, vous pouvez personnaliser l'installation NVIDIA DCGM avec les valeurs de configuration suivantes.


| Option de configuration | Description | 
| --- | --- | 
|   `dcgmAgent.resources.requests.cpu`   |  Demande de ressource CPU pour l'agent DCGM.  | 
|   `dcgmAgent.resources.requests.memory`   |  Demande de ressource mémoire pour l'agent DCGM.  | 
|   `dcgmAgent.resources.limits.cpu`   |  Limite de ressources du processeur pour l'agent DCGM.  | 
|   `dcgmAgent.resources.limits.memory`   |  Limite de ressources de mémoire pour l'agent DCGM.  | 
|   `dcgmAgent.tolerations`   |  Tolérances pour la planification de l'agent DCGM sur des nœuds contaminés.  | 

Vous pouvez utiliser les commandes AWS CLI suivantes pour obtenir des informations utiles sur les versions et le schéma du module complémentaire EKS de l'agent de surveillance des nœuds EKS.

Téléchargez la dernière version du module complémentaire d'agent pour votre version de Kubernetes. `1.35`Remplacez-le par votre version de Kubernetes.

```
aws eks describe-addon-versions \
  --addon-name eks-node-monitoring-agent \
  --kubernetes-version 1.35 \
  --query='addons[].addonVersions[].addonVersion'
```

Obtenez le schéma des modules complémentaires d'agent pris en charge dans les modules complémentaires EKS. `v1.5.1-eksbuild.1`Remplacez-le par la version de votre agent.

```
aws eks describe-addon-configuration \
  --addon-name eks-node-monitoring-agent \
  --addon-version v1.5.1-eksbuild.1
```

# Réparer automatiquement les nœuds dans les clusters EKS
<a name="node-repair"></a>

Cette rubrique décrit le comportement de réparation automatique des nœuds EKS et explique comment le configurer pour répondre à vos besoins. La réparation automatique des nœuds EKS est activée par défaut en mode automatique EKS et peut être utilisée avec les groupes de nœuds gérés par EKS et Karpenter.

Les actions de réparation automatique des nœuds EKS par défaut sont résumées dans le tableau ci-dessous et s'appliquent au comportement du mode automatique EKS, des groupes de nœuds gérés par EKS et de Karpenter. Lorsque vous utilisez le mode automatique d'EKS ou Karpenter, toutes les actions de `AcceleratedHardwareReady` réparation le sont`Replace`, et seuls les groupes de nœuds gérés par EKS sont pris `Reboot` en charge en tant qu'action de réparation.

Pour obtenir une liste détaillée des problèmes de santé des nœuds détectés par l'agent de surveillance des nœuds EKS et des actions de réparation des nœuds correspondantes, consultez[Détectez les problèmes de santé des nœuds avec l'agent de surveillance des nœuds EKS](node-health-nma.md).


| État du nœud | Description | Réparation après | Action (s) de réparation | 
| --- | --- | --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady indique si le matériel accéléré (GPU, Neuron) du nœud fonctionne correctement.  |  10 m  |  Remplacer ou redémarrer  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady indique si le moteur d'exécution du conteneur (containerd, etc.) fonctionne correctement et est capable d'exécuter des conteneurs.  |  30 m  |  Remplacez  | 
|  DiskPressure  |  DiskPressure est une condition standard de Kubernetes indiquant que le nœud est soumis à une pression sur le disque (espace disque insuffisant ou E/S élevées).  |  N/A  |  Aucune  | 
|  KernelReady  |  KernelReady indique si le noyau fonctionne correctement sans erreur critique, panique ou épuisement des ressources.  |  30 m  |  Remplacez  | 
|  MemoryPressure  |  MemoryPressure est une condition standard de Kubernetes indiquant que le nœud est soumis à une pression de mémoire (faible mémoire disponible).  |  N/A  |  Aucune  | 
|  NetworkingReady  |  NetworkingReady indique si la pile réseau du nœud fonctionne correctement (interfaces, routage, connectivité).  |  30 m  |  Remplacez  | 
|  StorageReady  |  StorageReady indique si le sous-système de stockage du nœud fonctionne correctement (disques, systèmes de fichiers, E/S).  |  30 m  |  Remplacez  | 
|  Prêt  |  Prêt est la condition standard de Kubernetes indiquant que le nœud est sain et prêt à accepter des pods.  |  30 m  |  Remplacez  | 

Les actions de réparation automatique des nœuds EKS sont désactivées par défaut dans les scénarios suivants. Les actions de réparation des nœuds en cours se poursuivent dans chaque scénario. Découvrez [Configurer la réparation automatique des nœuds](#configure-node-repair) comment remplacer ces paramètres par défaut.

 **Groupes de nœuds gérés par EKS** 
+ Le groupe de nœuds compte plus de cinq nœuds et plus de 20 % des nœuds du groupe de nœuds ne fonctionnent pas correctement.
+ Un changement de zone pour votre cluster se déclenche via l'Application Recovery Controller (ARC).

 **Mode automatique EKS et Karpenter** 
+ Plus de 20 % des nœuds du NodePool sont en mauvais état.
+ En mode autonome NodeClaims, 20 % des nœuds du cluster ne fonctionnent pas correctement.

## Configurer la réparation automatique des nœuds
<a name="configure-node-repair"></a>

La réparation automatique des nœuds ne peut pas être configurée lors de l'utilisation du mode automatique EKS et elle est toujours activée avec les mêmes paramètres par défaut que Karpenter.

### Karpenter
<a name="configure-node-repair-karpenter"></a>

Pour utiliser la réparation automatique des nœuds avec Karpenter, activez le portail `NodeRepair=true` des fonctionnalités. Vous pouvez activer les portes de fonctionnalités via l'option `--feature-gates` CLI ou la variable d'`FEATURE_GATES`environnement dans le déploiement de Karpenter. Pour en savoir plus, veuillez consulter la documentation [Karpenter](https://karpenter.sh/docs/concepts/disruption/#node-auto-repair).

### Groupes de nœuds gérés
<a name="configure-node-repair-mng"></a>

Vous pouvez activer la réparation automatique des nœuds lors de la création de nouveaux groupes de nœuds gérés par EKS ou en mettant à jour les groupes de nœuds gérés par EKS existants.
+  **Console Amazon EKS** : cochez la case **Activer la réparation automatique des nœuds** pour le groupe de nœuds gérés. Pour de plus amples informations, veuillez consulter [Création d’un groupe de nœuds gérés pour votre cluster](create-managed-node-group.md).
+  ** AWS CLI** — Ajoutez `--node-repair-config enabled=true` à la [https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html](https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html)commande [https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html](https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html)ou.
+  **eksctl** [— Configure`managedNodeGroups.nodeRepairConfig.enabled: true`, voir l'exemple dans le eksctl. GitHub](https://github.com/eksctl-io/eksctl/blob/main/examples/44-node-repair.yaml)

Lorsque vous utilisez des groupes de nœuds gérés par EKS, vous pouvez contrôler le comportement de réparation automatique des nœuds à l'aide des paramètres suivants.

Pour contrôler le moment où la réparation automatique des nœuds cesse d'agir, définissez un seuil basé sur le nombre de nœuds défectueux dans le groupe de nœuds. Définissez le nombre absolu ou le pourcentage, mais pas les deux.


| Paramètre | Description | 
| --- | --- | 
|   `maxUnhealthyNodeThresholdCount`   |  Nombre absolu de nœuds défectueux au-dessus duquel la réparation automatique des nœuds s'arrête. Utilisez-le pour limiter l'étendue des réparations.  | 
|   `maxUnhealthyNodeThresholdPercentage`   |  Pourcentage de nœuds défectueux au-dessus duquel la réparation automatique des nœuds s'arrête (0 à 100).  | 

Pour contrôler le nombre de nœuds réparés simultanément, vous pouvez configurer le parallélisme de réparation. Comme pour le seuil de nœuds défectueux, définissez le nombre absolu ou le pourcentage, mais pas les deux.


| Paramètre | Description | 
| --- | --- | 
|   `maxParallelNodesRepairedCount`   |  Le nombre maximum de nœuds à réparer simultanément.  | 
|   `maxParallelNodesRepairedPercentage`   |  Pourcentage maximal de nœuds défectueux à réparer simultanément (0 à 100).  | 

Avec`nodeRepairConfigOverrides`, vous pouvez personnaliser le comportement de réparation en fonction de conditions spécifiques. Utilisez-le lorsque vous avez besoin de différentes actions de réparation ou de temps d'attente pour différents types de problèmes.

Chaque dérogation nécessite tous les champs suivants :


| Champ | Description | 
| --- | --- | 
|   `nodeMonitoringCondition`   |  Type de condition du nœud signalé par l'agent de surveillance du nœud. Par exemple :`AcceleratedHardwareReady`,`NetworkingReady`,`StorageReady`,`KernelReady`.  | 
|   `nodeUnhealthyReason`   |  Le code de raison spécifique de l'état insalubre. Par exemple   `NvidiaXID31Error`, `IPAMDNotRunning`.  | 
|   `minRepairWaitTimeMins`   |  Durée minimale, en minutes, pendant laquelle la condition doit persister avant que le nœud puisse être réparé. Utilisez-le pour éviter de réparer les nœuds pour des problèmes temporaires.  | 
|   `repairAction`   |  L'action à entreprendre lorsque les conditions sont réunies. Valeurs valides : `Replace` (arrêt et remplacement du nœud), `Reboot` (redémarrage du nœud) ou `NoAction` (aucune action de réparation).  | 

L'exemple de AWS CLI suivant crée un groupe de nœuds avec des paramètres de réparation personnalisés.

```
aws eks create-nodegroup \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --node-role arn:aws:iam::111122223333:role/NodeRole \
  --subnets subnet-0123456789abcdef0 \
  --node-repair-config '{
    "enabled": true,
    "maxUnhealthyNodeThresholdPercentage": 10,
    "maxParallelNodesRepairedCount": 3,
    "nodeRepairConfigOverrides": [
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID64Error",
        "minRepairWaitTimeMins": 5,
        "repairAction": "Replace"
      },
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID31Error",
        "minRepairWaitTimeMins": 15,
        "repairAction": "NoAction"
      }
    ]
  }'
```

Cette configuration effectue les opérations suivantes :
+ Permet la réparation automatique des nœuds
+ Arrête les actions de réparation lorsque plus de 10 % des nœuds ne sont pas sains
+ Répare jusqu'à 3 nœuds à la fois
+ Annule les erreurs XID 64 (échec du remappage de la mémoire du GPU) pour remplacer le nœud au bout de 5 minutes. La valeur par défaut est le redémarrage au bout de 10 minutes.
+ Annule les erreurs XID 31 (erreur de page de mémoire du GPU) pour ne rien faire. La valeur par défaut est le redémarrage au bout de 10 minutes.

# Afficher l’état de vos nœuds
<a name="learn-status-conditions"></a>

Cette rubrique explique les outils et les méthodes disponibles pour surveiller l’état des nœuds dans les clusters Amazon EKS. Les informations couvrent les conditions des nœuds, les événements et les cas de détection qui vous aident à identifier et à diagnostiquer les problèmes au niveau des nœuds. Utilisez les commandes et les modèles décrits ici pour inspecter les ressources d’état des nœuds, interpréter les conditions d’état et analyser les événements des nœuds à des fins de dépannage opérationnel.

Vous pouvez obtenir certaines informations sur l’état des nœuds à l’aide des commandes Kubernetes pour tous les nœuds. Si vous utilisez l’agent de surveillance des nœuds via le mode automatique Amazon EKS ou le module complémentaire géré par Amazon EKS, vous obtiendrez une plus grande variété de signaux de nœuds pour vous aider à résoudre les problèmes. Les descriptions des problèmes d’état détectés par l’agent de surveillance des nœuds sont également disponibles dans le tableau de bord d’observabilité. Pour de plus amples informations, veuillez consulter [Détectez les problèmes de santé des nœuds avec l'agent de surveillance des nœuds EKS](node-health-nma.md).

## Conditions des nœuds
<a name="status-node-conditions"></a>

Les conditions des nœuds représentent des problèmes terminaux nécessitant des mesures correctives telles que le remplacement ou le redémarrage d’une instance.

 **Pour obtenir les conditions de tous les nœuds :** 

```
kubectl get nodes -o 'custom-columns=NAME:.metadata.name,CONDITIONS:.status.conditions[*].type,STATUS:.status.conditions[*].status'
```

 **Pour obtenir les conditions détaillées d’un nœud spécifique :** 

```
kubectl describe node node-name
```

 **Exemple de sortie de condition d’un nœud en bon état :** 

```
  - lastHeartbeatTime: "2024-11-21T19:07:40Z"
    lastTransitionTime: "2024-11-08T03:57:40Z"
    message: Monitoring for the Networking system is active
    reason: NetworkingIsReady
    status: "True"
    type: NetworkingReady
```

 **Exemple de condition d’un nœud en mauvais état présentant un problème de réseau :** 

```
  - lastHeartbeatTime: "2024-11-21T19:12:29Z"
    lastTransitionTime: "2024-11-08T17:04:17Z"
    message: IPAM-D has failed to connect to API Server which could be an issue with
      IPTable rules or any other network configuration.
    reason: IPAMDNotReady
    status: "False"
    type: NetworkingReady
```

## Événements des nœuds
<a name="status-node-events"></a>

Les événements des nœuds indiquent des problèmes temporaires ou des configurations sous-optimales.

 **Pour obtenir tous les événements signalés par l’agent de surveillance des nœuds :** 

Lorsque l’agent de surveillance des nœuds est disponible, vous pouvez exécuter la commande suivante.

```
kubectl get events --field-selector=reportingComponent=eks-node-monitoring-agent
```

Exemple de sortie :

```
LAST SEEN   TYPE      REASON       OBJECT                                              MESSAGE
4s          Warning   SoftLockup   node/ip-192-168-71-251.us-west-2.compute.internal   CPU stuck for 23s
```

 **Pour obtenir les événements de tous les nœuds** 

```
kubectl get events --field-selector involvedObject.kind=Node
```

 **Pour obtenir les événements d’un nœud spécifique** 

```
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=node-name
```

 **Pour surveiller les événements en temps réel** 

```
kubectl get events -w --field-selector involvedObject.kind=Node
```

 **Exemple de sortie d’événement :** 

```
LAST SEEN   TYPE     REASON           OBJECT         MESSAGE
2m          Warning  MemoryPressure   Node/node-1    Node experiencing memory pressure
5m          Normal   NodeReady        Node/node-1    Node became ready
```

## Commandes de dépannage courantes
<a name="status-node-troubleshooting"></a>

```
# Get comprehensive node status
kubectl get node node-name -o yaml

# Watch node status changes
kubectl get nodes -w

# Get node metrics
kubectl top node
```

# Extraction des journaux d’un nœud géré à l’aide de kubectl et S3
<a name="auto-get-logs"></a>

Découvrez comment extraire les journaux d’un nœud géré Amazon EKS disposant de l’agent de surveillance des nœuds.

## Conditions préalables
<a name="_prerequisites"></a>

Vérifiez que vous avez les éléments suivants :
+ Un cluster Amazon EKS existant avec l’agent de surveillance des nœuds installé. Pour de plus amples informations, veuillez consulter [Détectez les problèmes de santé des nœuds et activez la réparation automatique des nœuds](node-health.md).
+ L’outil en ligne de commande `kubectl` installé et configuré pour communiquer avec votre cluster.
+ La AWS CLI s'est installée et s'est connectée avec des autorisations suffisantes pour créer des compartiments et des objets S3.
+ Une version récente de Python 3 installée
+ Le AWS SDK pour Python 3, Boto 3, est installé.

## Étape 1 : créer un compartiment S3 de destination (facultatif)
<a name="_step_1_create_s3_bucket_destination_optional"></a>

Si vous ne disposez pas encore d’un compartiment S3 pour stocker les journaux, créez-en un. Utilisez la commande AWS CLI suivante. Le compartiment utilise par défaut la liste de contrôle d’accès `private`. *bucket-name*Remplacez-le par le nom de compartiment unique que vous avez choisi.

```
aws s3api create-bucket --bucket <bucket-name>
```

## Étape 2 : créer une URL S3 pré-signée pour HTTP PUT
<a name="_step_2_create_pre_signed_s3_url_for_http_put"></a>

Amazon EKS renvoie les journaux du nœud par une opération HTTP PUT vers l’URL que vous indiquez. Dans ce tutoriel, nous allons générer une URL HTTP PUT S3 pré-signée.

Les journaux seront renvoyés sous la forme d’une archive gzip, avec l’extension `.tar.gz`.

**Note**  
Vous devez utiliser l' AWS API ou un SDK pour créer l'URL de téléchargement S3 pré-signée afin qu'EKS télécharge le fichier journal. Vous ne pouvez pas créer d'URL de téléchargement S3 pré-signée à l'aide de la AWS CLI.

1. Déterminez où vous souhaitez stocker les journaux dans le compartiment. Par exemple, vous pouvez utiliser *2024-11-12/logs1.tar.gz* comme clé.

1. Enregistrez le code Python suivant dans le fichier *presign-upload.py*. Remplacez *<bucket-name>* et *<key>*. La clé doit se terminer par `.tar.gz`.

   ```
   import boto3; print(boto3.client('s3').generate_presigned_url(
      ClientMethod='put_object',
      Params={'Bucket': '<bucket-name>', 'Key': '<key>'},
      ExpiresIn=1000
   ))
   ```

1. Exécutez le script avec

   ```
   python presign-upload.py
   ```

1. Notez le résultat de l’URL. Utilisez cette valeur à l’étape suivante comme *http-put-destination*.

Pour plus d'informations, consultez [Générer une URL présignée pour télécharger un fichier](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload-a-file) dans la documentation du SDK AWS Boto3 pour Python.

## Étape 3 : Création d'une NodeDiagnostic ressource
<a name="_step_3_create_nodediagnostic_resource"></a>

Identifiez le nom du nœud à partir duquel vous souhaitez collecter les journaux.

Créez un manifeste `NodeDiagnostic` qui utilise le nom du nœud comme nom de la ressource et fournissant une destination URL HTTP PUT.

```
apiVersion: eks.amazonaws.com/v1alpha1
kind: NodeDiagnostic
metadata:
    name: <node-name>
spec:
    logCapture:
        destination: http-put-destination
```

Appliquez le fichier manifeste à votre cluster.

```
kubectl apply -f nodediagnostic.yaml
```

Vous pouvez vérifier l’état de la collecte en décrivant la ressource `NodeDiagnostic` :
+ Un état `Success` ou `SuccessWithErrors` indique que la tâche est terminée et que les journaux ont été téléversés vers la destination indiquée (l’état `SuccessWithErrors` indique que certains journaux peuvent être manquants)
+ Si l’état est Échec, vérifiez que l’URL de téléversement est bien formée et qu’elle n’a pas expiré.

```
kubectl describe nodediagnostics.eks.amazonaws.com/<node-name>
```

## Étape 4 : télécharger des journaux depuis S3
<a name="_step_4_download_logs_from_s3"></a>

Attendez environ une minute avant d’essayer de télécharger les journaux. Utilisez ensuite la CLI S3 pour télécharger les journaux.

```
# Once NodeDiagnostic shows Success status, download the logs
aws s3 cp s3://<bucket-name>/key ./<path-to-node-logs>.tar.gz
```

## Étape 5 : Nettoyer les NodeDiagnostic ressources
<a name="_step_5_clean_up_nodediagnostic_resource"></a>
+  Les ressources `NodeDiagnostic` ne sont pas supprimées automatiquement. Vous devez les supprimer manuellement après avoir récupéré les artefacts de vos journaux

```
# Delete the NodeDiagnostic resource
kubectl delete nodediagnostics.eks.amazonaws.com/<node-name>
```

## NodeDiagnostic `node`Destination
<a name="_nodediagnostic_node_destination"></a>

À partir de la version `v1.6.0` de l'agent de surveillance des nœuds, il existe une option permettant de définir la destination de collecte de journaux sur`node`. L'utilisation de cette destination entraînera la collecte et la persistance temporaire des journaux sur le nœud pour une collecte ultérieure. Outre cette fonctionnalité, le GitHub référentiel de l'agent de surveillance des nœuds contient un `kubectl` plugin que vous pouvez installer pour faciliter les interactions et la collecte des journaux. Pour plus d'informations, consultez la [documentation du `kubectl ekslogs` plugin](https://github.com/aws/eks-node-monitoring-agent/blob/main/tools/kubectl-ekslogs/README.md).

## Exemple d'utilisation
<a name="_example_usage"></a>

```
# Collect NodeDiagnostic logs from a single node
kubectl ekslogs <node-name>

# Collect NodeDiagnostic logs from multiple nodes
kubectl ekslogs <node-name-1> <node-name-2> <node-name-3>

# Collect NodeDiagnostic logs from all nodes with a specific label
kubectl ekslogs -l <key>=<value>
```

# Présentation des nœuds hybrides Amazon EKS
<a name="hybrid-nodes-overview"></a>

Avec les *nœuds hybrides Amazon EKS*, vous pouvez utiliser votre infrastructure sur site et en périphérie comme nœuds dans les clusters Amazon EKS. AWS gère le plan de contrôle Kubernetes hébergé par AWS du cluster Amazon EKS, et vous gérez les nœuds hybrides qui s’exécutent dans vos environnements sur site ou en périphérie. Cela unifie la gestion de Kubernetes dans tous vos environnements et décharge la gestion du plan de contrôle Kubernetes vers AWS pour vos applications sur site et en périphérie.

Les nœuds hybrides Amazon EKS fonctionnent avec n’importe quel matériel ou machine virtuelle sur site, apportant l’efficacité, la capacité de mise à l’échelle et la disponibilité d’Amazon EKS partout où vos applications doivent être exécutées. Vous pouvez utiliser un large éventail de fonctionnalités Amazon EKS avec les nœuds hybrides Amazon EKS, notamment les modules complémentaires Amazon EKS, l’identité du pod Amazon EKS, les entrées d’accès au cluster, les informations sur le cluster et la prise en charge étendue des versions Kubernetes. Les nœuds hybrides Amazon EKS s’intègre nativement à des services AWS tels que Systems Manager AWS, Rôles Anywhere IAM AWS, le service géré Amazon pour Prometheus et Amazon CloudWatch pour la surveillance centralisée, la journalisation et la gestion des identités.

Avec les nœuds hybrides Amazon EKS, il n’y a pas d’engagement préalable ni de frais minimums, et vous êtes facturé à l’heure pour les ressources vCPU de vos nœuds hybrides lorsqu’ils sont connectés à vos clusters Amazon EKS. Pour plus d’informations sur les tarifs, consultez la page [Tarifs Amazon EKS](https://aws.amazon.com/eks/pricing/).

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/tFn9IdlddBw?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/tFn9IdlddBw?rel=0)


## Fonctionnalités
<a name="hybrid-nodes-features"></a>

Les nœuds hybrides EKS présentent les caractéristiques générales suivantes :
+  **Plan de contrôle Kubernetes géré** : AWS gère le plan de contrôle Kubernetes hébergé AWS du cluster EKS, et vous gérez les nœuds hybrides qui s’exécutent dans vos environnements sur site ou en périphérie. Cela unifie la gestion de Kubernetes dans tous vos environnements et décharge la gestion du plan de contrôle Kubernetes vers AWS pour vos applications sur site et en périphérie. En déplaçant le plan de contrôle Kubernetes vers AWS, vous pouvez conserver la capacité sur site pour vos applications et être assuré que le plan de contrôle Kubernetes s’adapte à vos charges de travail.
+  **Expérience EKS cohérente** : la plupart des fonctionnalités EKS sont prises en charge par les nœuds hybrides EKS pour une expérience EKS cohérente dans vos environnements sur site et dans le cloud, notamment les modules complémentaires EKS, l’identité du pod EKS, les entrées d’accès au cluster, les informations sur le cluster, la prise en charge étendue des versions Kubernetes, etc. Pour plus d’informations, consultez la section [Configurer les modules complémentaires pour les nœuds hybrides](hybrid-nodes-add-ons.md) consacrée aux modules complémentaires EKS pris en charge par les nœuds hybrides EKS.
+  **Observabilité centralisée et gestion des identités** : les nœuds hybrides EKS s’intègrent nativement à des services AWS tels qu’AWS Systems Manager, Rôles Anywhere IAM AWS, le service géré Amazon pour Prometheus et Amazon CloudWatch pour la surveillance centralisée, la journalisation et la gestion des identités.
+  **Burst-to-cloud ou ajout de capacité sur site** : Un seul cluster EKS peut être utilisé pour exécuter des nœuds hybrides et des nœuds dans des régions AWS, des zones locales AWS ou de AWS Outposts afin d’ajouter de la capacité burst-to-cloud ou sur site à vos clusters EKS. Pour plus d’informations, consultez la section [Considérations relatives aux clusters en mode mixte](hybrid-nodes-webhooks.md#hybrid-nodes-considerations-mixed-mode).
+  **Infrastructure flexible** : les nœuds hybrides EKS suivent une approche *« apportez votre propre infrastructure »* et sont indépendants de l’infrastructure que vous utilisez pour les nœuds hybrides. Vous pouvez exécuter des nœuds hybrides sur des machines physiques ou virtuelles, ainsi que sur des architectures x86 et ARM, ce qui permet de migrer les charges de travail sur site s’exécutant sur des nœuds hybrides vers différents types d’infrastructures.
+  **Réseau flexible** : Avec les nœuds hybrides EKS, la communication entre le plan de contrôle EKS et les nœuds hybrides est acheminée via le VPC et les sous-réseaux que vous transmettez lors de la création du cluster, ce qui s’appuie sur le [mécanisme existant](https://docs.aws.amazon.com/eks/latest/best-practices/subnets.html) dans EKS pour la mise en réseau du plan de contrôle vers les nœuds. Cette solution s’adapte à votre méthode préférée pour connecter vos réseaux sur site à un VPC dans AWS. Plusieurs [options documentées](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) sont disponibles, notamment le VPN site à site AWS, Direct Connect AWS ou votre propre solution VPN. Vous pouvez choisir la méthode qui correspond le mieux à votre cas d’utilisation.

## Limites
<a name="hybrid-node-limits"></a>
+ Jusqu’à 15 CIDR pour les réseaux de nœuds distants et 15 CIDR pour les réseaux de pods distants par cluster sont pris en charge.

## Considérations
<a name="hybrid-nodes-general"></a>
+ Les nœuds hybrides EKS peuvent être utilisés avec des clusters EKS nouveaux ou existants.
+ Les nœuds hybrides EKS sont disponibles dans toutes les régions AWS, à l’exception des régions AWS GovCloud (États-Unis) et AWS Chine.
+ Les nœuds hybrides EKS doivent disposer d’une connexion fiable entre votre environnement sur site et AWS. Les nœuds hybrides EKS ne sont pas adaptés aux environnements déconnectés, perturbés, intermittents ou limités (DDIL). Si vous utilisez un environnement DDIL, envisagez [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/). Consultez les [meilleures pratiques pour les nœuds hybrides EKS](https://docs.aws.amazon.com/eks/latest/best-practices/hybrid-nodes-network-disconnections.html) pour obtenir des informations sur le comportement des nœuds hybrides en cas de déconnexion réseau.
+ L’exécution de nœuds hybrides EKS sur une infrastructure cloud, y compris les régions AWS, les zones locales AWS, AWS Outposts ou d’autres clouds, n’est pas prise en charge. Des frais liés aux nœuds hybrides vous seront facturés si vous exécutez des nœuds hybrides sur des instances Amazon EC2.
+ La facturation des nœuds hybrides commence lorsque les nœuds rejoignent le cluster EKS et s’arrête lorsqu’ils sont supprimés du cluster. Veillez à supprimer vos nœuds hybrides de votre cluster EKS si vous ne les utilisez pas.

## Ressources supplémentaires
<a name="hybrid-nodes-resources"></a>
+  [https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/](https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/) : instructions étape par étape pour déployer des nœuds hybrides EKS dans un environnement de démonstration.
+  [https://www.youtube.com/watch?v=ZxC7SkemxvU](https://www.youtube.com/watch?v=ZxC7SkemxvU) : AWS session re:Invent présentant le lancement des nœuds hybrides EKS avec un client qui montre comment il utilise les nœuds hybrides EKS dans son environnement.
+  [https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes](https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes) : article expliquant différentes méthodes de configuration de la mise en réseau pour les nœuds hybrides EKS.
+  [https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/](https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/) : article de blog expliquant comment exécuter l’inférence de l’IA générative dans différents environnements avec les nœuds hybrides EKS.

# Configuration préalable requise pour les nœuds hybrides
<a name="hybrid-nodes-prereqs"></a>

Pour utiliser les nœuds hybrides Amazon EKS, vous devez disposer d'une connectivité privée depuis votre environnement sur site vers/depuis AWS, des serveurs bare metal ou des machines virtuelles dotés d'un système d'exploitation compatible, et des activations hybrides AWS IAM Roles Anywhere ou AWS Systems Manager (SSM) configurées. Vous êtes responsable de la gestion de ces prérequis tout au long du cycle de vie des nœuds hybrides.
+ Connectivité réseau hybride depuis votre environnement sur site vers/depuis AWS 
+ Infrastructure sous forme de machines physiques ou virtuelles
+ Système d’exploitation compatible avec les nœuds hybrides
+ Fournisseur d’informations d’identification IAM sur site configuré

![\[Connectivité réseau à nœuds hybrides.\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Connectivité réseau hybride
<a name="hybrid-nodes-prereqs-connect"></a>

La communication entre le plan de contrôle Amazon EKS et les nœuds hybrides est acheminée via le VPC et les sous-réseaux que vous transmettez lors de la création du cluster, qui s’appuie sur le [mécanisme existant](https://aws.github.io/aws-eks-best-practices/networking/subnets/) dans Amazon EKS pour la mise en réseau du plan de contrôle vers les nœuds. Plusieurs [options documentées](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) vous permettent de connecter votre environnement sur site à votre VPC, AWS Site-to-Site notamment le VPN, AWS Direct Connect ou votre propre connexion VPN. Consultez les guides d'utilisation du [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) et de [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) pour plus d'informations sur l'utilisation de ces solutions pour votre connexion réseau hybride.

Pour une expérience optimale, nous vous recommandons de disposer d'une connectivité réseau fiable d'au moins 100 Mbits/s et d'une latence aller-retour maximale de 200 ms pour la connexion des nœuds hybrides à la AWS région. Il s’agit d’une recommandation générale qui s’applique à la plupart des cas d’utilisation, mais qui ne constitue pas une exigence stricte. Les exigences en matière de bande passante et de latence peuvent varier en fonction du nombre de nœuds hybrides et des caractéristiques de votre charge de travail, telles que la taille de l'image de l'application, l'élasticité de l'application, les configurations de surveillance et de journalisation, ainsi que les dépendances des applications en matière d'accès aux données stockées dans d'autres AWS services. Nous vous recommandons d’effectuer des tests avec vos propres applications et environnements avant le déploiement en production afin de vérifier que votre configuration réseau répond aux exigences de vos charges de travail.

## Configuration du réseau local
<a name="hybrid-nodes-prereqs-onprem"></a>

Vous devez activer l’accès réseau entrant depuis le plan de contrôle Amazon EKS vers votre environnement sur site afin de permettre au plan de contrôle Amazon EKS de communiquer avec les nœuds hybrides en cours d’exécution `kubelet` et, éventuellement, avec les webhooks exécutés sur vos nœuds hybrides. En outre, vous devez activer l’accès au réseau sortant pour vos nœuds hybrides et les composants qui s’exécutent sur ceux-ci afin de communiquer avec le plan de contrôle Amazon EKS. Vous pouvez configurer cette communication pour qu'elle reste totalement privée avec votre AWS Direct Connect, votre AWS Site-to-Site VPN ou votre propre connexion VPN.

Les plages de routage interdomaines sans classe (CIDR) que vous utilisez pour vos réseaux de nœuds et de pods locaux doivent utiliser des plages d'adresses IPv4 RFC-1918 ou CGNAT. Votre routeur local doit être configuré avec des routes vers vos nœuds locaux et, éventuellement, vers vos pods. Pour plus d’informations sur les exigences réseau sur site, y compris la liste complète des ports et protocoles requis qui doivent être activés dans votre pare-feu et votre environnement sur site, consultez [Configuration réseau sur site](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem).

## Configuration du cluster EKS
<a name="hybrid-nodes-prereqs-cluster"></a>

Pour minimiser la latence, nous vous recommandons de créer votre cluster Amazon EKS dans la AWS région la plus proche de votre environnement sur site ou périphérique. Vous transmettez votre nœud et votre pod locaux CIDRs lors de la création du cluster Amazon EKS via deux champs d'API : `RemoteNodeNetwork` et`RemotePodNetwork`. Vous devrez peut-être discuter avec votre équipe réseau sur site pour identifier votre nœud et votre pod sur site. CIDRs Le CIDR du nœud est attribué à partir de votre réseau local et le CIDR du pod est attribué à partir de l’interface réseau de conteneur (CNI) que vous utilisez si vous utilisez un réseau superposé pour votre CNI. Cilium et Calico utilisent par défaut des réseaux superposés.

Le nœud et le pod sur site CIDRs que vous configurez via les `RemotePodNetwork` champs `RemoteNodeNetwork` et sont utilisés pour configurer le plan de contrôle Amazon EKS afin d'acheminer le trafic via votre VPC vers `kubelet` les pods exécutés sur vos nœuds hybrides. Votre nœud et votre pod sur site CIDRs ne peuvent pas se chevaucher, ni avec le CIDR VPC que vous transmettez lors de la création du cluster, ni avec la configuration du IPv4 service pour votre cluster Amazon EKS. En outre, le Pod CIDRs doit être unique à chaque cluster EKS afin que votre routeur local puisse acheminer le trafic.

Nous vous recommandons d’utiliser un accès public ou privé pour le point de terminaison du serveur API Amazon EKS Kubernetes. Si vous choisissez « Public et privé », le point de terminaison du serveur d'API Amazon EKS Kubernetes indiquera toujours au public IPs les nœuds hybrides exécutés en dehors de votre VPC, ce qui peut empêcher vos nœuds hybrides de rejoindre le cluster. Lorsque vous utilisez l'accès au point de terminaison public, le point de terminaison du serveur d'API Kubernetes devient public IPs et les communications entre les nœuds hybrides et le plan de contrôle Amazon EKS sont acheminées via Internet. Lorsque vous choisissez un accès de point de terminaison privé, le point de terminaison du serveur d'API Kubernetes devient privé IPs et les communications entre les nœuds hybrides et le plan de contrôle Amazon EKS seront acheminées via votre lien de connectivité privé, dans la plupart des cas Direct AWS Connect ou VPN. AWS Site-to-Site 

## Configuration VPC
<a name="hybrid-nodes-prereqs-vpc"></a>

Vous devez configurer le VPC que vous transmettez lors de la création du cluster Amazon EKS avec des routes dans sa table de routage pour votre nœud sur site et, éventuellement, des réseaux de pods avec votre passerelle privée virtuelle (VGW) ou votre passerelle de transit (TGW) comme cible. Un exemple est illustré ci-dessous. Remplacez `REMOTE_NODE_CIDR` et `REMOTE_POD_CIDR` par les valeurs correspondant à votre réseau sur site.


| Destination | Cible | Description | 
| --- | --- | --- | 
|  10.226.0.0/16  |  local  |  Trafic local vers les routes VPC au sein du VPC  | 
|  REMOTE\$1NODE\$1CIDR  |  tgw-abcdef123456  |  CIDR du nœud sur site, acheminer le trafic vers le TGW  | 
|  REMODE\$1POD\$1CIDR  |  tgw-abcdef123456  |  CIDR du pod sur site, acheminer le trafic vers le TGW  | 

## Configuration du groupe de sécurité
<a name="hybrid-nodes-prereqs-sg"></a>

Lorsque vous créez un cluster, Amazon EKS crée un groupe de sécurité nommé `eks-cluster-sg-<cluster-name>-<uniqueID>`. Vous ne pouvez pas modifier les règles entrantes de ce groupe de sécurité de cluster, mais vous pouvez restreindre les règles sortantes. Vous devez ajouter un groupe de sécurité supplémentaire à votre cluster pour permettre au kubelet et, éventuellement, aux webhooks s’exécutant sur vos nœuds hybrides de contacter le plan de contrôle Amazon EKS. Les règles entrantes requises pour ce groupe de sécurité supplémentaire sont indiquées ci-dessous. Remplacez `REMOTE_NODE_CIDR` et `REMOTE_POD_CIDR` par les valeurs correspondant à votre réseau sur site.


| Nom | ID de règle du groupe de sécurité | Versions d’adresses IP | Type | Protocole | Plage de ports | Source | 
| --- | --- | --- | --- | --- | --- | --- | 
|  Nœud entrant sur site  |  sgr-abcdef123456  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1NODE\$1CIDR  | 
|  Envoi du pod sur site  |  sgr-abcdef654321  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1POD\$1CIDR  | 

## Infrastructures
<a name="hybrid-nodes-prereqs-infra"></a>

Vous devez disposer de serveurs de matériel nu ou de machines virtuelles pouvant être utilisés comme nœuds hybrides. Les nœuds hybrides sont indépendants de l’infrastructure sous-jacente et prennent en charge les architectures x86 et ARM. Les nœuds hybrides Amazon EKS suivent une approche « apportez votre propre infrastructure », dans laquelle vous êtes responsable de l’approvisionnement et de la gestion des serveurs de matériel nu ou des machines virtuelles que vous utilisez pour les nœuds hybrides. Bien qu’il n’y ait pas d’exigence minimale stricte en matière de ressources, nous vous recommandons d’utiliser des hôtes disposant d’au moins 1 vCPU et 1 Go de RAM pour les nœuds hybrides.

## Système d’exploitation
<a name="hybrid-nodes-prereqs-os"></a>

Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu et RHEL sont validés en permanence pour être utilisés comme système d'exploitation de nœuds pour les nœuds hybrides. Bottlerocket est uniquement pris en charge dans les environnements AWS vSphere VMware . AL2023 n'est pas couvert par les plans de AWS Support lorsqu'il est exécuté en dehors d'Amazon EC2. AL2023 ne peut être utilisé que dans des environnements virtualisés sur site. Consultez le [guide de l'utilisateur Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html) pour plus d'informations. AWS prend en charge l'intégration des nœuds hybrides avec les systèmes d'exploitation Ubuntu et RHEL, mais ne fournit pas de support pour le système d'exploitation lui-même.

Vous êtes responsable de la mise à disposition et de la gestion du système d’exploitation. Lorsque vous testez des nœuds hybrides pour la première fois, il est plus simple d’exécuter la CLI des nœuds hybrides Amazon EKS (`nodeadm`) sur un hôte déjà provisionné. Pour les déploiements en production, nous vous recommandons d’inclure `nodeadm` dans vos images de système d’exploitation de référence une configuration permettant leur exécution en tant que service systemd afin de joindre automatiquement les hôtes aux clusters Amazon EKS au démarrage de l’hôte.

## Fournisseur d’informations d’identification IAM sur site
<a name="hybrid-nodes-prereqs-iam"></a>

Les nœuds hybrides Amazon EKS utilisent des informations d'identification IAM temporaires fournies par des activations hybrides AWS SSM ou par AWS IAM Roles Anywhere pour s'authentifier auprès du cluster Amazon EKS. Vous devez utiliser des activations hybrides AWS SSM ou des rôles AWS IAM Anywhere avec la CLI Amazon EKS Hybrid Nodes (). `nodeadm` Nous vous recommandons d'utiliser les activations hybrides AWS SSM si vous ne possédez pas d'infrastructure à clé publique (PKI) existante dotée d'une autorité de certification (CA) et de certificats pour vos environnements sur site. Si vous disposez d'une infrastructure PKI et de certificats sur site, utilisez AWS IAM Roles Anywhere.

Comme pour [Rôle IAM de nœud Amazon EKS](create-node-role.md) avec les nœuds exécutés sur Amazon EC2, vous allez créer un rôle IAM pour les nœuds hybrides avec les autorisations nécessaires pour joindre les nœuds hybrides aux clusters Amazon EKS. Si vous utilisez AWS IAM Roles Anywhere, configurez une politique de confiance qui permet à AWS IAM Roles Anywhere d'assumer le rôle IAM de nœuds hybrides et configurez votre profil AWS IAM Roles Anywhere avec le rôle IAM de nœuds hybrides comme rôle assumé. Si vous utilisez AWS SSM, configurez une politique de confiance qui permet à AWS SSM d'assumer le rôle IAM des nœuds hybrides et de créer l'activation hybride avec le rôle IAM des nœuds hybrides. Consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md) pour découvrir comment créer le rôle IAM des nœuds hybrides avec les autorisations requises.

# Préparer la mise en réseau pour les nœuds hybrides
<a name="hybrid-nodes-networking"></a>

Cette rubrique fournit une vue d’ensemble de la configuration réseau que vous devez avoir configurée avant de créer votre cluster Amazon EKS et d’y attacher des nœuds hybrides. Ce guide part du principe que vous avez satisfait aux exigences requises pour la connectivité réseau hybride à l'aide d'[AWS Site-to-Site un VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html), de [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) ou de votre propre solution VPN.

![\[Connectivité réseau à nœuds hybrides.\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Configuration réseau sur site
<a name="hybrid-nodes-networking-on-prem"></a>

### Configuration réseau minimale requise
<a name="hybrid-nodes-networking-min-reqs"></a>

Pour une expérience optimale, nous vous recommandons de disposer d'une connectivité réseau fiable d'au moins 100 Mbits/s et d'une latence aller-retour maximale de 200 ms pour la connexion des nœuds hybrides à la AWS région. Il s’agit d’une recommandation générale qui s’applique à la plupart des cas d’utilisation, mais qui ne constitue pas une exigence stricte. Les exigences en matière de bande passante et de latence peuvent varier en fonction du nombre de nœuds hybrides et des caractéristiques de votre charge de travail, telles que la taille de l'image de l'application, l'élasticité de l'application, les configurations de surveillance et de journalisation, ainsi que les dépendances des applications en matière d'accès aux données stockées dans d'autres AWS services. Nous vous recommandons d’effectuer des tests avec vos propres applications et environnements avant le déploiement en production afin de vérifier que votre configuration réseau répond aux exigences de vos charges de travail.

### Nœud et module sur site CIDRs
<a name="hybrid-nodes-networking-on-prem-cidrs"></a>

Identifiez le nœud et le pod CIDRs que vous utiliserez pour vos nœuds hybrides et les charges de travail qui y sont exécutées. Le CIDR du nœud est attribué à partir de votre réseau local et le CIDR du pod est attribué à partir de votre interface réseau de conteneur (CNI) si vous utilisez un réseau superposé pour votre CNI. Vous transmettez votre nœud CIDRs et votre pod locaux CIDRs en tant qu'entrées lorsque vous créez votre cluster EKS avec les `RemotePodNetwork` champs `RemoteNodeNetwork` et. Votre nœud local CIDRs doit être routable sur votre réseau local. Consultez la section suivante pour obtenir des informations sur la routabilité CIDR du pod sur site.

Les blocs CIDR des nœuds et pods sur site doivent répondre aux exigences suivantes :

1. Soyez dans l'une des plages `IPv4` RFC-1918 suivantes :`10.0.0.0/8`, ou `172.16.0.0/12``192.168.0.0/16`, ou dans la plage CGNAT définie par la RFC 6598 :. `100.64.0.0/10`

1. Ne pas se chevaucher entre eux, le CIDR VPC pour votre cluster EKS ou votre CIDR de service Kubernetes `IPv4`.

### Routage du réseau de pods sur site
<a name="hybrid-nodes-networking-on-prem-pod-routing"></a>

Lorsque vous utilisez des nœuds hybrides EKS, nous vous recommandons généralement de rendre votre module sur site CIDRs routable sur votre réseau local afin de permettre une communication et des fonctionnalités complètes entre les environnements cloud et sur site.

 **Réseaux de pods routables** 

Si vous êtes en mesure de rendre votre réseau de pods routable sur votre réseau local, suivez les instructions ci-dessous.

1. Configurez le champ `RemotePodNetwork` pour votre cluster EKS avec votre CIDR de pod sur site, vos tables de routage VPC avec votre CIDR de pod sur site et votre groupe de sécurité de cluster EKS avec votre CIDR de pod sur site.

1. Il existe plusieurs techniques que vous pouvez utiliser pour rendre votre pod CIDR sur site routable sur votre réseau sur site, notamment le protocole de passerelle frontière (BGP), les routes statiques ou d’autres solutions de routage personnalisées. Le BGP est la solution recommandée car elle est plus évolutive et plus facile à gérer que les solutions alternatives qui nécessitent une configuration de routage personnalisée ou manuelle. AWS prend en charge les fonctionnalités BGP de Cilium et Calico pour les modules publicitaires CIDRs, voir [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md) et [CIDR de pods distants routables](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs) pour plus d'informations.

1. Les webhooks peuvent s’exécuter sur des nœuds hybrides, car le plan de contrôle EKS est capable de communiquer avec les adresses IP des pods attribuées aux webhooks.

1. Les charges de travail exécutées sur les nœuds cloud peuvent communiquer directement avec les charges de travail exécutées sur les nœuds hybrides du même cluster EKS.

1. D'autres AWS services, tels que les équilibreurs de charge des AWS applications et Amazon Managed Service for Prometheus, sont capables de communiquer avec les charges de travail exécutées sur des nœuds hybrides afin d'équilibrer le trafic réseau et de récupérer les métriques des pods.

 **Réseaux de pods non routables** 

Si vous ne parvenez *pas* à rendre vos réseaux de pods routables sur votre réseau local, suivez les instructions ci-dessous.

1. Les webhooks ne peuvent pas s’exécuter sur des nœuds hybrides, car ils nécessitent une connectivité entre le plan de contrôle EKS et les adresses IP des pods attribuées aux webhooks. Dans ce cas, nous vous recommandons d’exécuter les webhooks sur les nœuds cloud du même cluster EKS que vos nœuds hybrides. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

1. Les charges de travail exécutées sur des nœuds cloud ne peuvent pas communiquer directement avec les charges de travail exécutées sur des nœuds hybrides lorsque vous utilisez VPC CNI pour les nœuds cloud et Cilium ou Calico pour les nœuds hybrides.

1. Utilisez la distribution du trafic de service pour maintenir le trafic local dans la zone d’où il provient. Pour plus d’informations sur la distribution du trafic de service, voir [Configuration de la distribution du trafic de service](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).

1. Configurez votre CNI pour utiliser le masquage de sortie ou la traduction d’adresses réseau (NAT) pour le trafic des pods lorsqu’il quitte vos hôtes sur site. Cette fonctionnalité est activée par défaut dans Cilium. Calico a besoin que `natOutgoing` soit défini sur `true`.

1. D'autres AWS services, tels que les équilibreurs de charge d' AWS application et Amazon Managed Service for Prometheus, ne sont pas en mesure de communiquer avec les charges de travail exécutées sur des nœuds hybrides.

### Accès requis pendant l’installation et la mise à niveau des nœuds hybrides
<a name="hybrid-nodes-networking-access-reqs"></a>

Vous devez avoir accès aux domaines suivants pendant le processus d’installation où vous installez les dépendances des nœuds hybrides sur vos hôtes. Ce processus peut être effectué une seule fois lors de la création des images de votre système d’exploitation ou sur chaque hôte au moment de l’exécution. Cela inclut l’installation initiale et la mise à niveau de la version Kubernetes de vos nœuds hybrides.

Certains paquets sont installés à l’aide du gestionnaire de paquets par défaut du système d’exploitation. Pour AL2023 et RHEL, la `yum` commande est utilisée pour installer `containerd``ca-certificates`, `iptables` et`amazon-ssm-agent`. Pour Ubuntu, `apt` est utilisé pour installer `containerd`, `ca-certificates`, et `iptables`, et `snap` sert à installer `amazon-ssm-agent`.


| Composant | URL |  Protocole |  Port | 
| --- | --- | --- | --- | 
|  Artefacts du nœud EKS (S3)  |  https://hybrid-assets.eks.amazonaws.com  |  HTTPS  |  443  | 
|   [Points de terminaison du service EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  https://eks. *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [Points de terminaison du service ECR](https://docs.aws.amazon.com/general/latest/gr/ecr.html)   |  https://api.ecr. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Points de terminaison EKS ECR  |  Voir [Affichage des registres d’images conteneurs Amazon pour les modules complémentaires Amazon EKS](add-ons-images.md) pour les points terminaux régionaux.  |  HTTPS  |  443  | 
|  Point de terminaison binaire SSM 1   |  https://amazon-ssm - *region* .s3. *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [Point de terminaison du service SSM](https://docs.aws.amazon.com/general/latest/gr/ssm.html) 1   |  https://ssm. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Point de terminaison binaire IAM Anywhere 2   |  https://rolesanywhere.amazonaws.com  |  HTTPS  |  443  | 
|   [Point de terminaison du service IAM](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html) Anywhere 2   |  https://rolesanywhere. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Points de terminaison du gestionnaire de paquets du système d’exploitation  |  Les points de terminaison du référentiel de paquets sont spécifiques au système d’exploitation et peuvent varier selon la région géographique.  |  HTTPS  |  443  | 

**Note**  
 1 L'accès aux points de terminaison AWS SSM n'est requis que si vous utilisez des activations hybrides AWS SSM pour votre fournisseur d'informations d'identification IAM sur site.  
 2 L'accès aux points de terminaison AWS IAM n'est requis que si vous utilisez AWS IAM Roles Anywhere comme fournisseur d'informations d'identification IAM sur site.

### Accès requis pour les opérations de cluster en cours
<a name="hybrid-nodes-networking-access-reqs-ongoing"></a>

L’accès réseau suivant pour votre pare-feu local est nécessaire pour le fonctionnement continu du cluster.

**Important**  
En fonction du CNI que vous avez choisi, vous devez configurer des règles d’accès réseau supplémentaires pour les ports CNI. Pour plus d’informations, consultez la [documentation Cilium](https://docs.cilium.io/en/stable/operations/system_requirements/#firewall-rules) et la [documentation Calico](https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements#network-requirements).


| Type |  Protocole | Direction |  Port | Source | Destination | Usage | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  Sortant  |  443  |  CIDR des nœuds distants  |  Cluster EKS IPs 1   |  kubelet vers le serveur API Kubernetes  | 
|  HTTPS  |  TCP  |  Sortant  |  443  |  CIDR de pod distant(s)  |  Cluster EKS IPs 1   |  Pod vers serveur API Kubernetes  | 
|  HTTPS  |  TCP  |  Sortant  |  443  |  CIDR des nœuds distants  |   [Point de terminaison du service SSM](https://docs.aws.amazon.com/general/latest/gr/ssm.html)   |  Actualisation des informations d’identification des activations hybrides SSM et pulsations SSM toutes les 5 minutes  | 
|  HTTPS  |  TCP  |  Sortant  |  443  |  CIDR des nœuds distants  |   [Point de terminaison du service IAM Anywhere](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html)   |  Actualisation des informations d’identification Rôles Anywhere IAM  | 
|  HTTPS  |  TCP  |  Sortant  |  443  |  CIDR de pod distant(s)  |   [Point de terminaison régional STS](https://docs.aws.amazon.com/general/latest/gr/sts.html)   |  Pod vers point de terminaison STS, requis uniquement pour IRSA  | 
|  HTTPS  |  TCP  |  Sortant  |  443  |  CIDR des nœuds distants  |   [Point de terminaison du service d’authentification Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  Nœud vers le point de terminaison d’authentification Amazon EKS, requis uniquement pour l’identité du pod Amazon EKS  | 
|  HTTPS  |  TCP  |  Entrant  |  10250  |  Cluster EKS IPs 1   |  CIDR des nœuds distants  |  Serveur API Kubernetes vers kubelet  | 
|  HTTPS  |  TCP  |  Entrant  |  Ports Webhook  |  Cluster EKS IPs 1   |  CIDR de pod distant(s)  |  Serveur API Kubernetes vers webhooks  | 
|  HTTPS  |  TCP, UDP  |  Entrant, sortant  |  53  |  CIDR de pod distant(s)  |  CIDR de pod distant(s)  |  Pod vers CoreDNS. Si vous exécutez au moins un réplica de CoreDNS dans le cloud, vous devez autoriser le trafic DNS vers le VPC où CoreDNS est exécuté.  | 
|  Défini par l’utilisateur  |  Défini par l’utilisateur  |  Entrant, sortant  |  Ports d’applications  |  CIDR de pod distant(s)  |  CIDR de pod distant(s)  |  Pod à pod  | 

**Note**  
 1 Celui IPs du cluster EKS. Consultez la section suivante sur les interfaces réseau Elastic Amazon EKS.

### Interfaces réseau Amazon EKS
<a name="hybrid-nodes-networking-eks-network-interfaces"></a>

Amazon EKS associe des interfaces réseau aux sous-réseaux du VPC que vous transmettez lors de la création du cluster afin de permettre la communication entre le plan de contrôle EKS et votre VPC. Les interfaces réseau créées par Amazon EKS se trouvent après la création du cluster dans la console Amazon EC2 ou à l'aide de la CLI AWS . Les interfaces réseau d’origine sont supprimées et de nouvelles interfaces réseau sont créées lorsque des modifications sont appliquées à votre cluster EKS, telles que les mises à niveau de version Kubernetes. Vous pouvez restreindre la plage d'adresses IP des interfaces réseau Amazon EKS en utilisant des tailles de sous-réseaux limitées pour les sous-réseaux que vous transmettez lors de la création du cluster, ce qui facilite la configuration de votre pare-feu sur site afin de permettre la inbound/outbound connectivité à cet ensemble connu et restreint de. IPs Pour contrôler les sous-réseaux dans lesquels les interfaces réseau sont créées, vous pouvez limiter le nombre de sous-réseaux que vous spécifiez lors de la création d’un cluster ou mettre à jour les sous-réseaux après avoir créé le cluster.

Les interfaces réseau fournies par Amazon EKS ont une description au format `Amazon EKS your-cluster-name `. Consultez l'exemple ci-dessous pour une commande AWS CLI que vous pouvez utiliser pour trouver les adresses IP des interfaces réseau approvisionnées par Amazon EKS. Remplacez par l’ID du VPC que vous avez transmis lors de la création du cluster par `VPC_ID`.

```
aws ec2 describe-network-interfaces \
--query 'NetworkInterfaces[?(VpcId == VPC_ID && contains(Description,Amazon EKS))].PrivateIpAddress'
```

## AWS Configuration du VPC et du sous-réseau
<a name="hybrid-nodes-networking-vpc"></a>

Les [exigences existantes en matière de VPC et de sous-réseau](network-reqs.md) pour Amazon EKS s’appliquent aux clusters avec des nœuds hybrides. En outre, votre VPC CIDR ne peut pas chevaucher votre nœud et votre pod locaux. CIDRs Vous devez configurer les itinéraires dans votre table de routage VPC pour votre nœud local et éventuellement pour votre pod. CIDRs Ces routes doivent être configurées pour acheminer le trafic vers la passerelle que vous utilisez pour votre connectivité réseau hybride, qui est généralement une passerelle privée virtuelle (VGW) ou une passerelle de transit (TGW). Si vous utilisez TGW ou VGW pour connecter votre VPC à votre environnement sur site, vous devez créer une connexion TGW ou VGW pour votre VPC. Votre VPC doit prend en charge le nom d'hôte DNS et la résolution DNS.

Les étapes suivantes utilisent la AWS CLI. Vous pouvez également créer ces ressources dans AWS Management Console ou avec d'autres interfaces telles que AWS CloudFormation AWS CDK ou Terraform.

### Étape 1 : créer un VPC
<a name="_step_1_create_vpc"></a>

1. Exécutez la commande suivante pour créer un VPC. Remplacez VPC\$1CIDR par une plage d'adresses IPv4 CIDR qui est soit RFC 1918 (privée), CGNAT (RFC 6598), soit non-RFC 1918/non-CGNAT (public) (par exemple, 10.0.0.0/16). Remarque : la résolution DNS, qui est une exigence EKS, est activée par défaut pour le VPC.

   ```
   aws ec2 create-vpc --cidr-block VPC_CIDR
   ```

1. Activez les noms d’hôte DNS pour votre VPC. Remarque : la résolution DNS est activée par défaut pour le VPC. Remplacez `VPC_ID` par l’ID du VPC que vous avez créé à l’étape précédente.

   ```
   aws ec2 modify-vpc-attribute --vpc-id VPC_ID --enable-dns-hostnames
   ```

### Étape 2 : créer des sous-réseaux
<a name="_step_2_create_subnets"></a>

Créez au moins 2 sous-réseaux. Amazon EKS utilise ces sous-réseaux pour les interfaces réseau du cluster. Pour plus d’informations, consultez la section [Exigences et considérations relatives aux sous-réseaux](network-reqs.md#network-requirements-subnets).

1. Vous pouvez trouver les zones de disponibilité d'une AWS région à l'aide de la commande suivante. Remplacez `us-west-2` par votre région.

   ```
   aws ec2 describe-availability-zones \
        --query 'AvailabilityZones[?(RegionName == us-west-2)].ZoneName'
   ```

1. Créez un sous-réseau. Remplacez `VPC_ID` par l’ID du VPC. Remplacez `SUBNET_CIDR` par le bloc CIDR de votre sous-réseau (par exemple 10.0.1.0/24). Remplacez `AZ` par la zone de disponibilité dans laquelle le sous-réseau sera créé (par exemple us-west-2a). Les sous-réseaux que vous créez doivent se trouver dans au moins deux zones de disponibilité différentes.

   ```
   aws ec2 create-subnet \
       --vpc-id VPC_ID \
       --cidr-block SUBNET_CIDR \
       --availability-zone AZ
   ```

### (Facultatif) Étape 3 : associer un VPC à la passerelle privée virtuelle Amazon VPC Transit Gateway (TGW) ou AWS Direct Connect (VGW)
<a name="optional_step_3_attach_vpc_with_amazon_vpc_transit_gateway_tgw_or_shared_aws_direct_connect_virtual_private_gateway_vgw"></a>

Si vous utilisez un TGW ou un VGW, connectez votre VPC au TGW ou au VGW. Pour plus d’informations, consultez la section [Pièces jointes Amazon VPC dans les passerelles de transit Amazon VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html) ou [Associations de passerelles privées virtuelles Direct Connect AWS](https://docs.aws.amazon.com/vpn/latest/s2svpn/how_it_works.html#VPNGateway).

 **Passerelle de transit** 

Exécutez la commande suivante pour connecter une passerelle Transit Gateway. Remplacez `VPC_ID` par l’ID du VPC. Remplacez `SUBNET_ID1` et `SUBNET_ID2` par IDs les sous-réseaux que vous avez créés à l'étape précédente. Remplacez `TGW_ID` par l’ID de votre TGW.

```
aws ec2 create-transit-gateway-vpc-attachment \
    --vpc-id VPC_ID \
    --subnet-ids SUBNET_ID1 SUBNET_ID2 \
    --transit-gateway-id TGW_ID
```

 **Passerelle privée virtuelle** 

Exécutez la commande suivante pour connecter une passerelle Transit Gateway. Remplacez `VPN_ID` par l’ID de votre VGW. Remplacez `VPC_ID` par l’ID du VPC.

```
aws ec2 attach-vpn-gateway \
    --vpn-gateway-id VPN_ID \
    --vpc-id VPC_ID
```

### (Facultatif) Étape 4 : créer une table de routage
<a name="_optional_step_4_create_route_table"></a>

Vous pouvez modifier la table de routage principale pour le VPC ou créer une table de routage personnalisée. Les étapes suivantes créent une table de routage personnalisée avec les itinéraires vers le nœud et le pod CIDRs locaux. Pour plus d’informations, consultez [Tables de routage de sous-réseau](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-route-tables.html). Remplacez `VPC_ID` par l’ID du VPC.

```
aws ec2 create-route-table --vpc-id VPC_ID
```

### Étape 5 : créer des routes pour les nœuds et les pods sur site
<a name="_step_5_create_routes_for_on_premises_nodes_and_pods"></a>

Créez des routes dans la table de routage pour chacun de vos nœuds distants sur site. Vous pouvez modifier la table de routage principale pour le VPC ou utiliser la table de routage personnalisée que vous avez créée à l’étape précédente.

Les exemples ci-dessous montrent comment créer des itinéraires pour votre nœud et votre pod CIDRs locaux. Dans les exemples, une passerelle de transit (TGW) est utilisée pour connecter le VPC à l’environnement sur site. Si vous disposez de plusieurs nœuds et pods sur site CIDRs, répétez les étapes pour chaque CIDR.
+ Si vous utilisez une passerelle Internet ou une passerelle privée virtuelle (VGW), remplacez `--transit-gateway-id` par `--gateway-id`.
+ Remplacez `RT_ID` par l’ID de la table de routage que vous avez créée à l’étape précédente.
+ Remplacez `REMOTE_NODE_CIDR` par la plage CIDR que vous utiliserez pour vos nœuds hybrides.
+ Remplacez `REMOTE_POD_CIDR` par la plage CIDR que vous utiliserez pour les pods s’exécutant sur des nœuds hybrides. La plage CIDR du pod correspond à la configuration CNI (Container Networking Interface), qui utilise le plus souvent un réseau superposé sur site. Pour de plus amples informations, veuillez consulter [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).
+ Remplacez `TGW_ID` par l’ID de votre TGW.

 **Réseau de nœuds distants** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_NODE_CIDR \
    --transit-gateway-id TGW_ID
```

 **Réseau de pods distants** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_POD_CIDR \
    --transit-gateway-id TGW_ID
```

### (Facultatif) Étape 6 : associer les sous-réseaux à la table de routage
<a name="_optional_step_6_associate_subnets_with_route_table"></a>

Si vous avez créé une table de routage personnalisée à l’étape précédente, associez chacun des sous-réseaux que vous avez créés à l’étape précédente à votre table de routage personnalisée. Si vous modifiez la table de routage principale du VPC, les sous-réseaux sont automatiquement associés à la table de routage principale du VPC et vous pouvez ignorer cette étape.

Exécutez la commande suivante pour chacun des sous-réseaux que vous avez créés lors des étapes précédentes. Remplacer `RT_ID` par la table de routage que vous avez créée à l’étape précédente. Remplacer `SUBNET_ID` par l’ID d’un sous-réseau.

```
aws ec2 associate-route-table --route-table-id RT_ID --subnet-id SUBNET_ID
```

## Configuration du groupe de sécurité du cluster
<a name="hybrid-nodes-networking-cluster-sg"></a>

L’accès suivant pour votre groupe de sécurité de cluster EKS est nécessaire pour le fonctionnement continu du cluster. Amazon EKS crée automatiquement les règles de groupe de sécurité **entrantes** requises pour les nœuds hybrides lorsque vous créez ou mettez à jour votre cluster avec des réseaux de nœuds distants et de pods configurés. Étant donné que les groupes de sécurité autorisent par défaut tout le trafic **sortant**, Amazon EKS ne modifie pas automatiquement les règles **sortantes** du groupe de sécurité du cluster pour les nœuds hybrides. Si vous souhaitez personnaliser le groupe de sécurité du cluster, vous pouvez limiter le trafic aux règles indiquées dans le tableau suivant.


| Type |  Protocole | Direction |  Port | Source | Destination | Usage | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  Entrant  |  443  |  CIDR des nœuds distants  |  N/A  |  Kubelet vers le serveur API Kubernetes  | 
|  HTTPS  |  TCP  |  Entrant  |  443  |  CIDR de pod distant(s)  |  N/A  |  Pods nécessitant un accès au serveur API K8s lorsque le CNI n’utilise pas NAT pour le trafic des pods.  | 
|  HTTPS  |  TCP  |  Sortant  |  10250  |  N/A  |  CIDR des nœuds distants  |  Serveur API Kubernetes vers Kubelet  | 
|  HTTPS  |  TCP  |  Sortant  |  Ports Webhook  |  N/A  |  CIDR de pod distant(s)  |  Serveur API Kubernetes vers webhook (si vous exécutez des webhooks sur des nœuds hybrides)  | 

**Important**  
 **Limites des règles des groupes de sécurité** : les groupes de sécurité Amazon EC2 ont un maximum de 60 règles entrantes par défaut. Les règles entrantes du groupe de sécurité peuvent ne pas s’appliquer si le groupe de sécurité de votre cluster approche cette limite. Dans ce cas, il peut être nécessaire d’ajouter manuellement les règles entrantes manquantes.  
 **Responsabilité du nettoyage CIDR** : si vous supprimez des réseaux de nœuds distants ou de pods des clusters EKS, EKS ne supprime pas automatiquement les règles de groupe de sécurité correspondantes. Vous êtes responsable de la suppression manuelle des réseaux de nœuds distants ou de pods inutilisés de vos règles de groupe de sécurité.

Pour plus d'informations sur le groupe de sécurité de cluster créé par Amazon EKS, consultez [Voir les exigences relatives aux groupes de sécurité Amazon EKS pour les clusters](sec-group-reqs.md).

### (Facultatif) Configuration manuelle du groupe de sécurité
<a name="_optional_manual_security_group_configuration"></a>

Si vous devez créer des groupes de sécurité supplémentaires ou modifier les règles créées automatiquement, vous pouvez utiliser les commandes suivantes comme référence. Par défaut, la commande ci-dessous crée un groupe de sécurité qui autorise tous les accès sortants. Vous pouvez restreindre l’accès sortant afin qu’il n’inclue que les règles ci-dessus. Si vous envisagez de limiter les règles sortantes, nous vous recommandons de tester minutieusement toutes vos applications et la connectivité des pods avant d’appliquer vos règles modifiées à un cluster de production.
+ Dans la première commande, remplacez `SG_NAME` par le nom de votre groupe de sécurité.
+ Dans la première commande, remplacez `VPC_ID` par l’ID du VPC que vous avez créé à l’étape précédente.
+ Dans la deuxième commande, remplacez `SG_ID` par l’ID du groupe de sécurité que vous avez créé dans la première commande.
+ Dans la deuxième commande, remplacez `REMOTE_NODE_CIDR` et `REMOTE_POD_CIDR` par les valeurs correspondant à vos nœuds hybrides et à votre réseau local.

```
aws ec2 create-security-group \
    --group-name SG_NAME \
    --description "security group for hybrid nodes" \
    --vpc-id VPC_ID
```

```
aws ec2 authorize-security-group-ingress \
    --group-id SG_ID \
    --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "REMOTE_NODE_CIDR"}, {"CidrIp": "REMOTE_POD_CIDR"}]}]'
```

# Préparer le système d’exploitation pour les nœuds hybrides
<a name="hybrid-nodes-os"></a>

Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu et RHEL sont validés en permanence pour être utilisés comme système d'exploitation de nœuds pour les nœuds hybrides. Bottlerocket est uniquement pris en charge dans les environnements AWS vSphere VMware . AL2Le 023 n'est pas couvert par les plans de AWS Support lorsqu'il est exécuté en dehors d'Amazon EC2. AL2Le 023 ne peut être utilisé que dans des environnements virtualisés sur site. Consultez le [guide de l'utilisateur Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html) pour plus d'informations. AWS prend en charge l'intégration des nœuds hybrides avec les systèmes d'exploitation Ubuntu et RHEL, mais ne fournit pas de support pour le système d'exploitation lui-même.

Vous êtes responsable de la mise à disposition et de la gestion du système d’exploitation. Lorsque vous testez des nœuds hybrides pour la première fois, il est plus simple d’exécuter la CLI des nœuds hybrides Amazon EKS (`nodeadm`) sur un hôte déjà provisionné. Pour les déploiements en production, nous vous recommandons d’inclure `nodeadm` dans vos images de système d’exploitation une configuration permettant leur exécution en tant que service systemd afin de joindre automatiquement les hôtes aux clusters Amazon EKS au démarrage de l’hôte. Si vous utilisez Bottlerocket comme système d’exploitation de nœud sur vSphere, vous n’avez pas besoin d’utiliser `nodeadm`, car Bottlerocket contient déjà les dépendances requises pour les nœuds hybrides et se connectera automatiquement au cluster que vous configurez au démarrage de l’hôte.

## Compatibilité des versions
<a name="_version_compatibility"></a>

Le tableau ci-dessous présente les versions de système d’exploitation compatibles et validées pour être utilisées comme système d’exploitation de nœud pour les nœuds hybrides. Si vous utilisez d'autres variantes ou versions de système d'exploitation qui ne sont pas incluses dans ce tableau, la compatibilité des nœuds hybrides avec la variante ou la version de votre système d'exploitation n'est pas couverte par le AWS Support. Les nœuds hybrides sont indépendants de l’infrastructure sous-jacente et prennent en charge les architectures x86 et ARM.


| Système d’exploitation | Versions | 
| --- | --- | 
|  Amazon Linux  |  Amazon Linux 2023 (AL2023)  | 
|  Flacon Rocket  |  Variantes v1.37.0 et supérieures exécutant Kubernetes v1.28 et VMware versions ultérieures  | 
|  Ubuntu  |  Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04  | 
|  Utilisation de Red Hat Enterprise Linux  |  RHEL 8, RHEL 9  | 

## Considérations relatives au système d’exploitation
<a name="_operating_system_considerations"></a>

### Général
<a name="_general"></a>
+ La CLI des nœuds hybrides Amazon EKS (`nodeadm`) peut être utilisée pour simplifier l’installation et la configuration des composants et des dépendances des nœuds hybrides. Vous pouvez exécuter le processus `nodeadm install` pendant la création des pipelines d’image de votre système d’exploitation ou au moment de l’exécution sur chaque hôte sur site. Pour plus d’informations sur les composants installés `nodeadm`, consultez le [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).
+ Si vous utilisez un proxy dans votre environnement sur site pour accéder à Internet, une configuration supplémentaire du système d’exploitation est nécessaire pour les processus d’installation et de mise à niveau afin de configurer votre gestionnaire de paquets pour qu’il utilise le proxy. Pour obtenir des instructions, consultez [Configurer le proxy pour les nœuds hybrides](hybrid-nodes-proxy.md).

### Flacon Rocket
<a name="_bottlerocket"></a>
+ Les étapes et les outils nécessaires pour connecter un nœud Bottlerocket diffèrent de ceux utilisés pour les autres systèmes d’exploitation et sont décrits séparément dans [Connectez des nœuds hybrides avec Bottlerocket](hybrid-nodes-bottlerocket.md), plutôt que dans [Connecter les nœuds hybrides](hybrid-nodes-join.md).
+ Les étapes pour Bottlerocket n’utilisent pas la CLI des nœuds hybrides, `nodeadm`.
+ Seules les VMware variantes de la version v1.37.0 et supérieures de Bottlerocket sont prises en charge avec les nœuds hybrides EKS. VMware des variantes de Bottlerocket sont disponibles pour les versions v1.28 et supérieures de Kubernetes. Les [autres variantes de Bottlerocket](https://bottlerocket.dev/en/os/1.36.x/concepts/variants) ne sont pas prises en charge en tant que système d’exploitation des nœuds hybrides. REMARQUE : les VMware variantes de Bottlerocket ne sont disponibles que pour l'architecture x86\$164.

### Containerd
<a name="_containerd"></a>
+ Containerd est l’exécution de conteneur Kubernetes standard et est une dépendance pour les nœuds hybrides, ainsi que pour tous les types de calcul de nœuds Amazon EKS. La CLI des nœuds hybrides Amazon EKS (`nodeadm`) tente d’installer containerd pendant le processus `nodeadm install`. Vous pouvez configurer l’installation de containerd lors de l’exécution `nodeadm install` à l’aide de l’option de ligne de commande `--containerd-source`. Les options valides sont `none`, `distro` et `docker`. Si vous utilisez RHEL, `distro` n’est pas une option valide. Vous pouvez soit configurer `nodeadm` pour installer la version de containerd à partir des référentiels Docker, soit installer containerd manuellement. Lorsque vous utilisez AL2 023 ou Ubuntu, installez `nodeadm` par défaut containerd à partir de la distribution du système d'exploitation. Si vous ne souhaitez pas que nodeadm installe containerd, utilisez l’option `--containerd-source none`.

### Ubuntu
<a name="_ubuntu"></a>
+ Si vous utilisez Ubuntu 24.04, vous devrez peut-être mettre à jour votre version de containerd ou modifier AppArmor votre configuration pour adopter un correctif permettant aux pods de s'arrêter correctement, [voir](https://bugs.launchpad.net/ubuntu/+source/containerd-app/\+bug/2065423) Ubuntu \$12065423. Un redémarrage est nécessaire pour appliquer les modifications au AppArmor profil. La dernière version d’Ubuntu 24.04 dispose d’une version mise à jour de containerd dans son gestionnaire de paquets avec le correctif (containerd version 1.7.19\$1).

### ARM
<a name="_arm"></a>
+ Si vous utilisez du matériel ARM, un processeur compatible ARMv8 .2 avec l'extension de cryptographie (ARMv8.2\$1crypto) est requis pour exécuter les versions 1.31 et supérieures du module complémentaire EKS kube-proxy. Tous les systèmes Raspberry Pi antérieurs au Raspberry Pi 5, ainsi que les processeurs basés sur Cortex-A72, ne répondent pas à cette exigence. Comme solution de contournement, vous pouvez continuer à utiliser la version 1.30 du module complémentaire EKS kube-proxy jusqu’à la fin de son support étendu en juillet 2026 (voir le [calendrier des versions Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)), ou utiliser une image kube-proxy personnalisée provenant de l’amont.
+ Le message d’erreur suivant dans le journal kube-proxy indique cette incompatibilité :

```
Fatal glibc error: This version of Amazon Linux requires a newer ARM64 processor compliant with at least ARM architecture 8.2-a with Cryptographic extensions. On EC2 this is Graviton 2 or later.
```

## Création d’images du système d’exploitation
<a name="_building_operating_system_images"></a>

Amazon EKS fournit des [exemples de modèles Packer](https://github.com/aws/eks-hybrid/tree/main/example/packer) que vous pouvez utiliser pour créer des images de système d’exploitation qui incluent `nodeadm` et configurent Packer pour qu’il s’exécute au démarrage de l’hôte. Ce processus est recommandé pour éviter de tirer individuellement les dépendances des nœuds hybrides sur chaque hôte et pour automatiser le processus de démarrage des nœuds hybrides. Vous pouvez utiliser les modèles Packer fournis à titre d’exemple avec une image ISO Ubuntu 22.04, Ubuntu 24.04, RHEL 8 ou RHEL 9 et générer des images aux formats suivants : OVA, Qcow2 ou raw.

### Conditions préalables
<a name="_prerequisites"></a>

Avant d’utiliser les modèles Packer fournis à titre d’exemple, vous devez avoir installé les éléments suivants sur la machine à partir de laquelle vous exécutez Packer.
+ Packer version 1.11.0 ou supérieure. Pour obtenir des instructions sur l’installation de Packer, consultez la section [Installer Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) dans la documentation Packer.
+ En cas de compilation OVAs, VMware vSphere plugin 1.4.0 ou version ultérieure
+ Si vous créez `Qcow2` ou des images brutes, utilisez le plug-in QEMU version 1.x.

### Définir les variables d'environnement
<a name="_set_environment_variables"></a>

Avant d’exécuter la compilation Packer, définissez les variables d’environnement suivantes sur la machine à partir de laquelle vous exécutez Packer.

 **Général** 

Les variables d’environnement suivantes doivent être définies pour créer des images avec tous les systèmes d’exploitation et formats de sortie.


| Variable d’environnement | Type | Description | 
| --- | --- | --- | 
|  PKR\$1SSH\$1PASSWORD  |  String  |  Packer utilise les variables `ssh_username` et `ssh_password` pour se connecter via SSH à la machine créée lors du provisionnement. Cela doit correspondre aux mots de passe utilisés pour créer l’utilisateur initial dans les fichiers kickstart ou user-data du système d’exploitation concerné. La valeur par défaut est définie comme « builder » ou « ubuntu » selon le système d’exploitation. Lorsque vous définissez votre mot de passe, veillez à le modifier dans le fichier `ks.cfg` ou `user-data` correspondant afin qu’il corresponde.  | 
|  ISO\$1URL  |  String  |  URL de l’ISO à utiliser. Peut être un lien Web pour télécharger depuis un serveur ou un chemin absolu vers un fichier local  | 
|  ISO\$1CHECKSUM  |  String  |  Somme de contrôle associée pour l’ISO fournie.  | 
|  CREDENTIAL\$1PROVIDER  |  String  |  Fournisseur d’informations d’identification pour les nœuds hybrides. Les valeurs valides sont `ssm` (par défaut) pour les activations hybrides SSM et `iam` pour Rôles Anywhere IAM  | 
|  K8S\$1VERSION  |  String  |  Version Kubernetes pour les nœuds hybrides (par exemple `1.31`). Pour connaître les versions Kubernetes prises en charge, consultez la page [Versions Amazon EKS prises en charge](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).  | 
|  NODEADM\$1ARCH  |  String  |  Architecture pour `nodeadm install`. Sélectionnez `amd` ou `arm`.  | 

 **RHEL** 

Si vous utilisez RHEL, les variables d’environnement suivantes doivent être définies.


| Variable d’environnement | Type | Description | 
| --- | --- | --- | 
|  RH\$1USERNAME  |  String  |  Nom d’utilisateur du gestionnaire d’abonnement RHEL  | 
|  RH\$1PASSWORD  |  String  |  Mot de passe du gestionnaire d’abonnements RHEL  | 
|  RHEL\$1VERSION  |  String  |  Version Rhel iso utilisée. Les valeurs valides sont `8` ou `9`.  | 

 **Ubuntu** 

Aucune variable d’environnement spécifique à Ubuntu n’est requise.

 **vSphere** 

Si vous créez un VMware vSphere OVA, les variables d'environnement suivantes doivent être définies.


| Variable d’environnement | Type | Description | 
| --- | --- | --- | 
|  VSPHERE\$1SERVER  |  String  |  Adresse du serveur vSphere  | 
|  VSPHERE\$1USER  |  String  |  Nom d’utilisateur vSphere  | 
|  VSPHERE\$1PASSWORD  |  String  |  Mot de passe vSphere  | 
|  VSPHERE\$1DATACENTER  |  String  |  Nom du centre de données vSphere  | 
|  VSPHERE\$1CLUSTER  |  String  |  Nom du cluster vSphere  | 
|  VSPHERE\$1DATASTORE  |  String  |  Nom de l’entrepôt de données vSphere  | 
|  VSPHERE\$1NETWORK  |  String  |  Nom du réseau vSphere  | 
|  VSPHERE\$1OUTPUT\$1FOLDER  |  String  |  Dossier de sortie vSphere pour les modèles  | 

 **QEMU** 


| Variable d’environnement | Type | Description | 
| --- | --- | --- | 
|  PACKER\$1OUTPUT\$1FORMAT  |  String  |  Format de sortie pour le générateur QEMU. Les valeurs valides sont `qcow2` et `raw`.  | 

 **Valider le modèle** 

Avant d’exécuter votre build, validez votre modèle à l’aide de la commande suivante après avoir défini vos variables d’environnement. Remplacez `template.pkr.hcl` si vous utilisez un nom différent pour votre modèle.

```
packer validate template.pkr.hcl
```

### Créer des images
<a name="_build_images"></a>

Créez vos images à l’aide des commandes suivantes et utilisez l’indicateur `-only` pour spécifier la cible et le système d’exploitation de vos images. Remplacez `template.pkr.hcl` si vous utilisez un autre nom pour votre modèle.

 **vSphere OVAs** 

**Note**  
Si vous utilisez RHEL avec vSphere, vous devez convertir les fichiers Kickstart en une image OEMDRV et la transmettre sous forme d’ISO pour démarrer à partir de celle-ci. Pour plus d'informations, consultez le fichier [Packer Readme](https://github.com/aws/eks-hybrid/tree/main/example/packer#utilizing-rhel-with-vsphere) dans le référentiel EKS Hybrid Nodes GitHub .

 **Ubuntu 22.04 OVA** 

```
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
```

 **Ubuntu 24.04 OVA** 

```
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
```

 **RHEL 8 OVA** 

```
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
```

 **RHEL 9 OVA** 

```
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
```

 **QEMU** 

**Note**  
Si vous créez une image pour un processeur hôte spécifique qui ne correspond pas à votre hôte de compilation, consultez la documentation [QEMU](https://www.qemu.org/docs/master/system/qemu-cpu-models.html) pour trouver le nom qui correspond à votre processeur hôte et utilisez l’indicateur `-cpu` avec le nom du processeur hôte lorsque vous exécutez les commandes suivantes.

 **Ubuntu 22.04 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
```

 **Ubuntu 24.04 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
```

 **RHEL 8 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
```

 **RHEL 9 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
```

### Transmettre la configuration nodeadm via les données utilisateur
<a name="_pass_nodeadm_configuration_through_user_data"></a>

Vous pouvez transmettre la configuration pour `nodeadm` dans vos données utilisateur via cloud-init afin de configurer et de connecter automatiquement les nœuds hybrides à votre cluster EKS au démarrage de l’hôte. Vous trouverez ci-dessous un exemple de la manière d'y parvenir lorsque vous utilisez VMware vSphere comme infrastructure pour vos nœuds hybrides.

1. Installez la `govc` CLI en suivant les instructions du [fichier readme govc](https://github.com/vmware/govmomi/blob/main/govc/README.md) on. GitHub

1. Après avoir exécuté la compilation Packer dans la section précédente et provisionné votre modèle, vous pouvez cloner votre modèle pour créer plusieurs nœuds différents à l’aide de la commande suivante. Vous devez cloner le modèle pour chaque nouvelle machine virtuelle que vous créez et qui sera utilisée pour les nœuds hybrides. Remplacez les variables dans la commande ci-dessous par les valeurs correspondant à votre environnement. La `VM_NAME` commande ci-dessous est utilisée comme vôtre `NODE_NAME` lorsque vous injectez les noms de votre VMs via votre `metadata.yaml` fichier.

   ```
   govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \
       -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME"
   ```

1. Après avoir cloné le modèle pour chacun de vos nouveaux modèles VMs, créez un `userdata.yaml` et `metadata.yaml` pour votre VMs. VMs Vous pouvez les partager `userdata.yaml` `metadata.yaml` et vous les remplirez par machine virtuelle en suivant les étapes ci-dessous. La configuration `nodeadm` est créée et définie dans la section `write_files` de votre `userdata.yaml`. L'exemple ci-dessous utilise les activations hybrides AWS SSM comme fournisseur d'informations d'identification sur site pour les nœuds hybrides. Pour plus d’informations sur la configuration `nodeadm`, consultez le [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

    **userdata.yaml :** 

   ```
   #cloud-config
   users:
     - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu.
       passwd: # password to login. Default is 'builder' for RHEL.
       groups: [adm, cdrom, dip, plugdev, lxd, sudo]
       lock-passwd: false
       sudo: ALL=(ALL) NOPASSWD:ALL
       shell: /bin/bash
   
   write_files:
     - path: /usr/local/bin/nodeConfig.yaml
       permissions: '0644'
       content: |
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
             cluster:
                 name: # Cluster Name
                 region: # AWS region
             hybrid:
                 ssm:
                     activationCode: # Your ssm activation code
                     activationId: # Your ssm activation id
   
   runcmd:
     - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1
   ```

    **métadonnées.yaml :** 

   Créez un `metadata.yaml` pour votre environnement. Conservez le format variable `"$NODE_NAME"` dans le fichier, car il sera rempli avec des valeurs lors d’une étape ultérieure.

   ```
   instance-id: "$NODE_NAME"
   local-hostname: "$NODE_NAME"
   network:
     version: 2
     ethernets:
       nics:
         match:
           name: ens*
         dhcp4: yes
   ```

1. Ajoutez les fichiers `userdata.yaml` et `metadata.yaml` sous forme de chaînes `gzip+base64` à l’aide des commandes suivantes. Les commandes suivantes doivent être exécutées pour chacune des commandes VMs que vous créez. Remplacez `VM_NAME` par le nom de la machine virtuelle que vous mettez à jour.

   ```
   export NODE_NAME="VM_NAME"
   export USER_DATA=$(gzip -c9 <userdata.yaml | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64
   
   envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp
   export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64
   ```

1. Allumez votre nouveau VMs, qui devrait se connecter automatiquement au cluster EKS que vous avez configuré.

   ```
   govc vm.power -on "${NODE_NAME}"
   ```

# Préparer les informations d’identification pour les nœuds hybrides
<a name="hybrid-nodes-creds"></a>

Les nœuds hybrides Amazon EKS utilisent des informations d'identification IAM temporaires fournies par des activations hybrides AWS SSM ou par AWS IAM Roles Anywhere pour s'authentifier auprès du cluster Amazon EKS. Vous devez utiliser des activations hybrides AWS SSM ou des rôles AWS IAM Anywhere avec la CLI Amazon EKS Hybrid Nodes (). `nodeadm` Vous ne devez pas utiliser à la fois les activations hybrides AWS SSM et les rôles AWS IAM Anywhere. Nous vous recommandons d'utiliser les activations hybrides AWS SSM si vous ne possédez pas d'infrastructure à clé publique (PKI) existante dotée d'une autorité de certification (CA) et de certificats pour vos environnements sur site. Si vous disposez d'une infrastructure PKI et de certificats sur site, utilisez AWS IAM Roles Anywhere.

## Rôle IAM des nœuds hybrides
<a name="hybrid-nodes-role"></a>

Avant de pouvoir connecter des nœuds hybrides à votre cluster Amazon EKS, vous devez créer un rôle IAM qui sera utilisé avec les activations hybrides AWS SSM ou AWS IAM Roles Anywhere pour les informations d'identification de vos nœuds hybrides. Après la création du cluster, vous utiliserez ce rôle avec une entrée d'accès Amazon EKS ou `aws-auth` ConfigMap une entrée pour associer le rôle IAM au contrôle d'accès basé sur les rôles (RBAC) de Kubernetes. Pour plus d’informations sur l’association du rôle IAM des nœuds hybrides avec Kubernetes RBAC, consultez [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

Le rôle IAM des nœuds hybrides doit disposer des autorisations suivantes.
+ Autorisations `nodeadm` permettant d'utiliser l'`eks:DescribeCluster`action pour recueillir des informations sur le cluster auquel vous souhaitez connecter des nœuds hybrides. Si vous n'activez pas l'`eks:DescribeCluster`action, vous devez transmettre votre point de terminaison d'API Kubernetes, votre bundle CA de cluster et votre IPv4 CIDR de service dans la configuration du nœud que vous transmettez à la commande. `nodeadm init`
+ Autorisations `nodeadm` permettant d'utiliser l'`eks:ListAccessEntries`action pour répertorier les entrées d'accès du cluster auquel vous souhaitez connecter des nœuds hybrides. Si vous n'activez pas l'`eks:ListAccessEntries`action, vous devez passer le `--skip cluster-access-validation` drapeau lorsque vous exécutez la `nodeadm init` commande.
+ [Autorisations permettant au kubelet d'utiliser des images de conteneur issues d'Amazon Elastic Container Registry (Amazon ECR), conformément à la politique d'Amazon. EC2 ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html)
+ Si vous utilisez AWS SSM, autorisations `nodeadm init` pour utiliser les activations hybrides AWS SSM telles que définies dans la politique. [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html)
+ Si vous utilisez AWS SSM, autorisations d'utilisation de l'`ssm:DeregisterManagedInstance`action et de l'`ssm:DescribeInstanceInformation`action pour `nodeadm uninstall` désenregistrer les instances.
+ (Facultatif) Autorisations permettant à l'agent d'identité du pod Amazon EKS d'utiliser l'action `eks-auth:AssumeRoleForPodIdentity` pour récupérer les informations d'identification pour les pods.

## Configuration des activations hybrides AWS SSM
<a name="hybrid-nodes-ssm"></a>

Avant de configurer les activations hybrides AWS SSM, vous devez avoir créé et configuré un rôle IAM de nœuds hybrides. Pour de plus amples informations, veuillez consulter [Création du rôle IAM des nœuds hybrides](#hybrid-nodes-create-role). Suivez les instructions de la [section Créer une activation hybride pour enregistrer des nœuds auprès de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) dans le guide de l'utilisateur de AWS Systems Manager afin de créer une activation hybride AWS SSM pour vos nœuds hybrides. Le code d’activation et l’identifiant que vous recevez sont utilisés avec `nodeadm` lorsque vous enregistrez vos hôtes en tant que nœuds hybrides avec votre cluster Amazon EKS. Vous pourrez revenir à cette étape ultérieurement après avoir créé et préparé vos clusters Amazon EKS pour les nœuds hybrides.

**Important**  
Systems Manager renvoie immédiatement le code d'activation et l'ID à la console ou la fenêtre de commande, selon la méthode de création de l'activation. Copiez ces informations et stockez-les en lieu sûr. Si vous quittez la console ou fermez la fenêtre de commande, vous risquez de perdre ces informations. Si vous les perdez, vous devrez recréer une activation.

Par défaut, les activations hybrides AWS SSM sont actives pendant 24 heures. Vous pouvez également spécifier un `--expiration-date` lorsque vous créez votre activation hybride, par exemple `2024-08-01T00:00:00`. Lorsque vous utilisez AWS SSM comme fournisseur d'informations d'identification, le nom du nœud de vos nœuds hybrides n'est pas configurable et est généré automatiquement par SSM. AWS Vous pouvez consulter et gérer les instances gérées par AWS SSM dans la console AWS Systems Manager sous Fleet Manager. Vous pouvez enregistrer jusqu'à 1 000 [nœuds hybrides](https://docs.aws.amazon.com/systems-manager/latest/userguide/activations.html) standard par compte et par AWS région sans frais supplémentaires. Toutefois, pour enregistrer plus de 1 000 nœuds hybrides, vous avez besoin d'activer le niveau d'instances avancées. L’utilisation du niveau Advanced Instances entraîne des frais qui ne sont pas inclus dans la tarification des [nœuds hybrides Amazon EKS](https://aws.amazon.com/eks/pricing/). Pour plus d’informations, consultez la section [Tarifs de AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

Consultez l'exemple ci-dessous pour savoir comment créer une activation hybride AWS SSM avec votre rôle IAM Hybrid Nodes. Lorsque vous utilisez des activations hybrides AWS SSM pour les informations d'identification de vos nœuds hybrides, les noms de vos nœuds hybrides auront le même format `mi-012345678abcdefgh` et les informations d'identification temporaires fournies par AWS SSM sont valides pendant 1 heure. Vous ne pouvez pas modifier le nom du nœud ou la durée des informations d'identification lorsque vous utilisez AWS SSM comme fournisseur d'informations d'identification. Les informations d'identification temporaires sont automatiquement modifiées par AWS SSM et la rotation n'a aucun impact sur l'état de vos nœuds ou applications.

Nous vous recommandons d'utiliser une activation hybride AWS SSM par cluster EKS pour définir l'`ssm:DeregisterManagedInstance`autorisation AWS SSM du rôle IAM des nœuds hybrides afin de ne pouvoir désenregistrer que les instances associées à votre activation hybride SSM. AWS Dans l'exemple de cette page, une balise avec l'ARN du cluster EKS est utilisée, qui peut être utilisée pour mapper votre activation hybride AWS SSM au cluster EKS. Vous pouvez également utiliser votre balise et votre méthode préférées pour délimiter les autorisations AWS SSM en fonction de vos limites et exigences en matière d'autorisation. L'`REGISTRATION_LIMIT`option de la commande ci-dessous est un entier utilisé pour limiter le nombre de machines pouvant utiliser l'activation hybride AWS SSM (par exemple`10`)

```
aws ssm create-activation \
     --region AWS_REGION \
     --default-instance-name eks-hybrid-nodes \
     --description "Activation for EKS hybrid nodes" \
     --iam-role AmazonEKSHybridNodesRole \
     --tags Key=EKSClusterARN,Value=arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME \
     --registration-limit REGISTRATION_LIMIT
```

Consultez les instructions de la section [Créer une activation hybride pour enregistrer des nœuds auprès de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) pour plus d'informations sur les paramètres de configuration disponibles pour les activations hybrides AWS SSM.

## Configurer des rôles AWS IAM n'importe où
<a name="hybrid-nodes-iam-roles-anywhere"></a>

Suivez les instructions de la section [Démarrage avec Rôles Anywhere IAM](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) du guide de l’utilisateur Rôles Anywhere IAM pour configurer l’ancre d’approbation et le profil que vous utiliserez pour les informations d’identification IAM temporaires de votre rôle IAM des nœuds hybrides. Lorsque vous créez votre profil, vous pouvez le créer sans ajouter de rôles. Vous pouvez créer ce profil, revenir à ces étapes pour créer votre rôle IAM des nœuds hybrides, puis ajouter votre rôle à votre profil une fois celui-ci créé. Vous pouvez également AWS CloudFormation suivre les étapes décrites plus loin sur cette page pour terminer la configuration d'IAM Roles Anywhere pour les nœuds hybrides.

Lorsque vous ajoutez le rôle IAM Hybrid Nodes à votre profil, sélectionnez **Accepter le nom de session du rôle personnalisé** **dans le panneau Nom de session du rôle personnalisé** au bas de la page **Modifier le profil** de la console AWS IAM Roles Anywhere. Cela correspond au champ [acceptRoleSessionNom](https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateProfile.html#rolesanywhere-CreateProfile-request-acceptRoleSessionName) de l'`CreateProfile`API. Cela vous permet de fournir un nom de nœud personnalisé pour vos nœuds hybrides dans la configuration que vous transmettez à `nodeadm` au cours du processus d’amorçage. Il est nécessaire de passer un nom de nœud personnalisé pendant le processus `nodeadm init`. Vous pouvez mettre à jour votre profil pour accepter un nom de session personnalisé après avoir créé votre profil.

Vous pouvez configurer la durée de validité des informations d'identification avec AWS IAM Roles Anywhere via le champ DurationSeconds de votre [profil IAM Roles Anywhere.](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session#credentials-object) AWS La durée par défaut est de 1 heure avec un maximum de 12 heures. Le `MaxSessionDuration` paramètre de votre rôle IAM Hybrid Nodes doit être supérieur à celui `durationSeconds` de votre profil AWS IAM Roles Anywhere. Pour plus d'informations`MaxSessionDuration`, consultez la [documentation de UpdateRole l'API](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateRole.html).

Les certificats et clés par machine que vous générez à partir de votre autorité de certification (CA) doivent être placés dans le répertoire `/etc/iam/pki` de chaque nœud hybride avec les noms de fichier `server.pem` correspondant au certificat et `server.key` pour la clé.

## Création du rôle IAM des nœuds hybrides
<a name="hybrid-nodes-create-role"></a>

Pour exécuter les étapes décrites dans cette section, le principal IAM utilisant la AWS console ou la AWS CLI doit disposer des autorisations suivantes.
+  `iam:CreatePolicy` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+ Si vous utilisez AWS IAM Roles Anywhere
  +  `rolesanywhere:CreateTrustAnchor` 
  +  `rolesanywhere:CreateProfile` 
  +  `iam:PassRole` 

### AWS CloudFormation
<a name="hybrid-nodes-creds-cloudformation"></a>

Installez et configurez la AWS CLI, si ce n'est pas déjà fait. Voir [Installation ou mise à jour vers la dernière version de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Étapes pour les AWS activations hybrides SSM** 

La CloudFormation pile crée le rôle IAM des nœuds hybrides avec les autorisations décrites ci-dessus. Le CloudFormation modèle ne crée pas l'activation hybride AWS SSM.

1. Téléchargez le CloudFormation modèle AWS SSM pour les nœuds hybrides :

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ssm-cfn.yaml'
   ```

1. Créez un `cfn-ssm-parameters.json` avec les options suivantes :

   1. Remplacez `ROLE_NAME` par le nom de votre rôle IAM des nœuds hybrides. Par défaut, le CloudFormation modèle utilise `AmazonEKSHybridNodesRole` comme nom du rôle qu'il crée si vous ne spécifiez aucun nom.

   1. `TAG_KEY`Remplacez-la par la clé de balise de ressource AWS SSM que vous avez utilisée lors de la création de votre AWS activation hybride SSM. La combinaison de la clé de balise et de la valeur de balise est utilisée `ssm:DeregisterManagedInstance` à condition que le rôle IAM des nœuds hybrides ne soit autorisé qu'à désenregistrer les instances gérées par AWS SSM associées à votre AWS activation hybride SSM. Dans le CloudFormation modèle, la `TAG_KEY` valeur par défaut est. `EKSClusterARN`

   1. `TAG_VALUE`Remplacez-la par la valeur de balise de ressource AWS SSM que vous avez utilisée lors de la création de votre AWS activation hybride SSM. La combinaison de la clé de balise et de la valeur de balise est utilisée `ssm:DeregisterManagedInstance` à condition que le rôle IAM des nœuds hybrides ne soit autorisé qu'à désenregistrer les instances gérées par AWS SSM associées à votre AWS activation hybride SSM. Si vous utilisez la valeur par défaut `TAG_KEY` ou `EKSClusterARN`, transmettez l’ARN de votre cluster EKS en tant que `TAG_VALUE`. Les clusters EKS ARNs ont le format` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`.

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "SSMDeregisterConditionTagKey": "TAG_KEY",
          "SSMDeregisterConditionTagValue": "TAG_VALUE"
        }
      }
      ```

1. Déployez la CloudFormation pile. Remplacez `STACK_NAME` par le nom de la CloudFormation pile.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ssm-cfn.yaml \
       --parameter-overrides file://cfn-ssm-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

 **Étapes à suivre pour jouer AWS des rôles partout dans le monde** 

La CloudFormation pile crée l'ancre de confiance AWS IAM Roles Anywhere auprès de l'autorité de certification (CA) que vous configurez, crée le profil AWS IAM Roles Anywhere et crée le rôle IAM Hybrid Nodes avec les autorisations décrites précédemment.

1. Pour configurer une autorité de certification (CA)

   1. Pour utiliser une ressource d'autorité de certification AWS privée, ouvrez la [console AWS Private Certificate Authority](https://console.aws.amazon.com/acm-pca/home). Suivez les instructions du [Guide de l’utilisateur de l’autorité de certification privée AWS](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html).

   1. Pour utiliser une autorité de certification externe, suivez les instructions fournies par celle-ci. Vous fournirez le corps du certificat lors d’une étape ultérieure.

   1. Les certificats émis par le public CAs ne peuvent pas être utilisés comme points d'ancrage de confiance.

1. Téléchargez le CloudFormation modèle AWS IAM Roles Anywhere pour les nœuds hybrides

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ira-cfn.yaml'
   ```

1. Créez un `cfn-iamra-parameters.json` avec les options suivantes :

   1. Remplacez `ROLE_NAME` par le nom de votre rôle IAM des nœuds hybrides. Par défaut, le CloudFormation modèle utilise `AmazonEKSHybridNodesRole` comme nom du rôle qu'il crée si vous ne spécifiez aucun nom.

   1. Remplacez `CERT_ATTRIBUTE` par l’attribut de certificat par machine qui identifie de manière unique votre hôte. L’attribut de certificat que vous utilisez doit correspondre au nodeName que vous utilisez pour la configuration `nodeadm` lorsque vous connectez des nœuds hybrides à votre cluster. Pour de plus amples informations, veuillez consulter [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md). Par défaut, le CloudFormation modèle utilise `${aws:PrincipalTag/x509Subject/CN}` as le`CERT_ATTRIBUTE`, qui correspond au champ CN de vos certificats par machine. Vous pouvez également faire passer `$(aws:PrincipalTag/x509SAN/Name/CN}` comme votre `CERT_ATTRIBUTE`.

   1. Remplacez `CA_CERT_BODY` par le corps du certificat de votre autorité de certification sans sauts de ligne. Le `CA_CERT_BODY` doit être au format PEM (Privacy Enhanced Mail). Si vous disposez d’un certificat CA au format PEM, supprimez les sauts de ligne et les lignes BEGIN CERTIFICATE et END CERTIFICATE avant d’insérer le corps du certificat CA dans votre fichier `cfn-iamra-parameters.json`.

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "CertAttributeTrustPolicy": "CERT_ATTRIBUTE",
          "CABundleCert": "CA_CERT_BODY"
        }
      }
      ```

1. Déployez le CloudFormation modèle. Remplacez `STACK_NAME` par le nom de la CloudFormation pile.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ira-cfn.yaml \
       --parameter-overrides file://cfn-iamra-parameters.json
       --capabilities CAPABILITY_NAMED_IAM
   ```

### AWS CLI
<a name="hybrid-nodes-creds-awscli"></a>

Installez et configurez la AWS CLI, si ce n'est pas déjà fait. Voir [Installation ou mise à jour vers la dernière version de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Créer une politique de cluster EKS Describe** 

1. Créez un fichier nommé `eks-describe-cluster-policy.json` avec le contenu suivant :

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. Créez la politique à l’aide de la commande suivante :

   ```
   aws iam create-policy \
       --policy-name EKSDescribeClusterPolicy \
       --policy-document file://eks-describe-cluster-policy.json
   ```

 **Étapes pour les AWS activations hybrides SSM** 

1. Créez un fichier nommé `eks-hybrid-ssm-policy.json` avec les contenus suivants. La politique autorise deux actions `ssm:DescribeInstanceInformation` et `ssm:DeregisterManagedInstance`. La politique restreint l'`ssm:DeregisterManagedInstance`autorisation aux instances gérées AWS SSM associées à votre activation hybride AWS SSM en fonction de la balise de ressource que vous spécifiez dans votre politique de confiance.

   1. Remplacez `AWS_REGION` par la AWS région pour votre activation hybride AWS SSM.

   1. Remplacez `AWS_ACCOUNT_ID` par votre identifiant de AWS compte.

   1. `TAG_KEY`Remplacez-la par la clé de balise de ressource AWS SSM que vous avez utilisée lors de la création de votre AWS activation hybride SSM. La combinaison de la clé de balise et de la valeur de balise est utilisée `ssm:DeregisterManagedInstance` à condition que le rôle IAM des nœuds hybrides ne soit autorisé qu'à désenregistrer les instances gérées par AWS SSM associées à votre AWS activation hybride SSM. Dans le CloudFormation modèle, la `TAG_KEY` valeur par défaut est. `EKSClusterARN`

   1. `TAG_VALUE`Remplacez-la par la valeur de balise de ressource AWS SSM que vous avez utilisée lors de la création de votre AWS activation hybride SSM. La combinaison de la clé de balise et de la valeur de balise est utilisée `ssm:DeregisterManagedInstance` à condition que le rôle IAM des nœuds hybrides ne soit autorisé qu'à désenregistrer les instances gérées par AWS SSM associées à votre AWS activation hybride SSM. Si vous utilisez la valeur par défaut `TAG_KEY` ou `EKSClusterARN`, transmettez l’ARN de votre cluster EKS en tant que `TAG_VALUE`. Les clusters EKS ARNs ont le format` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`.

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "ssm:DescribeInstanceInformation",
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "ssm:DeregisterManagedInstance",
                  "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
                  "Condition": {
                      "StringEquals": {
                          "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                      }
                  }
              }
          ]
      }
      ```

1. Créez la politique à l’aide de la commande suivante

   ```
   aws iam create-policy \
       --policy-name EKSHybridSSMPolicy \
       --policy-document file://eks-hybrid-ssm-policy.json
   ```

1. Créez un fichier nommé `eks-hybrid-ssm-trust.json`. `AWS_REGION`Remplacez-le par la AWS région de votre activation hybride AWS SSM et `AWS_ACCOUNT_ID` par votre identifiant de AWS compte.

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"ssm.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"123456789012"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
               }
            }
         }
      ]
   }
   ```

1. Créez le rôle à l’aide de la commande suivante.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-ssm-trust.json
   ```

1. Joignez le `EKSDescribeClusterPolicy` et le `EKSHybridSSMPolicy` que vous avez créés lors des étapes précédentes. Remplacez `AWS_ACCOUNT_ID` par votre identifiant de AWS compte.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSHybridSSMPolicy
   ```

1. Joignez les politiques `AmazonEC2ContainerRegistryPullOnly` et les politiques `AmazonSSMManagedInstanceCore` AWS gérées.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

 **Étapes à suivre pour jouer AWS des rôles partout dans le monde** 

Pour utiliser AWS IAM Roles Anywhere, vous devez configurer votre ancre de confiance AWS IAM Roles Anywhere avant de créer le rôle IAM Hybrid Nodes. Pour obtenir des instructions, consultez [Configurer des rôles AWS IAM n'importe où](#hybrid-nodes-iam-roles-anywhere).

1. Créez un fichier nommé `eks-hybrid-iamra-trust.json`. Remplacez `TRUST_ANCHOR ARN` par l’ARN de l’ancre d’approbation que vous avez créée au cours des étapes [Configurer des rôles AWS IAM n'importe où](#hybrid-nodes-iam-roles-anywhere). La condition énoncée dans cette politique de confiance limite la capacité d' AWS IAM Roles Anywhere à assumer le rôle Hybrid Nodes IAM pour échanger des informations d'identification IAM temporaires uniquement lorsque le nom de session du rôle correspond au CN figurant dans le certificat x509 installé sur vos nœuds hybrides. Vous pouvez également utiliser d’autres attributs de certificat pour identifier de manière unique votre nœud. L’attribut de certificat que vous utilisez dans la stratégie de confiance doit correspondre au `nodeName` que vous avez défini dans votre configuration `nodeadm`. Pour de plus amples informations, veuillez consulter [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": [
                   "sts:TagSession",
                   "sts:SetSourceIdentity"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           }
       ]
   }
   ```

1. Créez le rôle à l’aide de la commande suivante.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-iamra-trust.json
   ```

1. Attachez le `EKSDescribeClusterPolicy` que vous avez créé lors des étapes précédentes. Remplacez `AWS_ACCOUNT_ID` par votre identifiant de AWS compte.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

1. Joindre la politique `AmazonEC2ContainerRegistryPullOnly` AWS gérée

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

### AWS Management Console
<a name="hybrid-nodes-creds-console"></a>

 **Créer une politique de cluster EKS Describe** 

1. Ouvrez la [console Amazon IAM](https://console.aws.amazon.com/iam/home). 

1. Dans le volet de navigation de gauche, choisissez **Politiques**.

1. Sur la page **Politiques**, choisissez **Créer une politique**.

1. Sur la page Spécifier les autorisations, dans le panneau Sélectionner un service, choisissez EKS.

   1. Filtrez les actions pour **DescribeCluster**et sélectionnez l'action **DescribeCluster**Lire.

   1. Choisissez **Suivant**.

1. Sur la page **Réviser et créer**

   1. Saisissez un **nom pour votre politique**, par exemple `EKSDescribeClusterPolicy`.

   1. Choisissez **Create Policy** (Créer une politique).

 **Étapes pour les AWS activations hybrides SSM** 

1. Ouvrez la [console Amazon IAM](https://console.aws.amazon.com/iam/home). 

1. Dans le volet de navigation de gauche, choisissez **Politiques**.

1. Sur la page **Politiques**, choisissez **Créer une politique**.

1. Sur la page **Spécifier les autorisations**, dans le menu de navigation en haut à droite de **l’éditeur de stratégie**, sélectionnez **JSON**. Collez l’extrait suivant. Remplacez `AWS_REGION` par la AWS région de votre activation hybride AWS SSM et remplacez `AWS_ACCOUNT_ID` par votre identifiant de AWS compte. Remplacez `TAG_KEY` et `TAG_VALUE` par la clé de balise de ressource AWS SSM que vous avez utilisée lors de la création de votre activation hybride AWS SSM.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeInstanceInformation",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DeregisterManagedInstance",
               "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
               "Condition": {
                   "StringEquals": {
                       "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                   }
               }
           }
       ]
   }
   ```

   1. Choisissez **Suivant**.

1. Sur la page **Réviser et créer**

   1. Saisissez un nom pour votre **politique**, par exemple `EKSHybridSSMPolicy`. 

   1. Choisissez **Create Policy** (Créer une politique).

1. Dans le volet de navigation de gauche, choisissez **Rôles**.

1. Sur la page **Rôles**, choisissez **Créer un rôle**.

1. Sur la page **Select trusted entity** (Sélectionner une entité de confiance), procédez comme suit :

   1. Dans la section **Type d’entité approuvée**, sélectionnez **Stratégie d’approbation personnalisée**. Collez ce qui suit dans l’éditeur de stratégie de confiance personnalisée. `AWS_REGION`Remplacez-le par la AWS région de votre activation hybride AWS SSM et `AWS_ACCOUNT_ID` par votre identifiant de AWS compte.

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"",
               "Effect":"Allow",
               "Principal":{
                  "Service":"ssm.amazonaws.com"
               },
               "Action":"sts:AssumeRole",
               "Condition":{
                  "StringEquals":{
                     "aws:SourceAccount":"123456789012"
                  },
                  "ArnEquals":{
                     "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
                  }
               }
            }
         ]
      }
      ```

   1. Choisissez Suivant.

1. Sur la page **Ajouter des autorisations**, associez une stratégie personnalisée ou procédez comme suit :

   1. Dans la zone **Stratégies de filtre**, saisissez `EKSDescribeClusterPolicy`, ou le nom de la stratégie que vous avez créée ci-dessus. Cochez la case située à gauche du nom de votre police dans les résultats de recherche.

   1. Dans la zone **Stratégies de filtre**, saisissez `EKSHybridSSMPolicy`, ou le nom de la stratégie que vous avez créée ci-dessus. Cochez la case située à gauche du nom de votre police dans les résultats de recherche.

   1. Dans la zone **Filter policies** (Politiques de filtre), saisissez `AmazonEC2ContainerRegistryPullOnly`. Cochez la case à gauche de `AmazonEC2ContainerRegistryPullOnly` dans les résultats de recherche.

   1. Dans la zone **Filter policies** (Politiques de filtre), saisissez `AmazonSSMManagedInstanceCore`. Cochez la case à gauche de `AmazonSSMManagedInstanceCore` dans les résultats de recherche.

   1. Choisissez **Suivant**.

1. Sur la page **Name, review, and create** (Nommer, vérifier et créer), procédez comme suit :

   1. Pour **Role name** (Nom de rôle), saisissez un nom unique pour votre rôle, par exemple, `AmazonEKSHybridNodesRole`.

   1. Pour **Description**, remplacez le texte actuel par un texte descriptif tel que `Amazon EKS - Hybrid Nodes role`.

   1. Choisissez **Créer un rôle**.

 **Étapes à suivre pour jouer AWS des rôles partout dans le monde** 

Pour utiliser AWS IAM Roles Anywhere, vous devez configurer votre ancre de confiance AWS IAM Roles Anywhere avant de créer le rôle IAM Hybrid Nodes. Pour obtenir des instructions, consultez [Configurer des rôles AWS IAM n'importe où](#hybrid-nodes-iam-roles-anywhere).

1. Ouvrez la [console Amazon IAM](https://console.aws.amazon.com/iam/home). 

1. Dans le volet de navigation de gauche, choisissez **Rôles**.

1. Sur la page **Rôles**, choisissez **Créer un rôle**.

1. Sur la page **Select trusted entity** (Sélectionner une entité de confiance), procédez comme suit :

   1. Dans la section **Type d’entité approuvée**, sélectionnez **Stratégie d’approbation personnalisée**. Collez ce qui suit dans l’éditeur de stratégie de confiance personnalisée. Remplacez `TRUST_ANCHOR ARN` par l’ARN de l’ancre d’approbation que vous avez créée au cours des étapes [Configurer des rôles AWS IAM n'importe où](#hybrid-nodes-iam-roles-anywhere). La condition énoncée dans cette politique de confiance limite la capacité d' AWS IAM Roles Anywhere à assumer le rôle Hybrid Nodes IAM pour échanger des informations d'identification IAM temporaires uniquement lorsque le nom de session du rôle correspond au CN figurant dans le certificat x509 installé sur vos nœuds hybrides. Vous pouvez également utiliser d’autres attributs de certificat pour identifier de manière unique votre nœud. L’attribut de certificat que vous utilisez dans la stratégie de confiance doit correspondre au nom de nœud que vous avez défini dans votre configuration nodeadm. Pour de plus amples informations, veuillez consulter [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": [
                      "sts:TagSession",
                      "sts:SetSourceIdentity"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              },
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              }
          ]
      }
      ```

   1. Choisissez Suivant.

1. Sur la page **Ajouter des autorisations**, associez une stratégie personnalisée ou procédez comme suit :

   1. Dans la zone **Stratégies de filtre**, saisissez `EKSDescribeClusterPolicy`, ou le nom de la stratégie que vous avez créée ci-dessus. Cochez la case située à gauche du nom de votre police dans les résultats de recherche.

   1. Dans la zone **Filter policies** (Politiques de filtre), saisissez `AmazonEC2ContainerRegistryPullOnly`. Cochez la case à gauche de `AmazonEC2ContainerRegistryPullOnly` dans les résultats de recherche.

   1. Choisissez **Suivant**.

1. Sur la page **Name, review, and create** (Nommer, vérifier et créer), procédez comme suit :

   1. Pour **Role name** (Nom de rôle), saisissez un nom unique pour votre rôle, par exemple, `AmazonEKSHybridNodesRole`.

   1. Pour **Description**, remplacez le texte actuel par un texte descriptif tel que `Amazon EKS - Hybrid Nodes role`.

   1. Choisissez **Créer un rôle**.

# Créer un cluster Amazon EKS avec des nœuds hybrides
<a name="hybrid-nodes-cluster-create"></a>

Cette rubrique fournit une vue d’ensemble des options disponibles et décrit les éléments à prendre en compte lors de la création d’un cluster Amazon EKS hybride compatible avec les nœuds. Les nœuds hybrides EKS prennent en charge la [même version de Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) que les clusters Amazon EKS avec nœuds cloud, y compris la prise en charge standard et étendue.

Si vous ne prévoyez pas d’utiliser les nœuds hybrides EKS, consultez la documentation principale sur la création de clusters Amazon EKS à l’adresse [Création d’un cluster Amazon EKS](create-cluster.md).

## Conditions préalables
<a name="hybrid-nodes-cluster-create-prep"></a>
+ Le [Configuration préalable requise pour les nœuds hybrides](hybrid-nodes-prereqs.md) terminé. Avant de créer votre cluster compatible avec les nœuds hybrides, vous devez CIDRs identifier votre nœud local et éventuellement votre pod, créer votre VPC et vos sous-réseaux conformément aux exigences d'EKS et aux exigences relatives aux nœuds hybrides, ainsi que votre groupe de sécurité avec des règles d'entrée pour votre espace sur site et éventuellement pour votre espace. CIDRs Pour plus d’informations sur ces prérequis, consultez [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+ La dernière version de l'interface de ligne de AWS commande (AWS CLI) installée et configurée sur votre appareil. Pour vérifier votre version actuelle, utilisez `aws --version`. Les gestionnaires de packages tels que yum, apt-get ou Homebrew pour macOS ont souvent plusieurs versions de retard sur la dernière version de la CLI. AWS Pour installer la dernière version, reportez-vous aux sections [Installation ou mise à jour de la dernière version de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Configuration des paramètres de la AWS CLI dans le](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) Guide de l'utilisateur de l'interface de ligne de AWS commande.
+ Un [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) disposant des autorisations nécessaires pour créer des rôles IAM et associer des politiques, ainsi que pour créer et décrire des clusters EKS

## Considérations
<a name="hybrid-nodes-cluster-create-consider"></a>
+ Votre cluster doit utiliser soit `API` ou `API_AND_CONFIG_MAP` pour le mode d’authentification du cluster.
+ Votre cluster doit utiliser une famille IPv4 d'adresses.
+ Votre cluster doit utiliser une connectivité de point de terminaison de cluster publique ou privée. Votre cluster ne peut pas utiliser la connectivité de point de terminaison de cluster « public et privé », car le point de terminaison du serveur d'API Amazon EKS Kubernetes sera transmis au public IPs pour les nœuds hybrides exécutés en dehors de votre VPC.
+ L’authentification OIDC est prise en charge pour les clusters EKS avec des nœuds hybrides.
+ Vous pouvez ajouter, modifier ou supprimer la configuration des nœuds hybrides d’un cluster existant. Pour de plus amples informations, veuillez consulter [Activation de nœuds hybrides sur un cluster Amazon EKS existant ou modification de la configuration](hybrid-nodes-cluster-update.md).

## Étape 1 : créer un rôle IAM de cluster
<a name="hybrid-nodes-cluster-create-iam"></a>

Si vous possédez déjà un rôle IAM dans le cluster, ou si vous allez créer votre cluster avec `eksctl` ou AWS CloudFormation, vous pouvez ignorer cette étape. Par défaut, `eksctl` le AWS CloudFormation modèle crée le rôle IAM du cluster pour vous.

1. Exécutez la commande suivante pour créer un fichier JSON de politique d'approbation IAM.

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Créez le rôle IAM de cluster Amazon EKS. Si nécessaire, préfacez eks-cluster-role-trust -policy.json avec le chemin sur l'ordinateur où vous avez écrit le fichier à l'étape précédente. La commande associe la politique d'approbation que vous avez créée lors de l'étape précédente à ce rôle. Pour créer un rôle IAM, le [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) qui crée le rôle doit se voir attribuer l'action (autorisation) IAM `iam:CreateRole`.

   ```
   aws iam create-role \
       --role-name myAmazonEKSClusterRole \
       --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
   ```

1. Vous pouvez attribuer la politique gérée par Amazon EKS ou créer votre propre politique personnalisée. Pour connaître les autorisations minimales que vous devez utiliser dans votre politique personnalisée, consultez [Rôle IAM de nœud Amazon EKS](create-node-role.md). Attachez la politique gérée par Amazon EKS appelée `AmazonEKSClusterPolicy` au rôle. Pour attacher une politique IAM à un [principal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal), le principal qui attache la politique doit se voir attribuer l'une des actions (autorisations) IAM `iam:AttachUserPolicy` ou `iam:AttachRolePolicy`.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy \
       --role-name myAmazonEKSClusterRole
   ```

## Étape 2 : créer un cluster compatible avec les nœuds hybrides
<a name="hybrid-nodes-cluster-create-cluster"></a>

Vous pouvez créer un cluster à l’aide de :
+  [eksctl](#hybrid-nodes-cluster-create-eksctl) 
+  [AWS CloudFormation](#hybrid-nodes-cluster-create-cfn) 
+  [AWS INTERFACE DE LIGNE DE COMMANDE (CLI)](#hybrid-nodes-cluster-create-cli) 
+  [AWS Management Console](#hybrid-nodes-cluster-create-console) 

### Création d’un cluster compatible avec les nœuds hybrides – eksctl
<a name="hybrid-nodes-cluster-create-eksctl"></a>

Vous devez installer la dernière version de l’outil en ligne de commande `eksctl`. Pour installer ou mettre à jour `eksctl`, veuillez consulter [Installation](https://eksctl.io/installation) dans la documentation de `eksctl`.

1. Créez `cluster-config.yaml` pour définir un cluster Amazon EKS IPv4 compatible avec les nœuds hybrides. Effectuez les remplacements suivants dans votre fichier `cluster-config.yaml`. Pour une liste complète des paramètres, consultez la documentation [eksctl](https://eksctl.io/getting-started/).

   1. Remplacez `CLUSTER_NAME` par un nom pour 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 AWS région et le AWS compte dans lesquels vous créez le cluster.

   1. `AWS_REGION`Remplacez-le par la AWS région dans laquelle vous souhaitez créer votre cluster.

   1. Remplacez la version `K8S_VERSION` par n'importe quelle [version prise en charge par Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

   1. Remplacez `CREDS_PROVIDER` par `ssm` ou `ira` en fonction du fournisseur d’informations d’identification que vous avez configuré dans les étapes pour [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

   1. `CA_BUNDLE_CERT`Remplacez-le si votre fournisseur d'informations d'identification est défini sur`ira`, ce qui utilise AWS IAM Roles Anywhere comme fournisseur d'informations d'identification. CA\$1BUNDLE\$1CERT est l’autorité de certification (CA) et dépend de votre choix de CA. Le certificat doit être au format PEM (Privacy Enhanced Mail).

   1. Remplacez `GATEWAY_ID` par l’ID de votre passerelle privée virtuelle ou passerelle de transit à associer à votre VPC.

   1. Remplacez `REMOTE_NODE_CIDRS` par le CIDR du nœud sur site pour vos nœuds hybrides.

   1. Remplacez `REMOTE_POD_CIDRS` par le CIDR du pod sur site pour les charges de travail exécutées sur des nœuds hybrides ou supprimez la ligne de votre configuration si vous n’exécutez pas de webhooks sur des nœuds hybrides. Vous devez configurer votre `REMOTE_POD_CIDRS` si votre CNI n’utilise pas la traduction d’adresses réseau (NAT) ou le masquage pour les adresses IP des pods lorsque le trafic des pods quitte vos hôtes sur site. Vous devez configurer `REMOTE_POD_CIDRS` si vous exécutez des webhooks sur des nœuds hybrides. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

   1. Les blocs CIDR de vos nœuds et pods sur site doivent répondre aux exigences suivantes :

      1. Soyez dans l'une des plages de la IPv4 RFC-1918 :`10.0.0.0/8`, ou `172.16.0.0/12``192.168.0.0/16`, ou dans la plage CGNAT définie par la RFC 6598 :. `100.64.0.0/10`

      1. Pas de chevauchement entre eux, `VPC CIDR` pour votre cluster ou pour votre service Kubernetes CIDR IPv4 

         ```
         apiVersion: eksctl.io/v1alpha5
         kind: ClusterConfig
         
         metadata:
           name: CLUSTER_NAME
           region: AWS_REGION
           version: "K8S_VERSION"
         
         remoteNetworkConfig:
           iam:
             provider: CREDS_PROVIDER # default SSM, can also be set to IRA
             # caBundleCert: CA_BUNDLE_CERT
           vpcGatewayID: GATEWAY_ID
           remoteNodeNetworks:
           - cidrs: ["REMOTE_NODE_CIDRS"]
           remotePodNetworks:
           - cidrs: ["REMOTE_POD_CIDRS"]
         ```

1. Exécutez la commande suivante :

   ```
   eksctl create cluster -f cluster-config.yaml
   ```

   L'approvisionnement de cluster dure plusieurs minutes. Pendant la création du cluster, plusieurs lignes de sortie apparaissent. La dernière ligne de sortie est similaire à celle de l'exemple suivant.

   ```
   [✓]  EKS cluster "CLUSTER_NAME" in "REGION" region is ready
   ```

1. Poursuivez avec [Étape 3 : mettre à jour kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Créez un cluster compatible avec les nœuds hybrides - AWS CloudFormation
<a name="hybrid-nodes-cluster-create-cfn"></a>

La CloudFormation pile crée le rôle IAM du cluster EKS et un cluster EKS avec le `RemoteNodeNetwork` et `RemotePodNetwork` que vous spécifiez. Modifiez le CloudFormation modèle si vous devez personnaliser les paramètres de votre cluster EKS qui ne sont pas exposés dans le CloudFormation modèle.

1. Téléchargez le CloudFormation modèle.

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-eks-cfn.yaml'
   ```

1. Créez un `cfn-eks-parameters.json` et spécifiez votre configuration pour chaque valeur.

   1.  `CLUSTER_NAME` : nom du cluster EKS à créer

   1.  `CLUSTER_ROLE_NAME` : nom du rôle IAM du cluster EKS à créer. La valeur par défaut du modèle est « EKSCluster Rôle ».

   1.  `SUBNET1_ID` : l’ID du premier sous-réseau que vous avez créé lors des étapes préalables

   1.  `SUBNET2_ID` : l’ID du deuxième sous-réseau que vous avez créé dans les étapes préalables.

   1.  `SG_ID` : l’ID du groupe de sécurité que vous avez créé lors des étapes préalables.

   1.  `REMOTE_NODE_CIDRS` : le CIDR du nœud sur site pour vos nœuds hybrides

   1.  `REMOTE_POD_CIDRS` : le CIDR du pod sur site pour les charges de travail exécutées sur des nœuds hybrides. Vous devez configurer votre `REMOTE_POD_CIDRS` si votre CNI n’utilise pas la traduction d’adresses réseau (NAT) ou le masquage pour les adresses IP des pods lorsque le trafic des pods quitte vos hôtes sur site. Vous devez configurer `REMOTE_POD_CIDRS` si vous exécutez des webhooks sur des nœuds hybrides. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

   1. Les blocs CIDR de vos nœuds et pods sur site doivent répondre aux exigences suivantes :

      1. Soyez dans l'une des plages de la IPv4 RFC-1918 :`10.0.0.0/8`, ou `172.16.0.0/12``192.168.0.0/16`, ou dans la plage CGNAT définie par la RFC 6598 :. `100.64.0.0/10`

      1. Ne vous chevauchez pas, ni avec le CIDR `VPC CIDR` de votre cluster, ni avec le CIDR de votre service Kubernetes. IPv4 

   1.  `CLUSTER_AUTH` : le mode d’authentification du cluster pour votre cluster. Les valeurs valides sont `API` et `API_AND_CONFIG_MAP`. La valeur par défaut dans le modèle est `API_AND_CONFIG_MAP`.

   1.  `CLUSTER_ENDPOINT` : la connectivité du point de terminaison de votre cluster. Les valeurs valides sont « Public » et « Privé ». La valeur par défaut dans le modèle est Privé, ce qui signifie que vous ne pourrez vous connecter au point de terminaison de l’API Kubernetes qu’à partir de votre VPC.

   1.  `K8S_VERSION` : la version de Kubernetes à utiliser pour votre cluster. Consultez les [versions prises en charge par Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

      ```
      {
        "Parameters": {
          "ClusterName": "CLUSTER_NAME",
          "ClusterRoleName": "CLUSTER_ROLE_NAME",
          "SubnetId1": "SUBNET1_ID",
          "SubnetId2": "SUBNET2_ID",
          "SecurityGroupId" "SG_ID",
          "RemoteNodeCIDR": "REMOTE_NODE_CIDRS",
          "RemotePodCIDR": "REMOTE_POD_CIDRS",
          "ClusterAuthMode": "CLUSTER_AUTH",
          "ClusterEndpointConnectivity": "CLUSTER_ENDPOINT",
          "K8sVersion": "K8S_VERSION"
        }
       }
      ```

1. Déployez la CloudFormation pile. `STACK_NAME`Remplacez-le par le nom de la CloudFormation pile et `AWS_REGION` par AWS la région dans laquelle le cluster sera créé.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --template-file hybrid-eks-cfn.yaml \
       --parameter-overrides file://cfn-eks-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

   L'approvisionnement de cluster dure plusieurs minutes. Vous pouvez vérifier l’état de votre pile à l’aide de la commande suivante. `STACK_NAME`Remplacez-le par le nom de la CloudFormation pile et `AWS_REGION` par AWS la région dans laquelle le cluster sera créé.

   ```
   aws cloudformation describe-stacks \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --query 'Stacks[].StackStatus'
   ```

1. Poursuivez avec [Étape 3 : mettre à jour kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Créer un cluster compatible avec les nœuds hybrides - CLI AWS
<a name="hybrid-nodes-cluster-create-cli"></a>

1. Exécutez la commande suivante pour créer un cluster EKS hybride compatible avec les nœuds. Avant d’exécuter la commande, remplacez ce qui suit par vos paramètres. Pour obtenir la liste complète des paramètres, consultez la documentation [Création d’un cluster Amazon EKS](create-cluster.md).

   1.  `CLUSTER_NAME` : nom du cluster EKS à créer

   1.  `AWS_REGION`: AWS région dans laquelle le cluster sera créé.

   1.  `K8S_VERSION` : la version de Kubernetes à utiliser pour votre cluster. Consultez les versions prises en charge par Amazon EKS.

   1.  `ROLE_ARN` : le rôle Amazon EKS que vous avez configuré pour votre cluster. Pour plus d’informations, consultez la section Rôle IAM du cluster Amazon EKS.

   1.  `SUBNET1_ID` : l’ID du premier sous-réseau que vous avez créé lors des étapes préalables

   1.  `SUBNET2_ID` : l’ID du deuxième sous-réseau que vous avez créé dans les étapes préalables.

   1.  `SG_ID` : l’ID du groupe de sécurité que vous avez créé lors des étapes préalables.

   1. Vous pouvez utiliser `API` et `API_AND_CONFIG_MAP` pour votre mode d’authentification d’accès au cluster. Dans la commande ci-dessous, le mode d’authentification d’accès au cluster est défini sur `API_AND_CONFIG_MAP`.

   1. Vous pouvez utiliser les paramètres `endpointPublicAccess` et `endpointPrivateAccess` pour activer ou désactiver l’accès public et privé au point de terminaison de serveur d’API Kubernetes de votre cluster. Dans la commande ci-dessous, `endpointPublicAccess` est défini sur false et `endpointPrivateAccess` est défini sur true.

   1.  `REMOTE_NODE_CIDRS` : le CIDR du nœud sur site pour vos nœuds hybrides.

   1.  `REMOTE_POD_CIDRS` (facultatif) : le CIDR du pod sur site pour les charges de travail exécutées sur des nœuds hybrides.

   1. Les blocs CIDR de vos nœuds et pods sur site doivent répondre aux exigences suivantes :

      1. Soyez dans l'une des plages de la IPv4 RFC-1918 :`10.0.0.0/8`, ou `172.16.0.0/12``192.168.0.0/16`, ou dans la plage CGNAT définie par la RFC 6598 :. `100.64.0.0/10`

      1. Ne vous chevauchez pas, que ce soit `VPC CIDR` pour votre cluster Amazon EKS ou pour le CIDR de votre service Kubernetes. IPv4 

         ```
         aws eks create-cluster \
             --name CLUSTER_NAME \
             --region AWS_REGION \
             --kubernetes-version K8S_VERSION \
             --role-arn ROLE_ARN \
             --resources-vpc-config subnetIds=SUBNET1_ID,SUBNET2_ID,securityGroupIds=SG_ID,endpointPrivateAccess=true,endpointPublicAccess=false \
             --access-config authenticationMode=API_AND_CONFIG_MAP \
             --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
         ```

1. Le provisionnement du cluster prend quelques minutes. Vous pouvez vérifier le statut de votre cluster avec la commande suivante. Remplacez `CLUSTER_NAME` par le nom du cluster que vous créez et `AWS_REGION` par la AWS région dans laquelle le cluster est créé. Ne passez pas à l’étape suivante tant que le résultat renvoyé n’est pas `ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Poursuivez avec [Étape 3 : mettre à jour kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Créez un cluster compatible avec les nœuds hybrides - AWS Management Console
<a name="hybrid-nodes-cluster-create-console"></a>

1. Ouvrez la console Amazon EKS à l’adresse [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez Add cluster (Ajouter un cluster), puis choisissez Create (Créer).

1. Sur la page Configurer le cluster, renseignez les champs suivants :

   1.  **Nom** : nom de votre cluster. Le nom ne peut contenir que des caractères alphanumériques (sensibles à la casse), des tirets et des traits de soulignement. 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 AWS région et le AWS compte dans lesquels vous créez le cluster.

   1.  Rôle **IAM du cluster : choisissez le rôle** IAM du cluster Amazon EKS que vous avez créé pour permettre au plan de contrôle Kubernetes de gérer AWS les ressources en votre nom.

   1.  **Version Kubernetes** : version de Kubernetes à utiliser pour votre cluster. Nous vous recommandons de sélectionner la dernière version, sauf si vous avez besoin d'une version antérieure.

   1.  **Politique de mise à niveau** : choisissez Extended ou Standard.

      1.  **Étendu :** Cette option prend en charge la version de Kubernetes pendant 26 mois après la date de sortie. La période de support prolongée a un coût horaire supplémentaire qui commence après la fin de la période de support standard. À la fin du support étendu, votre cluster sera automatiquement mis à niveau vers la version suivante.

      1.  **Standard :** Cette option prend en charge la version de Kubernetes pendant 14 mois après la date de sortie. Il n’y a aucun coût supplémentaire. À la fin du support standard, votre cluster sera automatiquement mis à niveau vers la version suivante.

   1.  **Accès au cluster** : Choisissez d’autoriser ou de refuser l’accès à l’administrateur du cluster et sélectionnez un mode d’authentification. Les modes d’authentification suivants sont pris en charge pour les clusters compatibles avec les nœuds hybrides.

      1.  **API EKS** : le cluster s'approvisionnera en principaux IAM authentifiés uniquement à partir de l'entrée d'accès EKS. APIs

      1.  **API EKS et ConfigMap** : Le cluster fournira des principes IAM authentifiés à la fois à partir de l'entrée APIs d'accès EKS et du. `aws-auth` ConfigMap

   1.  **Chiffrement des secrets** : (facultatif) choisissez d'activer le chiffrement des secrets Kubernetes à l'aide d'une clé KMS. Vous pouvez également activer cette option une fois que vous avez créé votre cluster. Avant d’activer cette fonctionnalité, assurez-vous d’avoir pris connaissance des informations mentionnées dans [Chiffrer les secrets Kubernetes avec KMS sur les clusters existants](enable-kms.md).

   1.  **Déplacement de zone ARC** : Si cette option est activée, EKS enregistrera votre cluster auprès du déplacement de zone ARC afin de vous permettre d’utiliser le déplacement de zone pour détourner le trafic applicatif d’une zone de disponibilité.

   1.  **Identifications**∘: (facultatif) ajoutez des identifications à votre cluster. Pour de plus amples informations, veuillez consulter [Organiser les ressources Amazon EKS à l’aide de balises](eks-using-tags.md).

   1. Lorsque vous avez terminé d'utiliser cette page, choisissez **Suivant**.

1. Sur la page **Spécifier les réseaux** sélectionnez des valeurs pour les champs suivants :

   1.  **VPC** : choisissez un VPC existant qui répond à [Afficher les exigences réseau Amazon EKS pour les VPC et les sous-réseaux](network-reqs.md) et aux exigences des [nœuds hybrides Amazon EKS](hybrid-nodes-prereqs.md). Avant de choisir un VPC, nous vous recommandons de vous familiariser avec toutes les exigences et considérations décrites dans la section Consulter les exigences réseau Amazon EKS pour les VPC, les sous-réseaux et les nœuds hybrides. Vous ne pouvez pas modifier le VPC que vous souhaitez utiliser après la création du cluster. Si aucun VPCs n'est répertorié, vous devez d'abord en créer un. Pour plus d’informations, consultez [Création d’un VPC Amazon pour votre cluster Amazon EKS](creating-a-vpc.md) ainsi que les exigences réseau des [nœuds hybrides Amazon EKS](hybrid-nodes-prereqs.md).

   1.  **Sous-réseaux** : par défaut, tous les sous-réseaux disponibles dans le VPC spécifié dans le champ précédent sont présélectionnés. Vous devez en sélectionner au moins deux.

   1.  **Groupes de sécurité** : (facultatif) spécifiez un ou plusieurs groupes de sécurité créant des interfaces réseau auxquelles vous souhaitez associer Amazon EKS. Au moins l'un des groupes de sécurité que vous spécifiez doit disposer de règles entrantes pour votre nœud local et éventuellement pour votre pod. CIDRs Pour plus d’informations, consultez les [exigences réseau des nœuds hybrides Amazon EKS](hybrid-nodes-networking.md). Que vous choisissiez ou non un groupe de sécurité, Amazon EKS crée un groupe de sécurité qui permet la communication entre votre cluster et votre VPC. Amazon EKS associe ce groupe de sécurité, et tout ce que vous choisissez, aux interfaces réseau qu'il crée. Pour plus d’informations sur le groupe de sécurité de cluster créé par Amazon EKS, consultez [Voir les exigences relatives aux groupes de sécurité Amazon EKS pour les clusters](sec-group-reqs.md) Vous pouvez modifier les règles du groupe de sécurité de cluster créé par Amazon EKS.

   1.  **Choisissez la famille d'adresses IP du cluster** : vous devez choisir IPv4 des clusters compatibles avec les nœuds hybrides.

   1. **(Facultatif) Choisissez **Configurer la plage d'adresses IP du service Kubernetes et spécifiez une plage** de services. IPv4 **

   1.  **Choisissez Configurer les réseaux distants pour activer les nœuds hybrides** et spécifiez votre nœud local et votre pod CIDRs pour les nœuds hybrides.

   1. Vous devez configurer le CIDR de votre pod distant si votre CNI n’utilise pas la traduction d’adresses réseau (NAT) ou le masquage pour les adresses IP des pods lorsque le trafic des pods quitte vos hôtes sur site. Vous devez configurer le CIDR du pod distant si vous exécutez des webhooks sur des nœuds hybrides.

   1. Les blocs CIDR de vos nœuds et pods sur site doivent répondre aux exigences suivantes :

      1. Soyez dans l'une des plages de la IPv4 RFC-1918 :`10.0.0.0/8`, ou `172.16.0.0/12``192.168.0.0/16`, ou dans la plage CGNAT définie par la RFC 6598 :. `100.64.0.0/10`

      1. Pas de chevauchement entre eux, `VPC CIDR` pour votre cluster ou pour votre service Kubernetes CIDR IPv4 

   1. Pour **Accès au point de terminaison de cluster**, sélectionnez une option. Une fois votre cluster créé, vous pouvez modifier cette option. Pour les clusters compatibles avec les nœuds hybrides, vous devez choisir entre Public et Privé. Avant de sélectionner une option autre que par défaut, assurez-vous de vous familiariser avec les options et leurs implications. Pour de plus amples informations, veuillez consulter [Point de terminaison du serveur d’API du cluster](cluster-endpoint.md).

   1. Lorsque vous avez terminé d'utiliser cette page, choisissez **Suivant**.

1. (Facultatif) Sur la page **Configurer** l’observabilité, choisissez les options de métriques et de journalisation du plan de contrôle à activer. Par défaut, chaque type de journal est désactivé.

   1. Pour plus d’informations sur l’option Prometheus metrics, consultez [Surveiller les métriques de votre cluster avec Prometheus](prometheus.md).

   1. Pour plus d’informations sur les options de journalisation de contrôle EKS, voir [Envoyer les journaux du plan de contrôle à CloudWatch Logs](control-plane-logs.md).

   1. Lorsque vous avez terminé d'utiliser cette page, choisissez **Suivant**.

1. Sur la page **Select add-ons** (Sélectionner les modules complémentaires), choisissez les modules complémentaires que vous souhaitez ajouter à votre cluster.

   1. Vous pouvez choisir autant de modules complémentaires **Amazon EKS et de modules** **complémentaires AWS Marketplace** que vous le souhaitez. Les modules complémentaires Amazon EKS qui ne sont pas compatibles avec les nœuds hybrides sont signalés par la mention « Non compatible avec les nœuds hybrides » et sont soumis à une règle d’anti-affinité afin d’empêcher leur exécution sur les nœuds hybrides. Pour plus d’informations, consultez la section Configuration des modules complémentaires pour les nœuds hybrides. Si les modules complémentaires ** AWS Marketplace** que vous souhaitez installer ne figurent pas dans la liste, vous pouvez rechercher les **modules complémentaires AWS Marketplace** disponibles en saisissant du texte dans le champ de recherche. Vous pouvez également effectuer une recherche par **catégorie**, **fournisseur** ou **modèle de tarification**, puis choisir les modules complémentaires dans les résultats de la recherche.

   1. Certains modules complémentaires, tels que CoreDNS et kube-proxy, sont installés par défaut. Si vous désactivez l’un des modules complémentaires par défaut, cela peut affecter votre capacité à exécuter des applications Kubernetes.

   1. Lorsque vous avez terminé cette page, sélectionnez `Next`.

1. Sur la page **Configurer les paramètres de modules complémentaires sélectionnés**, sélectionnez la version que vous voulez installer.

   1. Vous pourrez toujours effectuer une mise à jour vers une version ultérieure après la création du cluster. Vous pourrez mettre à jour la configuration de chaque module complémentaire après la création du cluster. Pour plus d'informations sur la configuration des modules complémentaires, consultez [Mettre à jour un module complémentaire Amazon EKS](updating-an-add-on.md). Pour les versions des modules complémentaires compatibles avec les nœuds hybrides, voir [Configurer les modules complémentaires pour les nœuds hybrides](hybrid-nodes-add-ons.md).

   1. Lorsque vous avez terminé d'utiliser cette page, choisissez Suivant.

1. Sur la page **Vérifier et créer**, passez en revue les informations que vous avez saisies ou sélectionnées sur les pages précédentes. Si vous devez apporter des modifications, choisissez **Modifier**. Quand vous êtes satisfait, choisissez **Créer**. Le champ **État** affiche **EN COURS DE CRÉATION** pendant que le cluster est provisionné. L'approvisionnement de cluster dure plusieurs minutes.

1. Poursuivez avec [Étape 3 : mettre à jour kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

## Étape 3 : mettre à jour kubeconfig
<a name="hybrid-nodes-cluster-create-kubeconfig"></a>

Si vous avez créé votre cluster à l'aide de `eksctl`, vous pouvez ignorer cette étape. Cela est dû au fait que `eksctl` a déjà terminé cette étape pour vous. Activez `kubectl` la communication avec votre cluster en ajoutant un nouveau contexte au fichier de configuration `kubectl`. Pour plus d'informations sur la création et la mise à jour du fichier, consultez [Connexion de kubectl à un cluster EKS en créant un fichier kubeconfig](create-kubeconfig.md).

```
aws eks update-kubeconfig --name CLUSTER_NAME --region AWS_REGION
```

L'exemple qui suit illustre un résultat.

```
Added new context arn:aws: eks:AWS_REGION:111122223333:cluster/CLUSTER_NAME to /home/username/.kube/config
```

Confirmez la communication avec votre cluster en exécutant la commande suivante.

```
kubectl get svc
```

L'exemple qui suit illustre un résultat.

```
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   28h
```

## Étape 4 : configuration du cluster
<a name="_step_4_cluster_setup"></a>

Ensuite, consultez [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md) pour activer l’accès pour que vos nœuds hybrides puissent rejoindre votre cluster.

# Activation de nœuds hybrides sur un cluster Amazon EKS existant ou modification de la configuration
<a name="hybrid-nodes-cluster-update"></a>

Cette rubrique fournit une vue d’ensemble des options disponibles et décrit les éléments à prendre en compte lorsque vous ajoutez, modifiez ou supprimez la configuration des nœuds hybrides pour un cluster Amazon EKS.

Pour permettre à un cluster Amazon EKS d’utiliser des nœuds hybrides, ajoutez les plages CIDR d’adresses IP de votre nœud sur site et, éventuellement, le réseau de pods dans la configuration `RemoteNetworkConfig`. EKS utilise cette liste CIDRs pour activer la connectivité entre le cluster et vos réseaux locaux. Pour obtenir la liste complète des options lors de la mise à jour de la configuration de votre cluster, consultez le [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)manuel *Amazon EKS API Reference*.

Vous pouvez effectuer l’une des actions suivantes sur la configuration réseau des nœuds hybrides EKS dans un cluster :
+  [Ajoutez une configuration réseau à distance pour activer les nœuds hybrides EKS dans un cluster existant](#hybrid-nodes-cluster-enable-existing). 
+  [Ajoutez, modifiez ou supprimez les réseaux de nœuds distants ou les réseaux de pods distants dans un cluster existant](#hybrid-nodes-cluster-update-config). 
+  [Supprimez toutes les plages CIDR du réseau des nœuds distants pour désactiver les nœuds hybrides EKS dans un cluster existant](#hybrid-nodes-cluster-disable). 

## Conditions préalables
<a name="hybrid-nodes-cluster-enable-prep"></a>
+ Avant d’activer votre cluster Amazon EKS pour les nœuds hybrides, assurez-vous que votre environnement répond aux exigences décrites à [Configuration préalable requise pour les nœuds hybrides](hybrid-nodes-prereqs.md), et détaillées à [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md), [Préparer le système d’exploitation pour les nœuds hybrides](hybrid-nodes-os.md), et [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).
+ Votre cluster doit utiliser une famille IPv4 d'adresses.
+ Votre cluster doit utiliser soit `API` ou `API_AND_CONFIG_MAP` pour le mode d’authentification du cluster. La procédure de modification du mode d’authentification du cluster est décrite à l’adresse [Modifier le mode d’authentification pour utiliser les entrées d’accès](setting-up-access-entries.md).
+ Nous vous recommandons d’utiliser soit l’accès public, soit l’accès privé pour le point de terminaison du serveur API Amazon EKS Kubernetes, mais pas les deux. Si vous choisissez « Public et privé », le point de terminaison du serveur d'API Amazon EKS Kubernetes indiquera toujours au public IPs les nœuds hybrides exécutés en dehors de votre VPC, ce qui peut empêcher vos nœuds hybrides de rejoindre le cluster. La procédure permettant de modifier l’accès réseau à votre cluster est décrite à l’adresse [Point de terminaison du serveur d’API du cluster](cluster-endpoint.md).
+ La dernière version de l'interface de ligne de AWS commande (AWS CLI) installée et configurée sur votre appareil. Pour vérifier votre version actuelle, utilisez `aws --version`. Les gestionnaires de packages tels que yum, apt-get ou Homebrew pour macOS ont souvent plusieurs versions de retard sur la dernière version de la CLI. AWS Pour installer la dernière version, reportez-vous aux sections [Installation ou mise à jour vers la dernière version de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Configuration des paramètres de la AWS CLI dans le](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) Guide de l'utilisateur de l'interface de ligne de AWS commande.
+ Un [responsable IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) autorisé à appeler [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)votre cluster Amazon EKS.
+ Mettez à jour les modules complémentaires vers des versions compatibles avec les nœuds hybrides. Pour les versions des modules complémentaires compatibles avec les nœuds hybrides, voir [Configurer les modules complémentaires pour les nœuds hybrides](hybrid-nodes-add-ons.md).
+ Si vous utilisez des modules complémentaires qui ne sont pas compatibles avec les nœuds hybrides, assurez-vous que le module complémentaire [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)ou le [déploiement respecte](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) la règle d'affinité suivante pour empêcher le déploiement sur des nœuds hybrides. Ajoutez la règle d’affinité suivante si elle n’est pas déjà présente.

  ```
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
  ```

## Considérations
<a name="hybrid-nodes-cluster-enable-consider"></a>

L’objet `remoteNetworkConfig` JSON se comporte comme suit lors d’une mise à jour :
+ Toute partie existante de la configuration que vous ne spécifiez pas reste inchangée. Si vous ne spécifiez ni `remoteNodeNetworks` ni `remotePodNetworks`, cette partie restera inchangée.
+ Si vous modifiez les `remotePodNetworks` listes `remoteNodeNetworks` ou les listes de CIDRs, vous devez spécifier la liste complète de celles CIDRs que vous souhaitez inclure dans votre configuration finale. Lorsque vous spécifiez une modification à apporter à la liste ou à la liste CIDR `remoteNodeNetworks` ou `remotePodNetworks`, EKS remplace la liste d’origine lors de la mise à jour.
+ Les blocs CIDR de vos nœuds et pods sur site doivent répondre aux exigences suivantes :

  1. Soyez dans l'une des plages de la IPv4 RFC-1918 : 10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16, ou dans la plage CGNAT définie par la RFC 6598 : `100.64.0.0/10` 

  1. Il ne faut pas que tous les VPC CIDRs de votre cluster Amazon EKS ou le CIDR de votre service Kubernetes se chevauchent. IPv4 

## Activation de nœuds hybrides sur un cluster existant
<a name="hybrid-nodes-cluster-enable-existing"></a>

Vous pouvez activer les nœuds hybrides EKS dans un cluster existant en utilisant :
+  [AWS CloudFormation](#hybrid-nodes-cluster-enable-cfn) 
+  [AWS INTERFACE DE LIGNE DE COMMANDE (CLI)](#hybrid-nodes-cluster-enable-cli) 
+  [AWS Management Console](#hybrid-nodes-cluster-enable-console) 

### Activez les nœuds hybrides EKS dans un cluster existant - AWS CloudFormation
<a name="hybrid-nodes-cluster-enable-cfn"></a>

1. Pour activer les nœuds hybrides EKS dans votre cluster, ajoutez le `RemoteNodeNetwork` et (facultatif) `RemotePodNetwork` à votre CloudFormation modèle et mettez à jour la pile. Notez que `RemoteNodeNetwork` est une liste comportant au maximum un élément `Cidrs` et que `Cidrs` est une liste de plusieurs plages CIDR IP.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [RemoteNodeCIDR]
     RemotePodNetworks:
       - Cidrs: [RemotePodCIDR]
   ```

1. Passez au [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

### Activer les nœuds hybrides EKS dans un cluster existant - AWS CLI
<a name="hybrid-nodes-cluster-enable-cli"></a>

1. Exécutez la commande suivante pour activer `RemoteNetworkConfig` pour les nœuds hybrides EKS pour votre cluster EKS. Avant d’exécuter la commande, remplacez ce qui suit par vos paramètres. Pour obtenir la liste complète des paramètres, consultez le [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)manuel *Amazon EKS API Reference*.

   1.  `CLUSTER_NAME` : nom du cluster EKS à mettre à jour.

   1.  `AWS_REGION`: AWS région dans laquelle le cluster EKS est exécuté.

   1.  `REMOTE_NODE_CIDRS` : le CIDR du nœud sur site pour vos nœuds hybrides.

   1.  `REMOTE_POD_CIDRS` (facultatif) : le CIDR du pod sur site pour les charges de travail exécutées sur des nœuds hybrides.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
      ```

1. La mise à jour du cluster prend plusieurs minutes. Vous pouvez vérifier le statut de votre cluster avec la commande suivante. `CLUSTER_NAME`Remplacez-le par le nom du cluster que vous modifiez et `AWS_REGION` par la AWS région dans laquelle le cluster est exécuté. Ne passez pas à l’étape suivante tant que le résultat renvoyé n’est pas `ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Passez au [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

### Activez les nœuds hybrides EKS dans un cluster existant - AWS Management Console
<a name="hybrid-nodes-cluster-enable-console"></a>

1. Ouvrez la console Amazon EKS sur la console [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le nom du cluster pour afficher les informations le concernant.

1. Sélectionnez l’onglet **Réseau**, puis **Gestion**.

1. Dans le menu déroulant, sélectionnez **Réseaux distants**.

1.  **Choisissez Configurer les réseaux distants pour activer les nœuds hybrides** et spécifiez votre nœud local et votre pod CIDRs pour les nœuds hybrides.

1. Choisissez **Save changes** (Enregistrer les modifications) pour terminer. Attendez que le statut du cluster redevienne **Actif**.

1. Passez au [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

## Mettre à jour la configuration des nœuds hybrides dans un cluster existant
<a name="hybrid-nodes-cluster-update-config"></a>

Vous pouvez modifier `remoteNetworkConfig` dans un cluster hybride existant à l’aide de l’une des méthodes suivantes :
+  [AWS CloudFormation](#hybrid-nodes-cluster-update-cfn) 
+  [AWS INTERFACE DE LIGNE DE COMMANDE (CLI)](#hybrid-nodes-cluster-update-cli) 
+  [AWS Management Console](#hybrid-nodes-cluster-update-console) 

### Mettre à jour la configuration hybride dans un cluster existant - AWS CloudFormation
<a name="hybrid-nodes-cluster-update-cfn"></a>

1. Mettez à jour votre CloudFormation modèle avec les nouvelles valeurs CIDR du réseau.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [NEW_REMOTE_NODE_CIDRS]
     RemotePodNetworks:
       - Cidrs: [NEW_REMOTE_POD_CIDRS]
   ```
**Note**  
Lors de la mise à jour `RemoteNodeNetworks` des listes `RemotePodNetworks` CIDR, incluez tout CIDRs (nouveau et existant). EKS remplace la liste complète lors des mises à jour. En omettant ces champs dans la demande de mise à jour, leurs configurations existantes sont conservées.

1. Mettez à jour votre CloudFormation pile avec le modèle modifié et attendez que la mise à jour de la pile soit terminée.

### Mettre à jour la configuration hybride dans un cluster existant - AWS CLI
<a name="hybrid-nodes-cluster-update-cli"></a>

1. Pour modifier le réseau distant CIDRs, exécutez la commande suivante. Remplacez les valeurs par vos paramètres :

   ```
   aws eks update-cluster-config
   --name CLUSTER_NAME
   --region AWS_REGION
   --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["NEW_REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["NEW_REMOTE_POD_CIDRS"]}]}'
   ```
**Note**  
Lors de la mise à jour `remoteNodeNetworks` des listes `remotePodNetworks` CIDR, incluez tout CIDRs (nouveau et existant). EKS remplace la liste complète lors des mises à jour. En omettant ces champs dans la demande de mise à jour, leurs configurations existantes sont conservées.

1. Attendez que le statut du cluster revienne à ACTIF avant de continuer.

### Mettre à jour la configuration hybride dans un cluster existant - AWS Management Console
<a name="hybrid-nodes-cluster-update-console"></a>

1. Ouvrez la console Amazon EKS sur la console [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le nom du cluster pour afficher les informations le concernant.

1. Sélectionnez l’onglet **Réseau**, puis **Gestion**.

1. Dans le menu déroulant, sélectionnez **Réseaux distants**.

1. Mettez à jour le `Remote node networks` ci-dessous et CIDRs `Remote pod networks - Optional` selon les besoins.

1. Choisissez **Enregistrer les modifications** et attendez que le statut du cluster redevienne **actif**.

## Désactiver les nœuds hybrides dans un cluster existant
<a name="hybrid-nodes-cluster-disable"></a>

Vous pouvez désactiver les nœuds hybrides EKS dans un cluster existant en utilisant :
+  [AWS CloudFormation](#hybrid-nodes-cluster-disable-cfn) 
+  [AWS INTERFACE DE LIGNE DE COMMANDE (CLI)](#hybrid-nodes-cluster-disable-cli) 
+  [AWS Management Console](#hybrid-nodes-cluster-disable-console) 

### Désactiver les nœuds hybrides EKS dans un cluster existant - AWS CloudFormation
<a name="hybrid-nodes-cluster-disable-cfn"></a>

1. Pour désactiver les nœuds hybrides EKS dans votre cluster, définissez `RemoteNodeNetworks` et videz `RemotePodNetworks` les baies dans votre CloudFormation modèle et mettez à jour la pile.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks: []
     RemotePodNetworks: []
   ```

### Désactiver les nœuds hybrides EKS dans un cluster existant - AWS CLI
<a name="hybrid-nodes-cluster-disable-cli"></a>

1. Exécutez la commande suivante pour supprimer `RemoteNetworkConfig` de votre cluster EKS. Avant d’exécuter la commande, remplacez ce qui suit par vos paramètres. Pour obtenir la liste complète des paramètres, consultez le [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)manuel *Amazon EKS API Reference*.

   1.  `CLUSTER_NAME` : nom du cluster EKS à mettre à jour.

   1.  `AWS_REGION`: AWS région dans laquelle le cluster EKS est exécuté.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[],"remotePodNetworks":[]}'
      ```

1. La mise à jour du cluster prend plusieurs minutes. Vous pouvez vérifier le statut de votre cluster avec la commande suivante. `CLUSTER_NAME`Remplacez-le par le nom du cluster que vous modifiez et `AWS_REGION` par la AWS région dans laquelle le cluster est exécuté. Ne passez pas à l’étape suivante tant que le résultat renvoyé n’est pas `ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

### Désactiver les nœuds hybrides EKS dans un cluster existant - AWS Management Console
<a name="hybrid-nodes-cluster-disable-console"></a>

1. Ouvrez la console Amazon EKS sur la console [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le nom du cluster pour afficher les informations le concernant.

1. Sélectionnez l’onglet **Réseau**, puis **Gestion**.

1. Dans le menu déroulant, sélectionnez **Réseaux distants**.

1. Choisissez **Configurer les réseaux distants pour activer les nœuds hybrides** et supprimez tous les éléments situés CIDRs sous `Remote node networks` et`Remote pod networks - Optional`.

1. Choisissez **Save changes** (Enregistrer les modifications) pour terminer. Attendez que le statut du cluster redevienne **Actif**.

# Préparation de l’accès au cluster pour les nœuds hybrides
<a name="hybrid-nodes-cluster-prep"></a>

Avant de connecter des nœuds hybrides à votre cluster Amazon EKS, vous devez activer votre rôle IAM pour les nœuds hybrides avec les autorisations Kubernetes afin de rejoindre le cluster. Pour plus d’informations sur la création du rôle IAM de nœuds hybrides, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md). Amazon EKS propose deux méthodes pour associer les principaux IAM au contrôle d'accès basé sur les rôles (RBAC) de Kubernetes, aux entrées d'accès Amazon EKS et au. `aws-auth` ConfigMap Pour plus d’informations sur la gestion des accès Amazon EKS, consultez [Accorder aux utilisateurs et aux rôles IAM l'accès à Kubernetes APIs](grant-k8s-access.md).

Suivez les procédures ci-dessous pour associer votre rôle IAM des nœuds hybrides aux autorisations Kubernetes. Pour utiliser les entrées d’accès Amazon EKS, votre cluster doit avoir été créé avec les modes d’authentification `API` ou `API_AND_CONFIG_MAP`. Pour utiliser le `aws-auth` ConfigMap, votre cluster doit avoir été créé avec le mode `API_AND_CONFIG_MAP` d'authentification. Le mode d’authentification `CONFIG_MAP`-uniquement n’est pas pris en charge pour les clusters Amazon EKS compatibles avec les nœuds hybrides.

## Utilisation des entrées d’accès Amazon EKS pour le rôle IAM des nœuds hybrides
<a name="_using_amazon_eks_access_entries_for_hybrid_nodes_iam_role"></a>

Il existe un type d’entrée d’accès Amazon EKS pour les nœuds hybrides nommé HYBRID\$1LINUX qui peut être utilisé avec un rôle IAM. Avec ce type d'entrée d'accès, le nom d'utilisateur est automatiquement défini sur system:node : \$1\$1SessionName\$1\$1. Pour plus d’informations sur la création d’entrées d’accès, voir [Créer des entrées d’accès](creating-access-entries.md).

### AWS CLI
<a name="shared_aws_cli"></a>

1. La dernière version de la AWS CLI doit être installée et configurée sur votre appareil. Pour vérifier votre version actuelle, utilisez `aws --version`. Les gestionnaires de packages tels que yum, apt-get ou Homebrew pour macOS ont souvent plusieurs versions de retard sur la dernière version de la CLI. AWS Pour installer la dernière version, consultez la section Installation et configuration rapide avec aws configure dans le Guide de l'utilisateur de l'interface de ligne de AWS commande.

1. Créez votre entrée d’accès à l’aide de la commande suivante. Remplacez CLUSTER\$1NAME par le nom de votre cluster et HYBRID\$1NODES\$1ROLE\$1ARN par l’ARN du rôle que vous avez créé dans les étapes précédentes pour [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

   ```
   aws eks create-access-entry --cluster-name CLUSTER_NAME \
       --principal-arn HYBRID_NODES_ROLE_ARN \
       --type HYBRID_LINUX
   ```

### AWS Management Console
<a name="hybrid-nodes-cluster-prep-console"></a>

1. Ouvrez la console Amazon EKS à l’adresse [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Choisissez le nom de votre cluster compatible avec les nœuds hybrides.

1. Choisissez l’onglet **Access**.

1. Choisissez **Créer une entrée d'accès**.

1. Pour le **principal IAM**, sélectionnez le rôle IAM des nœuds hybrides que vous avez créé dans les étapes pour [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

1. Pour **Type**, sélectionnez **Linux hybride**.

1. (Facultatif) Pour **Balises**, attribuez des étiquettes à l'entrée d'accès. Par exemple, pour faciliter la recherche de toutes les ressources portant la même balise.

1. Choisissez **Passer à la révision et à la création**. Vous ne pouvez pas ajouter de stratégies à l’entrée d’accès Linux hybride ni modifier sa portée d’accès.

1. Vérifiez la configuration de votre entrée d'accès. Si quelque chose semble incorrect, choisissez **Précédent** pour revenir en arrière et corriger l'erreur. Si la configuration est correcte, choisissez **Créer**.

## Utilisation d'aws-auth ConfigMap pour le rôle IAM des nœuds hybrides
<a name="_using_aws_auth_configmap_for_hybrid_nodes_iam_role"></a>

Dans les étapes suivantes, vous allez créer ou mettre à jour le `aws-auth` ConfigMap avec l'ARN du rôle IAM des nœuds hybrides que vous avez créé dans les étapes pour [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md) lesquelles.

1. Vérifiez si vous en avez déjà un `aws-auth` ConfigMap pour votre cluster. Notez que si vous utilisez un fichier `kubeconfig` spécifique, utilisez le drapeau `--kubeconfig`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Si un s'affiche `aws-auth` ConfigMap, mettez-le à jour si nécessaire.

   1. Ouvrez le ConfigMap pour le modifier.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Ajoutez une nouvelle entrée `mapRoles` si nécessaire. Remplacez `HYBRID_NODES_ROLE_ARN` par l’ARN de votre rôle IAM des nœuds hybrides. Remarque : `{{SessionName}}` le format de modèle à enregistrer dans le ConfigMap. Ne le remplacez pas par d’autres valeurs.

      ```
      data:
        mapRoles: |
        - groups:
          - system:bootstrappers
          - system:nodes
          rolearn: HYBRID_NODES_ROLE_ARN
          username: system:node:{{SessionName}}
      ```

   1. Enregistrez le fichier et quittez votre éditeur de texte.

1. S'il n'en existe pas `aws-auth` ConfigMap pour votre cluster, créez-le à l'aide de la commande suivante. Remplacez `HYBRID_NODES_ROLE_ARN` par l’ARN de votre rôle IAM des nœuds hybrides. Notez qu'il `{{SessionName}}` s'agit du format de modèle correct à enregistrer dans le ConfigMap. Ne le remplacez pas par d’autres valeurs.

   ```
   kubectl apply -f=/dev/stdin <<-EOF
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: aws-auth
     namespace: kube-system
   data:
     mapRoles: |
     - groups:
       - system:bootstrappers
       - system:nodes
       rolearn: HYBRID_NODES_ROLE_ARN
       username: system:node:{{SessionName}}
   EOF
   ```

# Exécution de charges de travail sur site sur des nœuds hybrides
<a name="hybrid-nodes-tutorial"></a>

Dans un cluster EKS avec des nœuds hybrides activés, vous pouvez exécuter des applications sur site et en périphérie sur votre propre infrastructure avec les mêmes clusters, fonctionnalités et outils Amazon EKS que ceux que vous utilisez dans le cloud AWS.

Les sections suivantes contiennent des instructions détaillées pour l’utilisation des nœuds hybrides.

**Topics**
+ [Connecter les nœuds hybrides](hybrid-nodes-join.md)
+ [Connectez des nœuds hybrides avec Bottlerocket](hybrid-nodes-bottlerocket.md)
+ [Mettre à niveau les nœuds hybrides](hybrid-nodes-upgrade.md)
+ [Nœuds hybrides de patch](hybrid-nodes-security.md)
+ [Supprimer des nœuds hybrides](hybrid-nodes-remove.md)

# Connecter les nœuds hybrides
<a name="hybrid-nodes-join"></a>

**Note**  
Les étapes suivantes s’appliquent aux nœuds hybrides exécutant des systèmes d’exploitation compatibles, à l’exception de Bottlerocket. Pour connaître les étapes à suivre pour connecter un nœud hybride qui exécute Bottlerocket, consultez [Connectez des nœuds hybrides avec Bottlerocket](hybrid-nodes-bottlerocket.md).

Cette rubrique décrit comment connecter des nœuds hybrides à un cluster Amazon EKS. Une fois que vos nœuds hybrides ont rejoint le cluster, ils apparaissent avec le statut Not Ready (Non prêt) dans la console Amazon EKS et dans les outils compatibles avec Kubernetes, tels que kubectl. Une fois les étapes décrites sur cette page terminées, passez à la section [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md) pour préparer vos nœuds hybrides à exécuter des applications.

## Prérequis
<a name="_prerequisites"></a>

Avant de connecter des nœuds hybrides à votre cluster Amazon EKS, assurez-vous d’avoir suivi toutes les étapes préalables.
+ Vous disposez d’une connectivité réseau entre votre environnement sur site et la région AWS hébergeant votre cluster Amazon EKS. Pour plus d’informations, consultez [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+ Vous disposez d’un système d’exploitation compatible pour les nœuds hybrides installés sur vos hôtes sur site. Pour plus d’informations, consultez [Préparer le système d’exploitation pour les nœuds hybrides](hybrid-nodes-os.md).
+ Vous avez créé votre rôle IAM des nœuds hybrides et configuré votre fournisseur d’informations d’identification sur site (activations hybrides AWS Systems Manager ou Rôles Anywhere IAM AWS). Pour plus d’informations, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).
+ Vous avez créé votre cluster Amazon EKS compatible avec les nœuds hybrides. Pour plus d’informations, consultez [Créer un cluster Amazon EKS avec des nœuds hybrides](hybrid-nodes-cluster-create.md).
+ Vous avez associé votre rôle IAM des nœuds hybrides aux autorisations RBAC de Kubernetes. Pour plus d’informations, consultez [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

## Étape 1 : installer l’interface CLI des nœuds hybrides (`nodeadm`) sur chaque hôte sur site
<a name="_step_1_install_the_hybrid_nodes_cli_nodeadm_on_each_on_premises_host"></a>

Si vous incluez l’interface CLI des nœuds hybrides Amazon EKS (`nodeadm`) dans vos images de système d’exploitation pré-construites, vous pouvez ignorer cette étape. Pour plus d’informations sur la version hybride des nœuds de `nodeadm`, consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

La version hybride des nœuds de `nodeadm` est hébergée dans Amazon S3, avec Amazon CloudFront comme interface. Pour installer `nodeadm` sur chaque hôte sur site, vous pouvez exécuter la commande suivante à partir de vos hôtes sur site.

 **Pour les hôtes x86\$164 :** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Pour les hôtes ARM** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Ajoutez les permissions d’exécution au fichier binaire téléchargé sur chaque hôte.

```
chmod +x nodeadm
```

## Étape 2 : installer les dépendances des nœuds hybrides avec `nodeadm`
<a name="_step_2_install_the_hybrid_nodes_dependencies_with_nodeadm"></a>

Si vous installez les dépendances des nœuds hybrides dans des images de système d’exploitation précompilées, vous pouvez ignorer cette étape. La commande `nodeadm install` peut être utilisée pour installer toutes les dépendances requises pour les nœuds hybrides. Les dépendances des nœuds hybrides incluent containerd, kubelet, kubectl et les composants AWS SSM ou Rôles Anywhere IAM AWS. Pour plus d’informations sur les composants et les emplacements des fichiers installés par `nodeadm install`, consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md). Pour plus d’informations sur les domaines qui doivent être autorisés dans votre pare-feu local pour le processus `nodeadm install`, consultez [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).

Exécutez la commande ci-dessous pour installer les dépendances des nœuds hybrides sur votre hôte local. La commande ci-dessous doit être exécutée par un utilisateur disposant d’un accès sudo/root sur votre hôte.

**Important**  
Les nœuds hybrides CLI (`nodeadm`) doivent être exécutés avec un utilisateur disposant d’un accès sudo/root sur votre hôte.
+ Remplacez `K8S_VERSION` par la version mineure Kubernetes de votre cluster Amazon EKS, par exemple `1.31`. Consultez les [versions prises en charge par Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) pour obtenir la liste des versions Kubernetes prises en charge.
+ Remplacez `CREDS_PROVIDER` par le fournisseur d’informations d’identification local que vous utilisez. Les valeurs valides sont `ssm` pour AWS SSM et `iam-ra` pour Rôles Anywhere IAM AWS.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER
```

## Étape 3 : connecter les nœuds hybrides à votre cluster
<a name="_step_3_connect_hybrid_nodes_to_your_cluster"></a>

Avant de connecter vos nœuds hybrides à votre cluster, assurez-vous d’avoir autorisé l’accès requis dans votre pare-feu local et dans le groupe de sécurité de votre cluster pour la communication entre le plan de contrôle Amazon EKS et les nœuds hybrides. La plupart des problèmes rencontrés à cette étape sont liés à la configuration du pare-feu, à la configuration du groupe de sécurité ou à la configuration du rôle IAM des nœuds hybrides.

**Important**  
Les nœuds hybrides CLI (`nodeadm`) doivent être exécutés avec un utilisateur disposant d’un accès sudo/root sur votre hôte.

1. Créez un fichier `nodeConfig.yaml` sur chaque hôte avec les valeurs pour votre déploiement. Pour une description complète des paramètres de configuration disponibles, voir [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md). Si votre rôle IAM des nœuds hybrides ne dispose pas des autorisations nécessaires pour l’action `eks:DescribeCluster`, vous devez transmettre votre point de terminaison de l’API Kubernetes, votre offre groupée CA et votre CIDR IPv4 du service Kubernetes dans la section cluster de votre `nodeConfig.yaml`.

   1. Utilisez l’exemple `nodeConfig.yaml` ci-dessous si vous utilisez des activations hybrides SSM AWS pour votre fournisseur d’informations d’identification sur site.

      1. Remplacez `CLUSTER_NAME` par le nom de votre cluster.

      1. Remplacez `AWS_REGION` par la région AWS hébergeant votre cluster. Par exemple, `us-west-2`.

      1. Remplacez `ACTIVATION_CODE` par le code d’activation que vous avez reçu lors de la création de votre activation hybride SSM AWS. Pour plus d’informations, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

      1. Remplacez `ACTIVATION_ID` par l’ID d’activation que vous avez reçu lors de la création de votre activation hybride SSM AWS. Vous pouvez récupérer ces informations à partir de la console AWS Systems Manager ou à partir de la commande AWS CLI `aws ssm describe-activations`.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             ssm:
               activationCode: ACTIVATION_CODE
               activationId: ACTIVATION_ID
         ```

   1. Utilisez l’exemple `nodeConfig.yaml` ci-dessous si vous utilisez Rôles Anywhere IAM AWS pour votre fournisseur d’informations d’identification sur site.

      1. Remplacez `CLUSTER_NAME` par le nom de votre cluster.

      1. Remplacez `AWS_REGION` par la région AWS hébergeant votre cluster. Par exemple, `us-west-2`.

      1. Remplacez `NODE_NAME` par le nom de votre nœud. Le nom du nœud doit correspondre au nom commun (CN) du certificat sur l’hôte si vous avez configuré la stratégie de confiance de votre rôle IAM des nœuds hybrides avec la condition de ressource `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`. Le `nodeName` que vous utilisez ne doit pas dépasser 64 caractères.

      1. Remplacez `TRUST_ANCHOR_ARN` par l’ARN de l’ancre d’approbation que vous avez configurée dans les étapes de la section Préparer les informations d’identification pour les nœuds hybrides.

      1. Remplacez `PROFILE_ARN` par l’ARN de l’ancre d’approbation que vous avez configurée dans les étapes pour [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

      1. Remplacez `ROLE_ARN` par l’ARN de votre rôle IAM des nœuds hybrides.

      1. Remplacez `CERTIFICATE_PATH` par le chemin d’accès sur le disque vers votre certificat de nœud. Si vous ne le précisez pas, la valeur par défaut est `/etc/iam/pki/server.pem`.

      1. Remplacez `KEY_PATH` par le chemin d’accès sur le disque vers la clé privée de votre certificat. Si vous ne le précisez pas, la valeur par défaut est `/etc/iam/pki/server.key`.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             iamRolesAnywhere:
               nodeName: NODE_NAME
               trustAnchorArn: TRUST_ANCHOR_ARN
               profileArn: PROFILE_ARN
               roleArn: ROLE_ARN
               certificatePath: CERTIFICATE_PATH
               privateKeyPath: KEY_PATH
         ```

1. Exécutez la commande `nodeadm init` avec votre `nodeConfig.yaml` pour connecter vos nœuds hybrides à votre cluster Amazon EKS.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

Si la commande ci-dessus s’exécute correctement, votre nœud hybride a rejoint votre cluster Amazon EKS. Vous pouvez vérifier cela dans la console Amazon EKS en accédant à l’onglet Calcul de votre cluster ([assurez-vous que le principal IAM dispose des autorisations nécessaires pour afficher](view-kubernetes-resources.md#view-kubernetes-resources-permissions)) ou avec `kubectl get nodes`.

**Important**  
Vos nœuds auront le statut `Not Ready`, ce qui est normal et dû à l’absence d’un CNI fonctionnant sur vos nœuds hybrides. Si vos nœuds ne se sont pas joints au cluster, consultez [Dépannage des nœuds hybrides](hybrid-nodes-troubleshooting.md).

## Étape 4 : configurer un CNI pour les nœuds hybrides
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Pour que vos nœuds hybrides soient prêts à exécuter des applications, poursuivez avec les étapes décrites à la section [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

# Connectez des nœuds hybrides avec Bottlerocket
<a name="hybrid-nodes-bottlerocket"></a>

Cette rubrique décrit comment connecter des nœuds hybrides exécutant Bottlerocket à un cluster Amazon EKS. [Bottlerocket](https://aws.amazon.com/bottlerocket/) est une distribution Linux open source sponsorisée et soutenue par. AWS Bottlerocket est spécialement conçu pour héberger des charges de travail conteneurisées. Avec Bottlerocket, vous pouvez améliorer la disponibilité des déploiements conteneurisés et réduire les coûts opérationnels en automatisant les mises à jour de votre infrastructure de conteneurs. Bottlerocket ne comprend que les logiciels essentiels à l’exécution des conteneurs, ce qui améliore l’utilisation des ressources, réduit les menaces de sécurité et diminue les frais généraux liés à la gestion.

Seules les VMware variantes de la version v1.37.0 et supérieures de Bottlerocket sont prises en charge avec les nœuds hybrides EKS. VMware des variantes de Bottlerocket sont disponibles pour les versions v1.28 et supérieures de Kubernetes. Les images du système d'exploitation de ces variantes incluent le kubelet, le containerd aws-iam-authenticator et d'autres logiciels requis pour les nœuds hybrides EKS. Vous pouvez configurer ces composants à l’aide d’un fichier de [paramètres](https://github.com/bottlerocket-os/bottlerocket#settings) Bottlerocket qui comprend des données utilisateur encodées en base64 pour les conteneurs de démarrage et d’administration Bottlerocket. La configuration de ces paramètres permet à Bottlerocket d’utiliser votre fournisseur d’informations d’identification de nœuds hybrides pour authentifier les nœuds hybrides sur votre cluster. Une fois que vos nœuds hybrides ont rejoint le cluster, leur statut `Not Ready` s’affiche dans la console Amazon EKS et dans les outils compatibles avec Kubernetes, tels que `kubectl`. Une fois les étapes décrites sur cette page terminées, passez à la section [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md) pour préparer vos nœuds hybrides à exécuter des applications.

## Conditions préalables
<a name="_prerequisites"></a>

Avant de connecter des nœuds hybrides à votre cluster Amazon EKS, assurez-vous d’avoir suivi toutes les étapes préalables.
+ Vous disposez d'une connectivité réseau entre votre environnement sur site et la AWS région hébergeant votre cluster Amazon EKS. Pour plus d’informations, consultez [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+ Vous avez créé votre rôle Hybrid Nodes IAM et configuré votre fournisseur d'informations d'identification sur site (activations hybrides de AWS Systems Manager ou AWS IAM Roles Anywhere). Pour plus d’informations, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).
+ Vous avez créé votre cluster Amazon EKS compatible avec les nœuds hybrides. Pour plus d’informations, consultez [Créer un cluster Amazon EKS avec des nœuds hybrides](hybrid-nodes-cluster-create.md).
+ Vous avez associé votre rôle IAM des nœuds hybrides aux autorisations RBAC de Kubernetes. Pour plus d’informations, consultez [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

## Étape 1 : créer le fichier TOML des paramètres Bottlerocket
<a name="_step_1_create_the_bottlerocket_settings_toml_file"></a>

Pour configurer Bottlerocket pour les nœuds hybrides, vous devez créer un fichier `settings.toml` contenant la configuration nécessaire. Le contenu du fichier TOML varie en fonction du fournisseur d’informations d’identification que vous utilisez (SSM ou Rôles Anywhere IAM). Ce fichier sera transmis en tant que données utilisateur lors de la mise à disposition de l’instance Bottlerocket.

**Note**  
Les fichiers TOML fournis ci-dessous ne représentent que les paramètres minimaux requis pour initialiser une VMWare machine Bottlerocket en tant que nœud sur un cluster EKS. Bottlerocket fournit une large gamme de paramètres pour répondre à différents cas d'utilisation. Pour d'autres options de configuration au-delà de l'initialisation du nœud hybride, veuillez consulter la [documentation de Bottlerocket](https://bottlerocket.dev/en) pour obtenir la liste complète de tous les paramètres documentés pour la version de Bottlerocket que vous utilisez (par exemple, [voici](https://bottlerocket.dev/en/os/1.51.x/api/settings-index) tous les paramètres disponibles pour Bottlerocket 1.51.x).

### SSM
<a name="_ssm"></a>

Si vous utilisez AWS Systems Manager comme fournisseur d'informations d'identification, créez un `settings.toml` fichier avec le contenu suivant :

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "ssm"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"

[settings.host-containers.control]
enabled = true
```

Remplacez les espaces réservés par les valeurs suivantes :
+  `<cluster-name>` : le nom de votre cluster Amazon EKS.
+  `<api-server-endpoint>` : point de terminaison du serveur d’API de votre cluster.
+  `<cluster-certificate-authority>` : Ensemble CA codé en base64 de votre cluster.
+  `<region>`: La AWS région hébergeant votre cluster, par exemple « us-east-1 ».
+  `<hostname>` : le nom d’hôte de l’instance Bottlerocket, qui sera également configuré comme nom de nœud. Il peut s’agir de n’importe quelle valeur unique de votre choix, mais elle doit respecter les [conventions de nommage des objets Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). De plus, le nom d’hôte que vous utilisez ne peut pas dépasser 64 caractères. REMARQUE : lorsque vous utilisez le fournisseur SSM, ce nom d’hôte et ce nom de nœud seront remplacés par l’ID de l’instance gérée (par exemple, ID `mi-*`) une fois que l’instance aura été enregistrée auprès de SSM.
+  `<base64-encoded-admin-container-userdata>` : Contenu codé en base64 de la configuration du conteneur d’administration Bottlerocket. L’activation du conteneur d’administration vous permet de vous connecter à votre instance Bottlerocket avec SSH pour explorer le système et le déboguer. Bien que ce paramètre ne soit pas obligatoire, nous vous recommandons de l’activer afin de faciliter le dépannage. Pour plus d’informations sur l’authentification avec le conteneur d’administration, consultez la [documentation relative au conteneur d’administration Bottlerocket](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container). Le conteneur d’administration accepte les entrées utilisateur et clé SSH au format JSON, par exemple :

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>` : Contenu encodé en base64 de la configuration du conteneur d’amorçage Bottlerocket. Pour plus d’informations sur sa configuration, consultez la [documentation relative au conteneur Bottlerocket bootstrap](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container). Le conteneur bootstrap est chargé d'enregistrer l'instance en tant qu'instance gérée par AWS SSM et de la joindre en tant que nœud Kubernetes sur votre cluster Amazon EKS. Les données utilisateur transmises au conteneur Bootstrap prennent la forme d’une invocation de commande qui accepte en entrée le code d’activation hybride SSM et l’ID que vous avez créés précédemment :

```
eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region>
```

### Rôles Anywhere IAM
<a name="_iam_roles_anywhere"></a>

Si vous utilisez AWS IAM Roles Anywhere comme fournisseur d'informations d'identification, créez un `settings.toml` fichier avec le contenu suivant :

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"
config = "<base64-encoded-aws-config-file>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "iam-ra"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"
```

Remplacez les espaces réservés par les valeurs suivantes :
+  `<cluster-name>` : le nom de votre cluster Amazon EKS.
+  `<api-server-endpoint>` : point de terminaison du serveur d’API de votre cluster.
+  `<cluster-certificate-authority>` : Ensemble CA codé en base64 de votre cluster.
+  `<region>`: La AWS région hébergeant votre cluster, par exemple « us-east-1 »
+  `<hostname>` : le nom d’hôte de l’instance Bottlerocket, qui sera également configuré comme nom de nœud. Il peut s’agir de n’importe quelle valeur unique de votre choix, mais elle doit respecter les [conventions de nommage des objets Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). De plus, le nom d’hôte que vous utilisez ne peut pas dépasser 64 caractères. REMARQUE : lorsque vous utilisez le fournisseur IAM-RA, le nom du nœud doit correspondre au nom commun (CN) du certificat sur l’hôte si vous avez configuré la stratégie de confiance de votre rôle IAM des nœuds hybrides avec la condition de ressource `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`.
+  `<base64-encoded-aws-config-file>`: le contenu codé en base64 de votre AWS fichier de configuration. Le contenu du fichier doit être le suivant :

```
[default]
credential_process = aws_signing_helper credential-process --certificate /root/.aws/node.crt --private-key /root/.aws/node.key --profile-arn <profile-arn> --role-arn <role-arn> --trust-anchor-arn <trust-anchor-arn> --role-session-name <role-session-name>
```
+  `<base64-encoded-admin-container-userdata>` : Contenu codé en base64 de la configuration du conteneur d’administration Bottlerocket. L’activation du conteneur d’administration vous permet de vous connecter à votre instance Bottlerocket avec SSH pour explorer le système et le déboguer. Bien que ce paramètre ne soit pas obligatoire, nous vous recommandons de l’activer afin de faciliter le dépannage. Pour plus d’informations sur l’authentification avec le conteneur d’administration, consultez la [documentation relative au conteneur d’administration Bottlerocket](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container). Le conteneur d’administration accepte les entrées utilisateur et clé SSH au format JSON, par exemple :

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>` : Contenu encodé en base64 de la configuration du conteneur d’amorçage Bottlerocket. Pour plus d’informations sur sa configuration, consultez la [documentation relative au conteneur Bottlerocket bootstrap](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container). Le conteneur Bootstrap est chargé de créer les fichiers de certificat hôte et de clé privée de certificat Rôles Anywhere IAM sur l’instance. Ceux-ci seront ensuite utilisés par le `aws_signing_helper` pour obtenir des informations d’identification temporaires afin de s’authentifier auprès de votre cluster Amazon EKS. Les données utilisateur transmises au conteneur bootstrap prennent la forme d’une invocation de commande qui accepte en entrée le contenu du certificat et de la clé privée que vous avez créés précédemment :

```
eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key>
```

## Étape 2 : fournir les données utilisateur à la machine virtuelle Bottlerocket vSphere
<a name="_step_2_provision_the_bottlerocket_vsphere_vm_with_user_data"></a>

Une fois le fichier TOML créé, transmettez-le en tant que données utilisateur lors de la création de la machine virtuelle vSphere. N’oubliez pas que les données utilisateur doivent être configurées avant la première mise sous tension de la machine virtuelle. Vous devrez donc le fournir lors de la création de l’instance. Si vous souhaitez créer la VM à l’avance, celle-ci devra être dans un état « poweredOff » jusqu’à ce que vous configuriez les données utilisateur correspondantes. Par exemple, si vous utilisez l’interface CLI `govc` :

### Création d’une machine virtuelle pour la première fois
<a name="_creating_vm_for_the_first_time"></a>

```
govc vm.create \
  -on=true \
  -c=2 \
  -m=4096 \
  -net.adapter=<network-adapter> \
  -net=<network-name> \
  -e guestinfo.userdata.encoding="base64" \
  -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
  -template=<template-name> \
  <vm-name>
```

### Mise à jour des données utilisateur pour une machine virtuelle existante
<a name="_updating_user_data_for_an_existing_vm"></a>

```
govc vm.create \
    -on=false \
    -c=2 \
    -m=4096 \
    -net.adapter=<network-adapter> \
    -net=<network-name> \
    -template=<template-name> \
    <vm-name>

govc vm.change
    -vm <vm-name> \
    -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
    -e guestinfo.userdata.encoding="base64"

govc vm.power -on <vm-name>
```

Dans les sections ci-dessus, l’option `-e guestinfo.userdata.encoding="base64"` spécifie que les données utilisateur sont encodées en base64. Cette option `-e guestinfo.userdata` transmet le contenu du fichier `settings.toml` encodé en base64 sous forme de données utilisateur à l’instance Bottlerocket. Remplacez les espaces réservés par vos valeurs spécifiques, telles que le modèle OVA Bottlerocket et les détails réseau.

## Étape 3 : vérifier la connexion du nœud hybride
<a name="_step_3_verify_the_hybrid_node_connection"></a>

Une fois l’instance Bottlerocket démarrée, elle tentera de rejoindre votre cluster Amazon EKS. Vous pouvez vérifier la connexion dans la console Amazon EKS en accédant à l’onglet Calcul de votre cluster ou en exécutant la commande suivante :

```
kubectl get nodes
```

**Important**  
Vos nœuds auront le statut `Not Ready`, ce qui est normal et dû à l’absence d’un CNI fonctionnant sur vos nœuds hybrides. Si vos nœuds ne se sont pas joints au cluster, consultez [Dépannage des nœuds hybrides](hybrid-nodes-troubleshooting.md).

## Étape 4 : configurer un CNI pour les nœuds hybrides
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Pour que vos nœuds hybrides soient prêts à exécuter des applications, poursuivez avec les étapes décrites à la section [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

# Mettre à niveau les nœuds hybrides pour votre cluster
<a name="hybrid-nodes-upgrade"></a>

Les instructions relatives à la mise à niveau des nœuds hybrides sont similaires à celles des nœuds Amazon EKS autogérés qui s’exécutent dans Amazon EC2. Nous vous recommandons de créer de nouveaux nœuds hybrides sur votre version Kubernetes cible, de migrer en douceur vos applications existantes vers les nœuds hybrides de la nouvelle version Kubernetes, puis de supprimer les nœuds hybrides de l’ancienne version Kubernetes de votre cluster. Avant de lancer une mise à niveau, veillez à consulter les [meilleures pratiques Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html) en matière de mise à niveau. Les nœuds hybrides Amazon EKS prennent en charge la [même version de Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) que les clusters Amazon EKS avec nœuds cloud, y compris la prise en charge standard et étendue.

Les nœuds hybrides Amazon EKS suivent la même [politique de distorsion des versions](https://kubernetes.io/releases/version-skew-policy/#supported-version-skew) pour les nœuds que pour Kubernetes en amont. Les nœuds hybrides Amazon EKS ne peuvent pas être d’une version plus récente que le plan de contrôle Amazon EKS, et les nœuds hybrides peuvent être jusqu’à trois versions mineures Kubernetes plus anciennes que la version mineure du plan de contrôle Amazon EKS.

Si vous ne disposez pas de capacité suffisante pour créer de nouveaux nœuds hybrides sur votre version Kubernetes cible dans le cadre d’une stratégie de migration par basculement, vous pouvez également utiliser l’interface CLI nœuds hybrides Amazon EKS (`nodeadm`) pour mettre à niveau la version Kubernetes de vos nœuds hybrides sur place.

**Important**  
Si vous mettez à niveau vos nœuds hybrides sur place avec `nodeadm`, il y a une durée d’indisponibilité pour le nœud pendant le processus où l’ancienne version des composants Kubernetes est arrêtée et où les composants de la nouvelle version Kubernetes sont installés et démarrés.

## Prérequis
<a name="_prerequisites"></a>

Avant de procéder à la mise à niveau, assurez-vous d’avoir rempli les conditions préalables suivantes.
+ La version Kubernetes cible pour la mise à niveau de vos nœuds hybrides doit être égale ou inférieure à la version du plan de contrôle Amazon EKS.
+ Si vous suivez une stratégie de migration par basculement, les nouveaux nœuds hybrides que vous installez sur votre version Kubernetes cible doivent répondre aux exigences [Configuration préalable requise pour les nœuds hybrides](hybrid-nodes-prereqs.md). Cela inclut le fait d’avoir des adresses IP dans le CIDR du réseau de nœuds distants que vous avez transmis lors de la création du cluster Amazon EKS.
+ Pour les migrations par basculement et les mises à niveau sur site, les nœuds hybrides doivent avoir accès aux [domaines requis](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem) pour extraire les nouvelles versions des dépendances des nœuds hybrides.
+ Vous devez avoir installé kubectl sur votre machine locale ou l’instance que vous utilisez pour interagir avec votre point de terminaison API Amazon EKS Kubernetes.
+ La version de votre CNI doit prendre en charge la version de Kubernetes vers laquelle vous effectuez la mise à niveau. Si ce n’est pas le cas, mettez à niveau votre version CNI avant de mettre à niveau vos nœuds hybrides. Pour plus d’informations, consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

## Mises à niveau liées à la migration par transition (bleu-vert)
<a name="hybrid-nodes-upgrade-cutover"></a>

 Les *mises à niveau par migration cutover* désignent le processus consistant à créer de nouveaux nœuds hybrides sur de nouveaux hôtes avec votre version Kubernetes cible, à migrer en douceur vos applications existantes vers les nouveaux nœuds hybrides sur votre version Kubernetes cible, et à supprimer les nœuds hybrides sur l’ancienne version Kubernetes de votre cluster. Cette stratégie est également appelée migration bleu-vert.

1. Connectez vos nouveaux hôtes en tant que nœuds hybrides en suivant les étapes [Connecter les nœuds hybrides](hybrid-nodes-join.md). Lorsque vous exécutez la commande `nodeadm install`, utilisez votre version cible de Kubernetes.

1. Activez la communication entre les nouveaux nœuds hybrides sur la version Kubernetes cible et vos nœuds hybrides sur l’ancienne version Kubernetes. Cette configuration permet aux pods de communiquer entre eux pendant que vous migrez votre charge de travail vers les nœuds hybrides sur la version Kubernetes cible.

1. Vérifiez que vos nœuds hybrides sur votre version Kubernetes cible ont bien rejoint votre cluster et ont le statut Ready.

1. Utilisez la commande suivante pour marquer chacun des nœuds que vous souhaitez supprimer comme non planifiable. Cela permet d’éviter que de nouveaux pods ne soient planifiés ou replanifiés sur les nœuds que vous remplacez. Pour plus d’informations, consultez [le cordon kubelet](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) dans la documentation Kubernetes. Remplacez `NODE_NAME` par le nom des nœuds hybrides de l’ancienne version de Kubernetes.

   ```
   kubectl cordon NODE_NAME
   ```

   Vous pouvez identifier et isoler tous les nœuds d’une version particulière de Kubernetes (dans ce cas, `1.28`) à l’aide de l’extrait de code suivant.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Cordoning $node"
       kubectl cordon $node
   done
   ```

1. Si votre déploiement actuel exécute moins de deux réplicas CoreDNS sur vos nœuds hybrides, augmentez horizontalement la capacité du déploiement à au moins deux réplicas. Nous vous recommandons d’exécuter au moins deux réplicas CoreDNS sur des nœuds hybrides afin d’assurer la résilience pendant les opérations normales.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Videz chacun des nœuds hybrides de l’ancienne version de Kubernetes que vous souhaitez supprimer de votre cluster à l’aide de la commande suivante. Pour plus d’informations sur la mise hors tension des nœuds, consultez la section [Mettre hors tension un nœud](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) en toute sécurité dans la documentation Kubernetes. Remplacez `NODE_NAME` par le nom des nœuds hybrides de l’ancienne version de Kubernetes.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

   Vous pouvez identifier et vider tous les nœuds d’une version particulière de Kubernetes (dans ce cas, `1.28`) à l’aide de l’extrait de code suivant.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-emptydir-data
   done
   ```

1. Vous pouvez utiliser `nodeadm` pour arrêter et supprimer les artefacts des nœuds hybrides de l’hôte. Vous devez exécuter `nodeadm` avec un utilisateur disposant des privilèges root/sudo. Par défaut, `nodeadm uninstall` ne continuera pas s’il reste des pods sur le nœud. Pour plus d’informations, consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

   ```
   nodeadm uninstall
   ```

1. Une fois les artefacts des nœuds hybrides arrêtés et désinstallés, supprimez la ressource du nœud de votre cluster.

   ```
   kubectl delete node node-name
   ```

   Vous pouvez identifier et supprimer tous les nœuds d’une version particulière de Kubernetes (dans ce cas, `1.28`) à l’aide de l’extrait de code suivant.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Deleting $node"
       kubectl delete node $node
   done
   ```

1. Selon votre choix de CNI, il se peut que des artefacts subsistent sur vos nœuds hybrides après avoir exécuté les étapes ci-dessus. Pour plus d’informations, consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

## Mises à niveau sur place
<a name="hybrid-nodes-upgrade-inplace"></a>

Le processus de mise à niveau sur place consiste à utiliser `nodeadm upgrade` pour mettre à niveau la version Kubernetes pour les nœuds hybrides sans utiliser de nouveaux hôtes physiques ou virtuels ni de stratégie de migration par basculement. Le processus `nodeadm upgrade` arrête les anciens composants Kubernetes existants qui s’exécutent sur le nœud hybride, désinstalle les anciens composants Kubernetes existants, installe les nouveaux composants Kubernetes cibles et démarre les nouveaux composants Kubernetes cibles. Il est fortement recommandé de mettre à niveau un nœud à la fois afin de minimiser l’impact sur les applications exécutées sur les nœuds hybrides. La durée de ce processus dépend de la bande passante et de la latence de votre réseau.

1. Utilisez la commande suivante pour marquer le nœud que vous mettez à niveau comme non planifiable. Cela permet d’éviter que de nouveaux pods ne soient planifiés ou replanifiés sur le nœud que vous mettez à niveau. Pour plus d’informations, consultez [kubectl cordon](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) dans la documentation Kubernetes. Remplacer `NODE_NAME` par le nom du nœud hybride que vous mettez à niveau

   ```
   kubectl cordon NODE_NAME
   ```

1. Videz le nœud que vous mettez à niveau à l’aide de la commande suivante. Pour plus d’informations sur la mise hors tension des nœuds, consultez la section [Mettre hors tension un nœud](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) en toute sécurité dans la documentation Kubernetes. Remplacez `NODE_NAME` par le nom du nœud hybride que vous mettez à niveau.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

1. Exécutez `nodeadm upgrade` sur le nœud hybride que vous mettez à niveau. Vous devez exécuter `nodeadm` avec un utilisateur disposant des privilèges root/sudo. Le nom du nœud est conservé lors de la mise à niveau pour les fournisseurs d’informations d’identification AWS SSM et Rôles Anywhere IAM AWS. Vous ne pouvez pas changer de fournisseur d’informations d’identification pendant le processus de mise à niveau. Consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md) pour les valeurs de configuration de `nodeConfig.yaml`. Remplacez `K8S_VERSION` par la version cible de Kubernetes vers laquelle vous effectuez la mise à niveau.

   ```
   nodeadm upgrade K8S_VERSION -c file://nodeConfig.yaml
   ```

1. Pour autoriser la planification des pods sur le nœud après la mise à niveau, tapez ce qui suit. Remplacez `NODE_NAME` par le nom du nœud.

   ```
   kubectl uncordon NODE_NAME
   ```

1. Vérifiez le statut de vos nœuds hybrides et attendez que vos nœuds s’arrêtent et redémarrent sur la nouvelle version de Kubernetes avec le statut Ready.

   ```
   kubectl get nodes -o wide -w
   ```

# Mises à jour de sécurité pour les nœuds hybrides
<a name="hybrid-nodes-security"></a>

Cette rubrique décrit la procédure à suivre pour appliquer des correctifs de sécurité à des packages et dépendances spécifiques s’exécutant sur vos nœuds hybrides. Nous vous recommandons de mettre régulièrement à jour vos nœuds hybrides afin de recevoir les CVE et les correctifs de sécurité.

Pour connaître les étapes à suivre pour mettre à niveau la version de Kubernetes, consultez [Mettre à niveau les nœuds hybrides pour votre cluster](hybrid-nodes-upgrade.md).

Un exemple de logiciel pouvant nécessiter un correctif de sécurité est `containerd`.

## `Containerd`
<a name="_containerd"></a>

 `containerd` est l’exécution de conteneur Kubernetes standard et la dépendance principale pour les nœuds hybrides EKS, utilisée pour gérer le cycle de vie des conteneurs, y compris le téléchargement d’images et la gestion de l’exécution des conteneurs. Sur un nœud hybride, vous pouvez installer `containerd` via l’interface [CLI nodeadm](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) ou manuellement. En fonction du système d’exploitation de votre nœud, `nodeadm` installera `containerd` à partir du paquet distribué par le système d’exploitation ou du paquet Docker.

Lorsqu’un CVE dans `containerd` a été publié, vous disposez des options suivantes pour passer à la version corrigée de `containerd` sur vos nœuds hybrides.

## Étape 1 : vérifier si le correctif a été publié dans les gestionnaires de paquets
<a name="_step_1_check_if_the_patch_published_to_package_managers"></a>

Vous pouvez vérifier si le correctif CVE `containerd` a été publié pour chaque gestionnaire de paquets OS en consultant les bulletins de sécurité correspondants :
+  [Amazon Linux 2023](https://alas.aws.amazon.com/alas2023.html) 
+  [RHEL](https://access.redhat.com/security/security-updates/security-advisories) 
+  [Ubuntu 20.04](https://ubuntu.com/security/notices?order=newest&release=focal) 
+  [Ubuntu 22.04](https://ubuntu.com/security/notices?order=newest&release=jammy) 
+  [Ubuntu 24.04](https://ubuntu.com/security/notices?order=newest&release=noble) 

Si vous utilisez le dépôt Docker comme source de `containerd`, vous pouvez consulter les [annonces de sécurité Docker](https://docs.docker.com/security/security-announcements/) pour vérifier la disponibilité de la version corrigée dans le dépôt Docker.

## Étape 2 : choisir la méthode d’installation du correctif
<a name="_step_2_choose_the_method_to_install_the_patch"></a>

Il existe trois méthodes pour corriger et installer les mises à niveau de sécurité sur place sur les nœuds. La méthode que vous pouvez utiliser dépend de la disponibilité du correctif dans le gestionnaire de paquets du système d’exploitation :

1. Installez les correctifs avec `nodeadm upgrade` qui sont publiés dans les gestionnaires de paquets, voir [Étape 2a](#hybrid-nodes-security-nodeadm).

1. Installez les correctifs directement à l’aide des gestionnaires de paquets, voir [Étape 2b](#hybrid-nodes-security-package).

1. Installez des correctifs personnalisés qui ne sont pas publiés dans les gestionnaires de paquets. Veuillez noter qu’il existe des considérations particulières pour les correctifs personnalisés pour `containerd`, [Étape 2c](#hybrid-nodes-security-manual).

## Étape 2a : application d’un correctif avec `nodeadm upgrade`
<a name="hybrid-nodes-security-nodeadm"></a>

Après avoir vérifié que le correctif CVE `containerd` a été publié dans les référentiels OS ou Docker (Apt ou RPM), vous pouvez utiliser la commande `nodeadm upgrade` pour passer à la dernière version de `containerd`. Comme il ne s’agit pas d’une mise à niveau de la version Kubernetes, vous devez indiquer votre version Kubernetes actuelle dans la commande de mise à niveau `nodeadm`.

```
nodeadm upgrade K8S_VERSION --config-source file:///root/nodeConfig.yaml
```

## Étape 2b : application de correctifs à l’aide des gestionnaires de paquets du système d’exploitation
<a name="hybrid-nodes-security-package"></a>

Vous pouvez également effectuer la mise à jour via le gestionnaire de paquets correspondant et l’utiliser pour mettre à niveau le paquet `containerd` comme suit.

 **Amazon Linux 2023** 

```
sudo yum update -y
sudo yum install -y containerd
```

 **RHEL** 

```
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum update -y
sudo yum install -y containerd
```

 **Ubuntu** 

```
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install -y --only-upgrade containerd.io
```

## Étape 2c : correctif CVE `Containerd` non publié dans les gestionnaires de paquets
<a name="hybrid-nodes-security-manual"></a>

Si la version corrigée `containerd` n’est disponible que par d’autres moyens que le gestionnaire de paquets, par exemple dans les versions GitHub, vous pouvez installer `containerd` à partir du site officiel GitHub.

1. Si la machine a déjà rejoint le cluster en tant que nœud hybride, vous devez alors exécuter la commande `nodeadm uninstall`.

1. Installez les binaires officiels `containerd`. Vous pouvez suivre les [étapes d’installation officielles](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries) sur GitHub.

1. Exécutez la commande `nodeadm install` avec l’argument `--containerd-source` défini sur `none`, ce qui ignorera l’installation `containerd` via `nodeadm`. Vous pouvez utiliser la valeur de `none` dans la source `containerd` pour tout système d’exploitation exécuté par le nœud.

   ```
   nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --containerd-source none
   ```

# Supprimer les nœuds hybrides
<a name="hybrid-nodes-remove"></a>

Cette rubrique décrit comment supprimer les nœuds hybrides de votre cluster Amazon EKS. [Vous devez supprimer vos nœuds hybrides avec l’outil compatible Kubernetes de votre choix, tel que kubectl.](https://kubernetes.io/docs/reference/kubectl/) Les frais liés aux nœuds hybrides cessent lorsque l’objet nœud est supprimé du cluster Amazon EKS. Pour plus d’informations sur la tarification des nœuds hybrides, consultez la section [Tarification d’Amazon EKS](https://aws.amazon.com/eks/pricing/).

**Important**  
La suppression de nœuds perturbe les charges de travail exécutées sur le nœud. Avant de supprimer des nœuds hybrides, nous vous recommandons de vider d’abord le nœud afin de déplacer les pods vers un autre nœud actif. Pour plus d’informations sur la mise hors tension des nœuds, consultez la section [Mettre hors tension un nœud](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) en toute sécurité dans la documentation Kubernetes.

Exécutez les étapes kubectl ci-dessous à partir de votre machine locale ou de l’instance que vous utilisez pour interagir avec le point de terminaison API Kubernetes du cluster Amazon EKS. Si vous utilisez un fichier spécifique `kubeconfig`, utilisez l’indicateur `--kubeconfig`.

## Étape 1 : répertorier vos nœuds
<a name="_step_1_list_your_nodes"></a>

```
kubectl get nodes
```

## Étape 2 : vider votre nœud
<a name="_step_2_drain_your_node"></a>

Pour plus d’informations sur cette commande `kubectl drain`, consultez la section [kubectl drain](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_drain/) dans la documentation Kubernetes.

```
kubectl drain --ignore-daemonsets <node-name>
```

## Étape 3 : arrêter et désinstaller les artefacts des nœuds hybrides
<a name="_step_3_stop_and_uninstall_hybrid_nodes_artifacts"></a>

Vous pouvez utiliser la CLI des nœuds hybrides Amazon EKS (`nodeadm`) pour arrêter et supprimer les artefacts des nœuds hybrides de l’hôte. Vous devez exécuter `nodeadm` avec un utilisateur disposant des privilèges root/sudo. Par défaut, `nodeadm uninstall` ne continuera pas s’il reste des pods sur le nœud. Si vous utilisez Systems Manager (SSM) AWS comme fournisseur d’informations d’identification, la commande `nodeadm uninstall` désenregistre l’hôte en tant qu’instance AWS gérée par SSM. Pour de plus amples informations, consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

```
nodeadm uninstall
```

## Étape 4 : supprimer votre nœud du cluster
<a name="_step_4_delete_your_node_from_the_cluster"></a>

Une fois les artefacts des nœuds hybrides arrêtés et désinstallés, supprimez la ressource du nœud de votre cluster.

```
kubectl delete node <node-name>
```

## Étape 5 : vérifier s’il reste des artefacts
<a name="_step_5_check_for_remaining_artifacts"></a>

Selon votre choix de CNI, il se peut que des artefacts subsistent sur vos nœuds hybrides après avoir exécuté les étapes ci-dessus. Pour plus d'informations, consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

# Configuration de la mise en réseau des applications, des modules complémentaires et des webhooks pour les nœuds hybrides
<a name="hybrid-nodes-configure"></a>

Après avoir créé un cluster EKS pour les nœuds hybrides, configurez des fonctionnalités supplémentaires pour la mise en réseau des applications (CNI, BGP, Ingress, équilibrage de charge, politiques réseau), les modules complémentaires, les webhooks et les paramètres de proxy. Pour obtenir la liste complète des modules complémentaires EKS et communautaires compatibles avec les nœuds hybrides, consultez [Configurer les modules complémentaires pour les nœuds hybrides](hybrid-nodes-add-ons.md).

 **Informations sur les clusters EKS** EKS inclut des vérifications permettant de détecter les erreurs de configuration dans vos nœuds hybrides qui pourraient nuire au bon fonctionnement de votre cluster ou de vos charges de travail. Pour plus d’informations sur les informations relatives aux clusters, consultez [Préparation aux mises à niveau des versions Kubernetes et résolution des erreurs de configuration grâce aux informations sur les clusters](cluster-insights.md).

La liste suivante répertorie les fonctionnalités courantes et les modules complémentaires que vous pouvez utiliser avec les nœuds hybrides :
+  **Interface réseau de conteneur (CNI)** : AWS prend en charge [Cilium](https://docs.cilium.io/en/stable/index.html) en tant que CNI pour les nœuds hybrides. Pour de plus amples informations, consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md). Notez que le CNI VPC AWS ne peut pas être utilisé avec des nœuds hybrides.
+  **CoreDNS et `kube-proxy` ** : CoreDNS et `kube-proxy` sont installés automatiquement lorsque des nœuds hybrides rejoignent le cluster EKS. Ces modules complémentaires peuvent être gérés en tant que modules complémentaires EKS après la création du cluster.
+  **Ingress et équilibrage de charge** : vous pouvez utiliser l’AWS Load Balancer Controller et le Application Load Balancer (ALB) ou Network Load Balancer (NLB) avec le type de cible `ip` pour les charges de travail s’exécutant sur des nœuds hybrides. AWS prend en charge les fonctionnalités intégrées d’Ingress, de passerelle et d’équilibrage de charge Kubernetes Service de Cilium pour les charges de travail s’exécutant sur des nœuds hybrides. Pour plus d’informations, consultez [Configurer Kubernetes Ingress pour les nœuds hybrides](hybrid-nodes-ingress.md) et [Configurer les services de type LoadBalancer pour les nœuds hybrides](hybrid-nodes-load-balancing.md).
+  **Métriques** : vous pouvez utiliser les scrapers sans agent du service géré Amazon pour Prometheus (AMP), AWS Distro for Open Telemetry (ADOT) et l’agent d’observabilité Amazon CloudWatch avec des nœuds hybrides. Pour utiliser les scrapers AMP sans agent pour les métriques de pod sur les nœuds hybrides, vos pods doivent être accessibles depuis le VPC que vous utilisez pour le cluster EKS.
+  **Journaux** : Vous pouvez activer la journalisation du plan de contrôle EKS pour les clusters compatibles avec les nœuds hybrides. Vous pouvez utiliser le module complémentaire EKS ADOT et le module complémentaire EKS de l’agent d’observabilité Amazon CloudWatch pour la journalisation hybride des nœuds et des pods.
+  **Identités de pod et IRSA** : Vous pouvez utiliser les identités de pod EKS et les rôles IAM pour les comptes de service (IRSA) avec des applications s’exécutant sur des nœuds hybrides afin de permettre un accès granulaire à vos pods s’exécutant sur des nœuds hybrides avec d’autres services AWS.
+  **Webhooks** : si vous utilisez des webhooks, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md) pour obtenir les considérations et les étapes à suivre pour exécuter éventuellement des webhooks sur des nœuds cloud si vous ne pouvez pas rendre vos réseaux de pods sur site routables.
+  **Proxy** : si vous utilisez un serveur proxy dans votre environnement sur site pour le trafic sortant de votre centre de données ou de votre environnement périphérique, vous pouvez configurer vos nœuds hybrides et votre cluster pour utiliser votre serveur proxy. Pour de plus amples informations, consultez [Configurer le proxy pour les nœuds hybrides](hybrid-nodes-proxy.md).

**Topics**
+ [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md)
+ [Configurer les modules complémentaires pour les nœuds hybrides](hybrid-nodes-add-ons.md)
+ [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md)
+ [Configurer le proxy pour les nœuds hybrides](hybrid-nodes-proxy.md)
+ [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md)
+ [Configurer Kubernetes Ingress pour les nœuds hybrides](hybrid-nodes-ingress.md)
+ [Configurer les services de type LoadBalancer pour les nœuds hybrides](hybrid-nodes-load-balancing.md)
+ [Configurer les politiques réseau Kubernetes pour les nœuds hybrides](hybrid-nodes-network-policies.md)

# Configurer CNI pour les nœuds hybrides
<a name="hybrid-nodes-cni"></a>

Cilium est l'interface réseau de conteneurs (CNI) prise en AWS charge par les nœuds hybrides Amazon EKS. Vous devez installer un CNI pour que les nœuds hybrides soient prêts à prendre en charge les charges de travail. Les nœuds hybrides apparaissent avec le statut `Not Ready` jusqu’à ce qu’un CNI soit en cours d’exécution. Vous pouvez gérer le CNI à l’aide des outils de votre choix, tels que Helm. Les instructions fournies sur cette page concernent la gestion du cycle de vie de Cilium (installation, mise à niveau, suppression). Consultez [Présentation de Cilium Ingress et Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium), [Type de service LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer), et [Configurer les politiques réseau Kubernetes pour les nœuds hybrides](hybrid-nodes-network-policies.md) pour savoir comment configurer Cilium pour l’ingress, l’équilibrage de charge et les politiques réseau.

Cilium n'est pas pris en charge AWS lorsqu'il est exécuté sur des nœuds dans AWS le cloud. Le CNI VPC Amazon n’est pas compatible avec les nœuds hybrides et le CNI VPC est configuré avec une anti-affinité pour l’étiquette `eks.amazonaws.com/compute-type: hybrid`.

La documentation Calico qui figurait auparavant sur cette page a été déplacée vers le [référentiel d’exemples hybrides EKS](https://github.com/aws-samples/eks-hybrid-examples).

## Compatibilité des versions
<a name="hybrid-nodes-cilium-version-compatibility"></a>

Les versions Cilium `v1.17.x` et B `v1.18.x` sont prises en charge pour les nœuds hybrides EKS pour chaque version de Kubernetes prise en charge dans Amazon EKS.

**Note**  
 Configuration requise pour le **noyau Cilium v1.18.3 : En raison de l'exigence** du noyau (noyau Linux >= 5.10), Cilium v1.18.3 n'est pas pris en charge sur :
+ Ubuntu 20.04
+ Red Hat Enterprise Linux (RHEL) 8

Pour la configuration système requise, consultez la section Configuration requise pour [Cilium.](https://docs.cilium.io/en/stable/operations/system_requirements/)

Consultez la [prise en charge des versions Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) pour connaître les versions Kubernetes prises en charge par Amazon EKS. Les nœuds hybrides EKS prennent en charge la même version de Kubernetes que les clusters Amazon EKS avec nœuds cloud.

## Fonctionnalités prises en charge
<a name="hybrid-nodes-cilium-support"></a>

 AWS gère des versions de Cilium pour les nœuds hybrides EKS basées sur le projet open source [Cilium](https://github.com/cilium/cilium). Pour bénéficier de l'assistance de AWS Cilium, vous devez utiliser les versions de Cilium AWS maintenues et les versions de Cilium prises en charge.

 AWS fournit un support technique pour les configurations par défaut des fonctionnalités suivantes de Cilium à utiliser avec les nœuds hybrides EKS. Si vous envisagez d'utiliser des fonctionnalités hors du champ d' AWS assistance, il est recommandé d'obtenir un support commercial alternatif pour Cilium ou de disposer de l'expertise interne nécessaire pour résoudre les problèmes et apporter des correctifs au projet Cilium.


| Fonction Cilium | Soutenu par AWS  | 
| --- | --- | 
|  Conformité au réseau Kubernetes  |  Oui  | 
|  Connectivité au cluster principal  |  Oui  | 
|  Famille d'IP  |  IPv4  | 
|  La gestion du cycle de vie  |  Helm  | 
|  Mode réseau  |  Encapsulation VXLAN  | 
|  Gestion des adresses IP (IPAM)  |  Champ d’application du cluster Cilium IPAM  | 
|  Stratégie de réseau  |  Stratégie réseau Kubernetes  | 
|  Protocole de passerelle frontière (BGP)  |  Plan de contrôle Cilium BGP  | 
|  Entrée Kubernetes  |  Cilium Ingress, Cilium Gateway  | 
|  Allocation d' LoadBalancer adresses IP de service  |  Équilibreur de charge Cilium IPAM  | 
|  Publicité d'adresse LoadBalancer IP du service  |  Plan de contrôle Cilium BGP  | 
|  remplacement de kube-proxy  |  Oui  | 

## Considérations relatives à Cilium
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Référentiel Helm** [: AWS héberge le graphique Cilium Helm dans le Amazon Elastic Container Registry Public (Amazon ECR Public) sur Amazon EKS Cilium/Cilium.](https://gallery.ecr.aws/eks/cilium/cilium) Les versions disponibles incluent :
  + Cilium v1.17.9 : `oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0` 
  + Cilium v1.18.3 : `oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0` 

    Les commandes de cette rubrique utilisent ce référentiel. Notez que certaines commandes `helm repo` ne sont pas valides pour les référentiels Helm dans Amazon ECR Public. Vous ne pouvez donc pas faire référence à ce référentiel à partir d’un nom de référentiel Helm local. Au lieu de cela, utilisez l’URI complet dans la plupart des commandes.
+ Par défaut, Cilium est configuré pour fonctionner en mode overlay/tunnel avec VXLAN comme [méthode d’encapsulation](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation). Ce mode présente le moins d’exigences sur le réseau physique sous-jacent.
+ Par défaut, Cilium [masque](https://docs.cilium.io/en/stable/network/concepts/masquerading/) l’adresse IP source de tout le trafic du pod quittant le cluster au profit de l’adresse IP du nœud. Si vous désactivez le masquage, votre pod CIDRs doit être routable sur votre réseau local.
+ Si vous exécutez des webhooks sur des nœuds hybrides, votre pod CIDRs doit être routable sur votre réseau local. Si votre pod CIDRs n'est pas routable sur votre réseau local, il est recommandé d'exécuter des webhooks sur les nœuds cloud du même cluster. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md) et [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+  AWS recommande d'utiliser la fonctionnalité BGP intégrée de Cilium pour rendre votre pod CIDRs routable sur votre réseau local. Pour plus d’informations sur la configuration de Cilium BGP avec des nœuds hybrides, consultez [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md).
+ La gestion des adresses IP (IPAM) par défaut dans Cilium s'appelle [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/), où l'opérateur Cilium alloue des adresses IP à chaque nœud en fonction du pod configuré par l'utilisateur. CIDRs

## Installer Cilium sur les nœuds hybrides
<a name="hybrid-nodes-cilium-install"></a>

### Procédure
<a name="_procedure"></a>

1. Créez un fichier YAML nommé `cilium-values.yaml`. L’exemple suivant configure Cilium pour qu’il s’exécute uniquement sur des nœuds hybrides en définissant l’affinité pour l’étiquette `eks.amazonaws.com/compute-type: hybrid` de l’agent et de l’opérateur Cilium.
   + Configurez `clusterPoolIpv4PodCIDRList` avec le même pod CIDRs que celui que vous avez configuré pour les *réseaux de pods distants* de votre cluster EKS. Par exemple, `10.100.0.0/24`. L’opérateur Cilium attribue des tranches d’adresses IP à partir de l’espace IP `clusterPoolIpv4PodCIDRList` configuré. Votre CIDR de pod ne doit pas chevaucher votre CIDR de nœud sur site, votre CIDR VPC ou votre CIDR de service Kubernetes.
   + Configurez `clusterPoolIpv4MaskSize` en fonction du nombre de pods requis par nœud. Par exemple, `25` pour une taille de segment /25 de 128 pods par nœud.
   + Ne modifiez pas `clusterPoolIpv4PodCIDRList` ou `clusterPoolIpv4MaskSize` après avoir déployé Cilium sur votre cluster, consultez la section [Extension du pool de clusters](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) pour plus d’informations.
   + Si vous exécutez Cilium en mode de remplacement de kube-proxy, définissez `kubeProxyReplacement: "true"` dans vos valeurs Helm et assurez-vous qu’aucun déploiement kube-proxy n’est en cours d’exécution sur les mêmes nœuds que Cilium.
   + L’exemple ci-dessous désactive le proxy Envoy Layer 7 (L7) utilisé par Cilium pour les politiques réseau L7 et l’entrée. Pour plus d’informations, consultez [Configurer les politiques réseau Kubernetes pour les nœuds hybrides](hybrid-nodes-network-policies.md) et [Présentation de Cilium Ingress et Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + L’exemple ci-dessous configure `loadBalancer.serviceTopology` : `true` pour que la distribution du trafic de service fonctionne correctement si vous la configurez pour vos services. Pour de plus amples informations, veuillez consulter [Configuration de la distribution du trafic de service](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Pour obtenir la liste complète des valeurs Helm pour Cilium, consultez la [référence Helm](https://docs.cilium.io/en/stable/helm-reference/) dans la documentation Cilium.

     ```
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
     ipam:
       mode: cluster-pool
       operator:
         clusterPoolIPv4MaskSize: 25
         clusterPoolIPv4PodCIDRList:
         - POD_CIDR
     loadBalancer:
       serviceTopology: true
     operator:
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: eks.amazonaws.com/compute-type
                 operator: In
                 values:
                   - hybrid
       unmanagedPodWatcher:
         restart: false
     loadBalancer:
       serviceTopology: true
     envoy:
       enabled: false
     kubeProxyReplacement: "false"
     ```

1. Installez Cilium sur votre cluster.
   + `CILIUM_VERSION`Remplacez-le par une version Cilium (par exemple `1.17.9-0` ou`1.18.3-0`). Il est recommandé d’utiliser la dernière version du correctif pour la version mineure de Cilium.
   + Assurez-vous que vos nœuds répondent aux exigences du noyau pour la version que vous choisissez. Cilium v1.18.3 nécessite un noyau Linux >= 5.10.
   + Si vous utilisez un fichier kubeconfig spécifique, utilisez le drapeau `--kubeconfig` avec la commande d’installation Helm.

     ```
     helm install cilium oci://public.ecr.aws/eks/cilium/cilium \
         --version CILIUM_VERSION \
         --namespace kube-system \
         --values cilium-values.yaml
     ```

1. Vérifiez que l’installation de Cilium s’est bien déroulée à l’aide des commandes suivantes. Vous devriez voir le déploiement `cilium-operator` et l’exécution `cilium-agent` sur chacun de vos nœuds hybrides. De plus, vos nœuds hybrides devraient désormais avoir un statut `Ready`. Pour plus d'informations sur la façon de configurer Cilium BGP pour promouvoir votre pod sur votre réseau local, passez CIDRs à. [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md)

   ```
   kubectl get pods -n kube-system
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   cilium-jjjn8                      1/1     Running   0          11m
   cilium-operator-d4f4d7fcb-sc5xn   1/1     Running   0          11m
   ```

   ```
   kubectl get nodes
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION
   mi-04a2cf999b7112233   Ready    <none>   19m   v1.31.0-eks-a737599
   ```

## Mettre à niveau Cilium sur les nœuds hybrides
<a name="hybrid-nodes-cilium-upgrade"></a>

Avant de mettre à niveau votre déploiement Cilium, consultez attentivement la [documentation relative à la mise à niveau de Cilium](https://docs.cilium.io/en/v1.17/operations/upgrade/) et les notes de mise à niveau afin de comprendre les modifications apportées à la version Cilium cible.

1. Assurez-vous d’avoir installé l’interface `helm` CLI dans votre environnement de ligne de commande. Consultez la [documentation Helm](https://helm.sh/docs/intro/quickstart/) pour obtenir les instructions d’installation.

1. Exécutez le contrôle de mise à niveau de Cilium avant le vol. Remplacez `CILIUM_VERSION` par votre version cible de Cilium. Nous vous recommandons d’utiliser la dernière version du correctif pour votre version mineure de Cilium. Vous trouverez la dernière version du correctif pour une version mineure donnée de Cilium dans la [section Versions stables](https://github.com/cilium/cilium#stable-releases) de la documentation Cilium.

   ```
   helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace=kube-system \
     --set preflight.enabled=true \
     --set agent=false \
     --set operator.enabled=false
   ```

1. Après avoir appliqué le `cilium-preflight.yaml`, assurez-vous que le nombre de pods `READY` correspond au nombre de pods Cilium en cours d’exécution.

   ```
   kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
   ```

   ```
   NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   cilium                    2         2         2       2            2           <none>          1h20m
   cilium-pre-flight-check   2         2         2       2            2           <none>          7m15s
   ```

1. Une fois que le nombre de pods READY est égal, assurez-vous que le déploiement préalable de Cilium est également marqué comme READY 1/1. Si le message READY 0/1 s’affiche, consultez la section [Validation CNP](https://docs.cilium.io/en/v1.17/operations/upgrade/#cnp-validation) et résolvez les problèmes liés au déploiement avant de poursuivre la mise à niveau.

   ```
   kubectl get deployment -n kube-system cilium-pre-flight-check -w
   ```

   ```
   NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
   cilium-pre-flight-check   1/1     1            0           12s
   ```

1. Supprimer le pré-vol

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

1. Avant d’exécuter la commande `helm upgrade`, conservez les valeurs de votre déploiement dans un `existing-cilium-values.yaml` ou utilisez les options de ligne de commande `--set` pour vos paramètres lorsque vous exécutez la commande de mise à niveau. L'opération de mise à niveau remplace le Cilium ConfigMap. Il est donc essentiel que vos valeurs de configuration soient transmises lors de la mise à niveau.

   ```
   helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
   ```

1. Pendant le fonctionnement normal du cluster, tous les composants Cilium doivent exécuter la même version. Les étapes suivantes décrivent comment mettre à niveau tous les composants d’une version stable vers une version stable ultérieure. Lors de la mise à niveau d’une version mineure vers une autre version mineure, il est recommandé de commencer par mettre à niveau vers la dernière version corrective de la version mineure existante de Cilium. Pour minimiser les perturbations, définissez l’option `upgradeCompatibility` sur la version initiale de Cilium que vous avez installée dans ce cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace kube-system \
     --set upgradeCompatibility=1.X \
     -f existing-cilium-values.yaml
   ```

1. (Facultatif) Si vous devez annuler votre mise à niveau en raison de problèmes, exécutez les commandes suivantes.

   ```
   helm history cilium --namespace kube-system
   helm rollback cilium [REVISION] --namespace kube-system
   ```

## Supprimer Cilium des nœuds hybrides
<a name="hybrid-nodes-cilium-delete"></a>

1. Exécutez la commande suivante pour désinstaller tous les composants Cilium de votre cluster. Remarque : la désinstallation du CNI peut avoir un impact sur l’état des nœuds et des pods et ne doit pas être effectuée sur les clusters de production.

   ```
   helm uninstall cilium --namespace kube-system
   ```

   Les interfaces et les routes configurées par Cilium ne sont pas supprimées par défaut lorsque le CNI est supprimé du cluster. Consultez le [GitHub problème](https://github.com/cilium/cilium/issues/34289) pour plus d'informations.

1. Pour nettoyer les fichiers de configuration et les ressources sur disque, si vous utilisez les répertoires de configuration standard, vous pouvez supprimer les fichiers comme indiqué par le [`cni-uninstall.sh`script](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) dans le référentiel Cilium sur. GitHub

1. Pour supprimer les définitions de ressources personnalisées Cilium (CRDs) de votre cluster, vous pouvez exécuter les commandes suivantes.

   ```
   kubectl get crds -oname | grep "cilium" | xargs kubectl delete
   ```

# Configurer les modules complémentaires pour les nœuds hybrides
<a name="hybrid-nodes-add-ons"></a>

Cette page décrit les considérations relatives à l'exécution de AWS modules complémentaires et de modules complémentaires communautaires sur les nœuds hybrides Amazon EKS. Pour en savoir plus sur les modules complémentaires Amazon EKS et les processus de création, de mise à niveau et de suppression de modules complémentaires de votre cluster, consultez [Modules complémentaires Amazon EKS](eks-add-ons.md). Sauf indication contraire sur cette page, les processus de création, de mise à niveau et de suppression des modules complémentaires Amazon EKS sont les mêmes pour les clusters Amazon EKS dotés de nœuds hybrides que pour les clusters Amazon EKS dotés de nœuds exécutés dans AWS le cloud. Seuls les modules complémentaires inclus dans cette page ont été validés pour leur compatibilité avec les nœuds hybrides Amazon EKS.

Les AWS modules complémentaires suivants sont compatibles avec les nœuds hybrides Amazon EKS.


|  AWS module complémentaire | Versions complémentaires compatibles | 
| --- | --- | 
|  kube-proxy  |  v1.25.14-eksbuild.2 et versions ultérieures  | 
|  CoreDNS  |  v1.9.3-eksbuild.7 et versions ultérieures  | 
|   AWS Distribution pour OpenTelemetry (ADOT)  |  v0.102.1-eksbuild.2 et versions ultérieures  | 
|  CloudWatch Agent d'observabilité  |  v2.2.1-eksbuild.1 et versions ultérieures  | 
|  Agent d'identité du pod EKS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/hybrid-nodes-add-ons.html)  | 
|  Agent de surveillance des nœuds  |  v1.2.0-eksbuild.1 et versions ultérieures  | 
|  Contrôleur d'instantané CSI  |  v8.1.0-eksbuild.1 et ultérieures  | 
|   AWS Connecteur CA privé pour Kubernetes  |  v1.6.0-eksbuild.1 et ultérieures  | 
|  pilote Amazon FSx CSI  |  v1.7.0-eksbuild.1 et versions ultérieures  | 
|   AWS Fournisseur de pilotes CSI Secrets Store  |  v2.1.1-eksbuild.1 et versions ultérieures  | 

Les modules complémentaires communautaires suivants sont compatibles avec les nœuds hybrides Amazon EKS. Pour en savoir plus sur les modules complémentaires communautaires, consultez [Extensions communautaires](community-addons.md).


| Module complémentaire communautaire | Versions complémentaires compatibles | 
| --- | --- | 
|  Serveur de métriques Kubernetes  |  v0.7.2-eksbuild.1 et versions ultérieures  | 
|  cert-manager  |  v1.17.2-eksbuild.1 et versions ultérieures  | 
|  Exportateur de nœuds Prometheus  |  v1.9.1-eksbuild.2 et versions ultérieures  | 
|  kube-state-metrics  |  v2.15.0-eksbuild.4 et versions ultérieures  | 
|  DNS externe  |  v0.19.0-eksbuild.1 et versions ultérieures  | 

Outre les modules complémentaires Amazon EKS présentés dans les tableaux ci-dessus, le [collecteur du service géré Amazon pour Prometheus](prometheus.md) et le [contrôleur d’équilibreur de charge AWS](aws-load-balancer-controller.md) pour [l’entrée d’applications](alb-ingress.md) (HTTP) et [l’équilibrage de charge](network-load-balancing.md) (TCP/UDP) sont compatibles avec les nœuds hybrides.

Il existe des AWS modules complémentaires et des modules complémentaires communautaires qui ne sont pas compatibles avec les nœuds hybrides Amazon EKS. Les dernières versions de ces modules complémentaires disposent d’une règle anti-affinité pour l’étiquette `eks.amazonaws.com/compute-type: hybrid` par défaut appliquée aux nœuds hybrides. Cela les empêche de s’exécuter sur des nœuds hybrides lorsqu’ils sont déployés dans vos clusters. Si vous avez des clusters comportant à la fois des nœuds hybrides et des nœuds exécutés dans AWS le cloud, vous pouvez déployer ces modules complémentaires dans votre cluster sur des nœuds exécutés dans AWS le cloud. L'Amazon VPC CNI n'est pas compatible avec les nœuds hybrides, et Cilium et Calico sont pris en charge en tant qu'interfaces réseau de conteneurs () CNIs pour les nœuds hybrides Amazon EKS. Pour plus d’informations, consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

## AWS modules complémentaires
<a name="hybrid-nodes-add-ons-aws-add-ons"></a>

Les sections suivantes décrivent les différences entre l'exécution de AWS modules complémentaires compatibles sur des nœuds hybrides par rapport aux autres types de calcul Amazon EKS.

## kube-proxy et CoreDNS
<a name="hybrid-nodes-add-ons-core"></a>

EKS installe kube-proxy et CoreDNS en tant que modules complémentaires autogérés par défaut lorsque vous créez un cluster EKS avec l'API AWS et, notamment, à partir de la CLI. AWS SDKs AWS Vous pouvez remplacer ces modules complémentaires par les modules complémentaires Amazon EKS après la création du cluster. Consultez la documentation EKS pour plus de détails sur [Gérer `kube-proxy` dans les Clusters Amazon EKS](managing-kube-proxy.md) et [Gérer CoreDNS pour DNS dans les clusters Amazon EKS](managing-coredns.md). Si vous utilisez un cluster en mode mixte avec à la fois des nœuds hybrides et des nœuds dans le AWS cloud, il est AWS recommandé d'avoir au moins une réplique CoreDNS sur les nœuds hybrides et au moins une réplique CoreDNS sur vos nœuds dans le cloud. AWS Consultez [Configuration des réplicas de CoreDNS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-coredns) pour les étapes de configuration.

## CloudWatch Agent d'observabilité
<a name="hybrid-nodes-add-ons-cw"></a>

L'opérateur de l'agent CloudWatch Observability utilise des [webhooks](https://kubernetes.io/docs/reference/access-authn-authz/webhook/). Si vous exécutez l’opérateur sur des nœuds hybrides, votre CIDR de pod sur site doit être routable sur votre réseau sur site et vous devez configurer votre cluster EKS avec votre réseau de pods distant. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

Les métriques au niveau des nœuds ne sont pas disponibles pour les nœuds hybrides car [CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) dépend de la disponibilité du service IMDS ([Instance Metadata Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)) pour les métriques au niveau des nœuds. Les métriques au niveau des clusters, des charges de travail, des pods et des conteneurs sont disponibles pour les nœuds hybrides.

Après avoir installé le module complémentaire en suivant les étapes décrites dans [Installer l' CloudWatch agent avec Amazon CloudWatch Observability, le](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html) manifeste du module complémentaire doit être mis à jour pour que l'agent puisse s'exécuter correctement sur des nœuds hybrides. Modifiez la ressource `amazoncloudwatchagents` sur le cluster pour ajouter la variable d’environnement `RUN_WITH_IRSA` comme indiqué ci-dessous.

```
kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
```

```
apiVersion: v1
items:
- apiVersion: cloudwatch.aws.amazon.com/v1alpha1
  kind: AmazonCloudWatchAgent
  metadata:
    ...
    name: cloudwatch-agent
    namespace: amazon-cloudwatch
    ...
  spec:
    ...
    env:
    - name: RUN_WITH_IRSA # <-- Add this
      value: "True" # <-- Add this
    - name: K8S_NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
          ...
```

## Collecteur géré Amazon Managed Prometheus pour nœuds hybrides
<a name="hybrid-nodes-add-ons-amp"></a>

Un collecteur géré par le service géré Amazon pour Prometheus (AMP) consiste en un scraper qui détecte et collecte des métriques à partir des ressources d’un cluster Amazon EKS. AMP gère le scraper pour vous, vous évitant ainsi d’avoir à gérer vous-même les instances, les agents ou les scrapers.

Vous pouvez utiliser les collecteurs gérés AMP sans aucune configuration supplémentaire spécifique aux nœuds hybrides. Cependant, les points de terminaison métriques de vos applications sur les nœuds hybrides doivent être accessibles depuis le VPC, y compris les itinéraires entre le VPC et le CIDRs réseau de pods distants et les ports ouverts dans votre pare-feu sur site. De plus, votre cluster doit disposer d’un [accès privé au point de terminaison du cluster](cluster-endpoint.md).

Suivez les étapes décrites dans la section [Utilisation d'un collecteur AWS géré](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html) dans le guide de l'utilisateur d'Amazon Managed Service for Prometheus.

## AWS Distribution pour OpenTelemetry (ADOT)
<a name="hybrid-nodes-add-ons-adot"></a>

Vous pouvez utiliser le module complémentaire AWS Distro for OpenTelemetry (ADOT) pour collecter des métriques, des journaux et des données de suivi à partir de vos applications exécutées sur des nœuds hybrides. ADOT utilise des [webhooks](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) d’admission pour modifier et valider les demandes de ressources personnalisées du collecteur. Si vous exécutez l’opérateur ADOT sur des nœuds hybrides, votre CIDR de pod sur site doit être routable sur votre réseau sur site et vous devez configurer votre cluster EKS avec votre réseau de pods distant. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

Suivez les étapes décrites dans [Getting Started with AWS Distro pour OpenTelemetry utiliser les modules complémentaires EKS](https://aws-otel.github.io/docs/getting-started/adot-eks-add-on) dans la * AWS distribution pour OpenTelemetry* obtenir de la documentation.

## AWS Contrôleur Load Balancer
<a name="hybrid-nodes-add-ons-lbc"></a>

Vous pouvez utiliser le [AWS Load Balancer Controller](aws-load-balancer-controller.md) et l'Application Load Balancer (ALB) ou le Network Load Balancer (NLB) avec le `ip` type de cible pour les charges de travail sur les nœuds hybrides. Les cibles IP utilisées avec l'ALB ou le NLB doivent être routables depuis. AWS[Le contrôleur AWS Load Balancer utilise également des webhooks.](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) Si vous exécutez l'opérateur AWS Load Balancer Controller sur des nœuds hybrides, le CIDR de votre pod local doit être routable sur votre réseau local et vous devez configurer votre cluster EKS avec votre réseau de pods distants. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

Pour installer le AWS Load Balancer Controller, suivez les étapes indiquées dans ou. [AWS Application Load Balancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-alb) [AWS Network Load Balancer](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-nlb)

Pour l’entrée avec ALB, vous devez spécifier les annotations ci-dessous. Pour plus d’informations, consultez [Routage du trafic des applications et du trafic HTTP avec des équilibreurs de charge Application Load Balancer](alb-ingress.md).

```
alb.ingress.kubernetes.io/target-type: ip
```

Pour l’équilibrage de charge avec NLB, vous devez spécifier les annotations ci-dessous. Pour plus d’informations, consultez [Acheminer le trafic TCP et UDP avec des Network Load Balancers](network-load-balancing.md).

```
service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
```

## Agent d'identité du pod EKS
<a name="hybrid-nodes-add-ons-pod-id"></a>

**Note**  
Pour déployer correctement le module complémentaire EKS Pod Identity Agent sur des nœuds hybrides exécutant Bottlerocket, assurez-vous que votre version de Bottlerocket est au moins v1.39.0. Pod Identity Agent n’est pas pris en charge sur les versions antérieures de Bottlerocket dans les environnements à nœuds hybrides.

L'agent d'identité Amazon EKS Pod d'origine DaemonSet s'appuie sur la disponibilité d'EC2 IMDS sur le nœud pour obtenir les informations d'identification requises AWS . Comme l'IMDS n'est pas disponible sur les nœuds hybrides, à partir de la version 1.3.3-eksbuild.1, le module complémentaire Pod Identity Agent déploie éventuellement un module qui monte les informations d'identification requises. DaemonSet Les nœuds hybrides exécutant Bottlerocket nécessitent une méthode différente pour monter les informations d'identification, et à partir de la version 1.3.7-eksbuild.2, le module complémentaire Pod Identity Agent déploie éventuellement une méthode qui cible spécifiquement les nœuds hybrides Bottlerocket. DaemonSet Les sections suivantes décrivent le processus d'activation de l'option DaemonSets.

### Ubuntu/RHEL/AL2023
<a name="_ubunturhelal2023"></a>

1. Pour utiliser l'agent Pod Identity sur Ubuntu/RHEL/Al 2023 nœuds hybrides, `enableCredentialsFile: true` configurez-le dans la section hybride de la `nodeadm` configuration comme indiqué ci-dessous :

   ```
   apiVersion: node.eks.aws/v1alpha1
   kind: NodeConfig
   spec:
       hybrid:
           enableCredentialsFile: true # <-- Add this
   ```

   Cela permettra à `nodeadm` de créer un fichier d’informations d’identification à configurer sur le nœud sous `/eks-hybrid/.aws/credentials`, qui sera utilisé par les pods `eks-pod-identity-agent`. Ce fichier d'informations d'identification contiendra des AWS informations d'identification temporaires qui seront actualisées périodiquement.

1. Après avoir mis à jour la configuration `nodeadm` sur *chaque* nœud, exécutez la commande `nodeadm init` suivante avec votre `nodeConfig.yaml` pour joindre vos nœuds hybrides à votre cluster Amazon EKS. Si vos nœuds ont déjà rejoint le cluster, exécutez à nouveau la commande `nodeadm init`.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

1. Installation `eks-pod-identity-agent` avec prise en charge des nœuds hybrides activée, à l'aide de la AWS CLI ou AWS Management Console.

   1.  AWS CLI : depuis la machine que vous utilisez pour administrer le cluster, exécutez la commande suivante pour effectuer l'installation en `eks-pod-identity-agent` activant la prise en charge des nœuds hybrides. Remplacez `my-cluster` par le nom de votre cluster.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid":{"create": true}}}'
      ```

   1.  AWS Management Console: Si vous installez le module complémentaire Pod Identity Agent via la AWS console, ajoutez ce qui suit à la configuration facultative pour déployer DaemonSet celui qui cible les nœuds hybrides.

      ```
      {"daemonsets":{"hybrid":{"create": true}}}
      ```

### Flacon Rocket
<a name="_bottlerocket"></a>

1. Pour utiliser l’agent Pod Identity sur les nœuds hybrides Bottlerocket, ajoutez l’indicateur `--enable-credentials-file=true` à la commande utilisée pour les données utilisateur du conteneur de démarrage Bottlerocket, comme décrit dans [Connectez des nœuds hybrides avec Bottlerocket](hybrid-nodes-bottlerocket.md).

   1. Si vous utilisez le fournisseur d’informations d’identification SSM, votre commande devrait ressembler à ceci :

      ```
      eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region> --enable-credentials-file=true
      ```

   1. Si vous utilisez le fournisseur d’informations d’identification Rôles Anywhere IAM, votre commande devrait ressembler à ceci :

      ```
      eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key> --enable-credentials-file=true
      ```

      Cela configurera le script bootstrap pour créer un fichier d’informations d’identification sur le nœud sous `/var/eks-hybrid/.aws/credentials`, qui sera utilisé par les pods `eks-pod-identity-agent`. Ce fichier d'informations d'identification contiendra des AWS informations d'identification temporaires qui seront actualisées périodiquement.

1. Installation `eks-pod-identity-agent` avec prise en charge des nœuds hybrides Bottlerocket activée, à l'aide de la CLI AWS ou. AWS Management Console

   1.  AWS CLI : depuis la machine que vous utilisez pour administrer le cluster, exécutez la commande suivante pour effectuer l'installation en activant la prise en charge `eks-pod-identity-agent` des nœuds hybrides Bottlerocket. Remplacez `my-cluster` par le nom de votre cluster.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid-bottlerocket":{"create": true}}}'
      ```

   1.  AWS Management Console: Si vous installez le module complémentaire Pod Identity Agent via la AWS console, ajoutez ce qui suit à la configuration facultative pour déployer le module DaemonSet qui cible les nœuds hybrides Bottlerocket.

      ```
      {"daemonsets":{"hybrid-bottlerocket":{"create": true}}}
      ```

## Contrôleur d'instantané CSI
<a name="hybrid-nodes-add-ons-csi-snapshotter"></a>

À partir de la version`v8.1.0-eksbuild.2`, le [module complémentaire CSI Snapshot Controller](csi-snapshot-controller.md) applique une règle d'anti-affinité souple pour les nœuds hybrides, préférant que le contrôleur `deployment` s'exécute sur EC2 dans la même région AWS que le plan de contrôle Amazon EKS. La colocation `deployment` dans la même AWS région que le plan de contrôle Amazon EKS améliore la latence.

## Modules complémentaires communautaires
<a name="hybrid-nodes-add-ons-community"></a>

Les sections suivantes décrivent les différences entre l’exécution d’extensions communautaires compatibles sur des nœuds hybrides et d’autres types de calcul Amazon EKS.

## Serveur de métriques Kubernetes
<a name="hybrid-nodes-add-ons-metrics-server"></a>

Le plan de contrôle doit atteindre l’adresse IP du pod du serveur de métriques (ou l’adresse IP du nœud si hostNetwork est activé). Par conséquent, à moins que vous n’exécutiez Metrics Server en mode hostNetwork, vous devez configurer un réseau de pods distant lors de la création de votre cluster Amazon EKS, et vous devez rendre vos adresses IP de pods routables. La mise en œuvre du protocole de passerelle frontière (BGP) avec le CNI est une méthode courante pour rendre les adresses IP de vos pods routables.

## cert-manager
<a name="hybrid-nodes-add-ons-cert-manager"></a>

 `cert-manager` utilise des [webhooks.](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) Si vous utilisez `cert-manager` sur des nœuds hybrides, votre CIDR de pod sur site doit être routable sur votre réseau sur site et vous devez configurer votre cluster EKS avec votre réseau de pods distant. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

# Configurer les webhooks pour les nœuds hybrides
<a name="hybrid-nodes-webhooks"></a>

Cette page détaille les considérations relatives à l’exécution de webhooks avec des nœuds hybrides. Les webhooks sont utilisés dans les applications Kubernetes et les projets open source, tels que l’AWS Load Balancer Controller et l’agent d’observabilité CloudWatch, pour exécuter des fonctions de mutation et de validation lors de l’exécution.

 **Réseaux de pods routables** 

Si vous pouvez rendre votre pod CIDR sur site routable sur votre réseau sur site, vous pouvez exécuter des webhooks sur des nœuds hybrides. Il existe plusieurs techniques que vous pouvez utiliser pour rendre votre pod CIDR sur site routable sur votre réseau sur site, notamment le protocole de passerelle frontière (BGP), les routes statiques ou d’autres solutions de routage personnalisées. BGP est la solution recommandée, car elle est plus évolutive et plus facile à gérer que les autres solutions qui nécessitent une configuration personnalisée ou manuelle des routes. AWS prend en charge les capacités BGP de Cilium et Calico pour la publicité des CIDR de pod. Pour plus d’informations, consultez [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md) et [CIDR de pods distants routables](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

 **Réseaux de pods non routables** 

Si vous *ne pouvez pas* rendre votre pod CIDR sur site routable sur votre réseau sur site et que vous devez exécuter des webhooks, nous vous recommandons d’exécuter tous les webhooks sur des nœuds cloud dans le même cluster EKS que vos nœuds hybrides.

## Considérations relatives aux clusters en mode mixte
<a name="hybrid-nodes-considerations-mixed-mode"></a>

 Les *clusters en mode mixte* sont définis comme des clusters EKS qui comportent à la fois des nœuds hybrides et des nœuds fonctionnant dans le cloud AWS. Lorsque vous exécutez un cluster en mode mixte, tenez compte des recommandations suivantes :
+ Exécutez le VPC CNI sur des nœuds dans le cloud AWS et Cilium ou Calico sur des nœuds hybrides. Cilium et Calico ne sont pas pris en charge par AWS lorsqu’ils sont exécutés sur des nœuds dans le Cloud AWS.
+ Configurez les webhooks pour qu’ils s’exécutent sur des nœuds dans le cloud AWS. Consultez [Configuration des webhooks pour les modules complémentaires](#hybrid-nodes-webhooks-add-ons) pour découvrir comment configurer les webhooks avec AWS et les modules complémentaires communautaires.
+ Si vos applications nécessitent que les pods exécutés sur des nœuds dans le cloud AWS communiquent directement avec les pods exécutés sur des nœuds hybrides (« communication est-ouest ») et que vous utilisez le VPC CNI sur les nœuds dans le cloud AWS, et Cilium ou Calico sur les nœuds hybrides, alors votre CIDR de pod sur site doit être routable sur votre réseau sur site.
+ Exécutez au moins un réplica de CoreDNS sur les nœuds dans le cloud AWS et au moins un réplica de CoreDNS sur les nœuds hybrides.
+ Configurez la distribution du trafic de service afin que celui-ci reste localisé dans la zone d’où il provient. Pour plus d’informations sur la distribution du trafic de service, voir [Configuration de la distribution du trafic de service](#hybrid-nodes-mixed-service-traffic-distribution).
+ Si vous utilisez des Application Load Balancers (ALB) ou des Network Load Balancers (NLB) AWS pour le trafic de charge de travail s’exécutant sur des nœuds hybrides, les cibles IP utilisées avec l’ALB ou le NLB doivent être routables à partir d’AWS.
+ Le module complémentaire Metrics Server nécessite une connectivité entre le plan de contrôle EKS et l’adresse IP du pod Metrics Server. Si vous exécutez le module complémentaire Metrics Server sur des nœuds hybrides, votre CIDR de pod sur site doit être routable sur votre réseau sur site.
+ Pour collecter des métriques pour les nœuds hybrides à l’aide des collecteurs gérés par le service géré Amazon pour Prometheus (AMP), votre CIDR de pod sur site doit être routable sur votre réseau sur site. Vous pouvez également utiliser le collecteur géré AMP pour les métriques et les ressources du plan de contrôle EKS s’exécutant dans le cloud AWS, ainsi que le module complémentaire AWS Distro for OpenTelemetry (ADOT) pour collecter les métriques des nœuds hybrides.

## Configuration de clusters en mode mixte
<a name="hybrid-nodes-mixed-mode"></a>

Pour afficher les webhooks de mutation et de validation exécutés sur votre cluster, vous pouvez consulter le type de ressource **Extensions** dans le panneau **Ressources** de la console EKS de votre cluster, ou utiliser les commandes suivantes. EKS rapporte également les métriques webhook dans le tableau de bord d’observabilité du cluster. Pour plus d’informations, consultez [Surveillez votre cluster à l’aide du tableau de bord d’observabilité](observability-dashboard.md).

```
kubectl get mutatingwebhookconfigurations
```

```
kubectl get validatingwebhookconfigurations
```

### Configuration de la distribution du trafic de service
<a name="hybrid-nodes-mixed-service-traffic-distribution"></a>

Lorsque vous utilisez des clusters en mode mixte, nous vous recommandons d’utiliser la [https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution) afin de maintenir le trafic de service local dans la zone d’où il provient. La distribution du trafic des services (disponible pour les versions 1.31 et ultérieures de Kubernetes dans EKS) est la solution recommandée par rapport au [routage topologique](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/), car elle est plus prévisible. Avec la distribution du trafic de service, les terminaux sains de la zone recevront tout le trafic destiné à cette zone. Avec le routage topologique, chaque service doit remplir plusieurs conditions dans cette zone pour appliquer le routage personnalisé, sinon il achemine le trafic de manière uniforme vers tous les points de terminaison.

Si vous utilisez Cilium comme CNI, vous devez exécuter le CNI avec le paramètre `enable-service-topology` défini sur `true` pour activer la distribution du trafic de service. Vous pouvez transmettre cette configuration avec l’indicateur d’installation Helm `--set loadBalancer.serviceTopology=true` ou mettre à jour une installation existante à l’aide de la commande CLI Cilium `cilium config set enable-service-topology true`. L’agent Cilium exécuté sur chaque nœud doit être redémarré après la mise à jour de la configuration d’une installation existante.

La section suivante présente un exemple de configuration de la distribution du trafic de service pour le service CoreDNS. Nous vous recommandons d’activer cette option pour tous les services de votre cluster afin d’éviter tout trafic inter-environnements indésirable.

### Configuration des réplicas de CoreDNS
<a name="hybrid-nodes-mixed-coredns"></a>

Si vous utilisez un cluster en mode mixte avec à la fois des nœuds hybrides et des nœuds dans le cloud AWS, nous vous recommandons d’avoir au moins un réplica CoreDNS sur les nœuds hybrides et au moins un réplica CoreDNS sur vos nœuds dans le cloud AWS. Pour éviter les problèmes de latence et de réseau dans une configuration de cluster en mode mixte, vous pouvez configurer le service CoreDNS pour qu’il privilégie le réplica CoreDNS le plus proche avec la [distribution du trafic de service](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution).

 La *distribution du trafic de service* (disponible pour les versions 1.31 et ultérieures de Kubernetes dans EKS) est la solution recommandée par rapport au [routage topologique](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/), car elle est plus prévisible. Dans la distribution du trafic en service, les points de terminaison sains de la zone recevront tout le trafic destiné à cette zone. Dans le routage sensible à la topologie, chaque service doit remplir plusieurs conditions dans cette zone pour appliquer le routage personnalisé, sinon il achemine le trafic de manière uniforme vers tous les points de terminaison. Les étapes suivantes permettent de configurer la distribution du trafic de service.

Si vous utilisez Cilium comme CNI, vous devez exécuter le CNI avec le paramètre `enable-service-topology` défini sur `true` pour activer la distribution du trafic de service. Vous pouvez transmettre cette configuration avec l’indicateur d’installation Helm `--set loadBalancer.serviceTopology=true` ou mettre à jour une installation existante à l’aide de la commande CLI Cilium `cilium config set enable-service-topology true`. L’agent Cilium exécuté sur chaque nœud doit être redémarré après la mise à jour de la configuration d’une installation existante.

1. Ajoutez une étiquette de zone topologique pour chacun de vos nœuds hybrides, par exemple `topology.kubernetes.io/zone: onprem`. Vous pouvez également définir l’étiquette au niveau de la phase `nodeadm init` en spécifiant l’étiquette dans votre configuration `nodeadm`, voir [Configuration du nœud pour personnaliser kubelet (facultatif)](hybrid-nodes-nodeadm.md#hybrid-nodes-nodeadm-kubelet). Remarque : Les nœuds exécutés dans le cloud AWS se voient automatiquement attribuer une étiquette de zone topologique correspondant à la zone de disponibilité (AZ) du nœud.

   ```
   kubectl label node hybrid-node-name topology.kubernetes.io/zone=zone
   ```

1. Ajoutez `podAntiAffinity` au déploiement CoreDNS avec la clé de zone de topologie. Vous pouvez également configurer le déploiement de CoreDNS lors de l’installation à l’aide des modules complémentaires EKS.

   ```
   kubectl edit deployment coredns -n kube-system
   ```

   ```
   spec:
     template:
       spec:
         affinity:
          ...
           podAntiAffinity:
             preferredDuringSchedulingIgnoredDuringExecution:
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: kubernetes.io/hostname
               weight: 100
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: topology.kubernetes.io/zone
               weight: 50
         ...
   ```

1. Ajoutez le paramètre `trafficDistribution: PreferClose` à la configuration du service `kube-dns` pour activer la distribution du trafic du service.

   ```
   kubectl patch svc kube-dns -n kube-system --type=merge -p '{
     "spec": {
       "trafficDistribution": "PreferClose"
     }
   }'
   ```

1. Vous pouvez confirmer que la distribution du trafic de service est activée en consultant les tranches de point de terminaison du service `kube-dns`. Vos tranches de point de terminaison doivent afficher les étiquettes `hints` de votre zone topologique, ce qui confirme que la distribution du trafic de service est activée. Si vous ne voyez pas l’adresse de chaque point de terminaison `hints`, cela signifie que la distribution du trafic de service n’est pas activée.

   ```
   kubectl get endpointslice -A | grep "kube-dns"
   ```

   ```
   kubectl get endpointslice [.replaceable]`kube-dns-<id>`  -n kube-system -o yaml
   ```

   ```
   addressType: IPv4
   apiVersion: discovery.k8s.io/v1
   endpoints:
   - addresses:
     - <your-hybrid-node-pod-ip>
     hints:
       forZones:
       - name: onprem
     nodeName: <your-hybrid-node-name>
     zone: onprem
   - addresses:
     - <your-cloud-node-pod-ip>
     hints:
       forZones:
       - name: us-west-2a
     nodeName: <your-cloud-node-name>
     zone: us-west-2a
   ```

### Configuration des webhooks pour les modules complémentaires
<a name="hybrid-nodes-webhooks-add-ons"></a>

Les modules complémentaires suivants utilisent des webhooks et sont compatibles avec les nœuds hybrides.
+  Contrôleur de l'équilibreur de charge AWS
+ Agent d’observabilité CloudWatch
+  AWS Distro for OpenTelemetry (ADOT)
+  `cert-manager` 

Consultez les sections suivantes pour configurer les webhooks utilisés par ces modules complémentaires afin qu’ils s’exécutent sur les nœuds dans Cloud AWS.

#### Contrôleur de l'équilibreur de charge AWS
<a name="hybrid-nodes-mixed-lbc"></a>

Pour utiliser l’AWS Load Balancer Controller dans une configuration de cluster en mode mixte, vous devez exécuter le contrôleur sur les nœuds dans le Cloud AWS. Pour ce faire, ajoutez les éléments suivants à votre configuration des valeurs Helm ou spécifiez les valeurs à l’aide de la configuration du module complémentaire EKS.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

#### Agent d’observabilité CloudWatch
<a name="hybrid-nodes-mixed-cwagent"></a>

Le module complémentaire Agent d’observabilité CloudWatch dispose d’un opérateur Kubernetes qui utilise des webhooks. Pour exécuter l’opérateur sur des nœuds du AWS cloud dans une configuration de cluster en mode mixte, modifiez la configuration de l’opérateur Agent d’observabilité CloudWatch. Vous ne pouvez pas configurer l’affinité des opérateurs lors de l’installation avec les modules complémentaires Helm et EKS (voir le [problème \$12431 de containers-roadmap](https://github.com/aws/containers-roadmap/issues/2431)).

```
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
```

```
spec:
  ...
  template:
    ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: eks.amazonaws.com/compute-type
                operator: NotIn
                values:
                - hybrid
```

#### AWS Distro for OpenTelemetry (ADOT)
<a name="hybrid-nodes-mixed-adot"></a>

Le module complémentaire AWS Distro pour OpenTelemetry (ADOT) dispose d’un opérateur Kubernetes qui utilise des webhooks. Pour exécuter l’opérateur sur les nœuds dans le cloud AWS dans une configuration de cluster en mode mixte, ajoutez les éléments suivants à votre configuration de valeurs Helm ou spécifiez les valeurs à l’aide de la configuration du module complémentaire EKS.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

Si votre CIDR de pod n’est pas routable sur votre réseau sur site, le collecteur ADOT doit alors s’exécuter sur des nœuds hybrides afin de récupérer les métriques de vos nœuds hybrides et des charges de travail qui s’y exécutent. Pour ce faire, modifiez la définition de ressource personnalisée (CRD).

```
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
```

```
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: In
            values:
            - hybrid
```

Vous pouvez configurer le collecteur ADOT pour qu’il ne récupère que les métriques des nœuds hybrides et des ressources s’exécutant sur des nœuds hybrides en ajoutant les éléments `relabel_configs` suivants à chaque `scrape_configs` dans la configuration CRD du collecteur ADOT.

```
relabel_configs:
  - action: keep
    regex: hybrid
    source_labels:
    - __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
```

Le module complémentaire ADOT doit installer `cert-manager` pour pouvoir utiliser les certificats TLS utilisés par le webhook de l’opérateur ADOT. `cert-manager` exécute également des webhooks et vous pouvez le configurer pour qu’il s’exécute sur des nœuds dans le cloud AWS à l’aide de la configuration Helm suivante.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

#### `cert-manager`
<a name="hybrid-nodes-mixed-cert-manager"></a>

Le module complémentaire exécute des webhooks `cert-manager` et vous pouvez le configurer pour qu’il s’exécute sur des nœuds dans le cloud AWS à l’aide de la configuration Helm suivante.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

# Configurer le proxy pour les nœuds hybrides
<a name="hybrid-nodes-proxy"></a>

Si vous utilisez un serveur proxy dans votre environnement sur site pour le trafic sortant de votre centre de données ou de votre environnement périphérique, vous devez configurer séparément vos nœuds et votre cluster pour utiliser votre serveur proxy.

Cluster  
Sur votre cluster, vous devez configurer `kube-proxy` pour utiliser votre serveur proxy. Vous devez effectuer la configuration de `kube-proxy` après avoir créé votre cluster Amazon EKS.

Nœuds  
Sur vos nœuds, vous devez configurer le système d’exploitation, `containerd`, `kubelet`, et l’agent Amazon SSM pour utiliser votre serveur proxy. Vous pouvez effectuer ces modifications pendant le processus de création des images de votre système d’exploitation ou avant d’exécuter `nodeadm init` sur chaque nœud hybride.

## Configuration au niveau du nœud
<a name="_node_level_configuration"></a>

Vous devez appliquer les configurations suivantes soit dans vos images de système d’exploitation, soit avant l’exécution de `nodeadm init` sur chaque nœud hybride.

### Configuration du proxy `containerd`
<a name="_containerd_proxy_configuration"></a>

 `containerd` est l’environnement d’exécution de gestion de conteneurs par défaut pour Kubernetes. Si vous utilisez un proxy pour accéder à Internet, vous devez configurer `containerd` afin qu’il puisse extraire les images de conteneur requises par Kubernetes et Amazon EKS.

Créez un fichier sur chaque nœud hybride appelé `http-proxy.conf` dans le répertoire `/etc/systemd/system/containerd.service.d` avec le contenu suivant. Remplacez `proxy-domain` et `port` par les valeurs correspondant à votre environnement.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `containerd` configuration à partir des données utilisateur
<a name="_containerd_configuration_from_user_data"></a>

Le répertoire `containerd.service.d` devra être créé pour ce fichier. Vous devrez recharger systemd pour récupérer le fichier de configuration sans redémarrer. Dans AL2023, le service sera probablement déjà en cours d’exécution lorsque votre script s’exécutera, vous devrez donc également le redémarrer.

```
mkdir -p /etc/systemd/system/containerd.service.d
echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart containerd
```

### Configuration du proxy `kubelet`
<a name="_kubelet_proxy_configuration"></a>

 `kubelet` est l’agent de nœud Kubernetes qui s’exécute sur chaque nœud Kubernetes et qui est chargé de gérer le nœud et les pods qui s’y exécutent. Si vous utilisez un proxy dans votre environnement sur site, vous devez configurer le `kubelet` afin qu’il puisse communiquer avec les points de terminaison publics ou privés de votre cluster Amazon EKS.

Créez un fichier sur chaque nœud hybride appelé `http-proxy.conf` dans le répertoire `/etc/systemd/system/kubelet.service.d/` avec le contenu suivant. Remplacez `proxy-domain` et `port` par les valeurs correspondant à votre environnement.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### Configuration `kubelet` à partir des données utilisateur
<a name="_kubelet_configuration_from_user_data"></a>

Le répertoire `kubelet.service.d` doit être créé pour ce fichier. Vous devrez recharger systemd pour récupérer le fichier de configuration sans redémarrer. Dans AL2023, le service sera probablement déjà en cours d’exécution lorsque votre script s’exécutera, vous devrez donc également le redémarrer.

```
mkdir -p /etc/systemd/system/kubelet.service.d
echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart kubelet
```

### Configuration du proxy `ssm`
<a name="_ssm_proxy_configuration"></a>

 `ssm` est l’un des fournisseurs d’informations d’identification pouvant être utilisés pour initialiser un nœud hybride. `ssm` est chargé de l’authentification avec AWS et de la génération d’informations d’identification temporaires utilisées par `kubelet`. Si vous utilisez un proxy dans votre environnement sur site et que vous utilisez `ssm` comme fournisseur d’informations d’identification sur le nœud, vous devez le configurer le `ssm` afin qu’il puisse communiquer avec les points de terminaison du service Amazon SSM.

Créez un fichier sur chaque nœud hybride appelé `http-proxy.conf` dans le chemin ci-dessous en fonction du système d’exploitation
+ Ubuntu – `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf` 
+ Amazon Linux 2023 et Red Hat Enterprise Linux – `/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf` 

Remplissez le fichier avec le contenu suivant. Remplacez `proxy-domain` et `port` par les valeurs correspondant à votre environnement.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### Configuration à partir des données utilisateur `ssm`
<a name="_ssm_configuration_from_user_data"></a>

Le répertoire des fichiers de service systemd `ssm` doit être créé pour ce fichier. Le chemin d’accès au répertoire dépend du système d’exploitation utilisé sur le nœud.
+ Ubuntu – `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d` 
+ Amazon Linux 2023 et Red Hat Enterprise Linux – `/etc/systemd/system/amazon-ssm-agent.service.d` 

Remplacer le nom du service systemd dans la commande de redémarrage ci-dessous en fonction du système d’exploitation utilisé sur le nœud
+ Ubuntu – `snap.amazon-ssm-agent.amazon-ssm-agent` 
+ Amazon Linux 2023 et Red Hat Enterprise Linux – `amazon-ssm-agent` 

```
mkdir -p systemd-service-file-directory
echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
systemctl daemon-reload
systemctl restart [.replaceable]#systemd-service-name
```

### Configuration du proxy du système d’exploitation
<a name="_operating_system_proxy_configuration"></a>

Si vous utilisez un proxy pour accéder à Internet, vous devez configurer votre système d’exploitation afin de pouvoir extraire les dépendances des nœuds hybrides à partir du gestionnaire de paquets de votre système d’exploitation.

 **Ubuntu** 

1. Configurez `snap` pour utiliser votre proxy à l’aide des commandes suivantes :

   ```
   sudo snap set system proxy.https=http://proxy-domain:port
   sudo snap set system proxy.http=http://proxy-domain:port
   ```

1. Pour activer le proxy pour `apt`, créez un fichier nommé `apt.conf` dans le répertoire `/etc/apt/`. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

   ```
   Acquire::http::Proxy "http://proxy-domain:port";
   Acquire::https::Proxy "http://proxy-domain:port";
   ```

 **Amazon Linux 2023** 

1. Configurez `dnf` pour utiliser votre proxy. Créez un fichier `/etc/dnf/dnf.conf` contenant le domaine proxy et les valeurs de port de votre environnement.

   ```
   proxy=http://proxy-domain:port
   ```

 **Utilisation de Red Hat Enterprise Linux** 

1. Configurez `yum` pour utiliser votre proxy. Créez un fichier `/etc/yum.conf` contenant le domaine proxy et les valeurs de port de votre environnement.

   ```
   proxy=http://proxy-domain:port
   ```

### Configuration du proxy de Rôles Anywhere IAM
<a name="_iam_roles_anywhere_proxy_configuration"></a>

Le service de fournisseur d’informations d’identification Rôles Anywhere IAM est chargé d’actualiser les informations d’identification lors de l’utilisation de Rôles Anywhere IAM avec l’indicateur `enableCredentialsFile` (voir [Agent d'identité du pod EKS](hybrid-nodes-add-ons.md#hybrid-nodes-add-ons-pod-id)). Si vous utilisez un proxy dans votre environnement sur site, vous devez configurer le service afin qu’il puisse communiquer avec les points de terminaison Rôles Anywhere IAM.

Créez un fichier nommé `http-proxy.conf` dans le répertoire `/etc/systemd/system/aws_signing_helper_update.service.d/` avec le contenu suivant. Remplacez `proxy-domain` et `port` par les valeurs correspondant à votre environnement.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

## Configuration à l’échelle du cluster
<a name="_cluster_wide_configuration"></a>

Les configurations de cette section doivent être appliquées après avoir créé votre cluster Amazon EKS et avant d’exécuter `nodeadm init` sur chaque nœud hybride.

### Configuration du proxy kube-proxy
<a name="_kube_proxy_proxy_configuration"></a>

Amazon EKS installe automatiquement `kube-proxy` sur chaque nœud hybride en tant que DaemonSet lorsque vos nœuds hybrides rejoignent le cluster. `kube-proxy` permet le routage entre les services pris en charge par les pods sur les clusters Amazon EKS. Pour configurer chaque hôte, `kube-proxy` demande une résolution DNS pour le point de terminaison de votre cluster Amazon EKS.

1. Modifiez le DaemonSet `kube-proxy` à l’aide de la commande suivante

   ```
   kubectl -n kube-system edit ds kube-proxy
   ```

   Cela ouvrira la définition du DaemonSet `kube-proxy` dans l’éditeur que vous avez configuré.

1. Ajoutez les variables d’environnement pour `HTTP_PROXY` et `HTTPS_PROXY`. Notez que la variable d’environnement `NODE_NAME` doit déjà exister dans votre configuration. Remplacez `proxy-domain` et `port` par les valeurs correspondant à votre environnement.

   ```
   containers:
     - command:
       - kube-proxy
       - --v=2
       - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME)
       env:
       - name: HTTP_PROXY
         value: http://proxy-domain:port
       - name: HTTPS_PROXY
         value: http://proxy-domain:port
       - name: NODE_NAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
   ```

# Configurer Cilium BGP pour les nœuds hybrides
<a name="hybrid-nodes-cilium-bgp"></a>

Cette rubrique décrit comment configurer le protocole de passerelle frontière (BGP) de Cilium pour les nœuds hybrides Amazon EKS. La fonctionnalité BGP de Cilium s’appelle le [plan de contrôle Cilium BGP](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane/) et peut être utilisée pour diffuser les adresses des pods et des services vers votre réseau sur site. Pour connaître les autres méthodes permettant de rendre les CIDR pod routables sur votre réseau local, consultez [CIDR de pods distants routables](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

## Configurer Cilium BGP
<a name="hybrid-nodes-cilium-bgp-configure"></a>

### Prérequis
<a name="_prerequisites"></a>
+ Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

### Procédure
<a name="_procedure"></a>

1. Pour utiliser BGP avec Cilium afin de publier les adresses des pods ou des services sur votre réseau local, Cilium doit être installé avec `bgpControlPlane.enabled: true`. Si vous activez BGP pour un déploiement Cilium existant, vous devez redémarrer l’opérateur Cilium pour appliquer la configuration BGP si BGP n’était pas activé auparavant. Vous pouvez définir `operator.rollOutPods` sur `true` dans vos valeurs Helm pour redémarrer l’opérateur Cilium dans le cadre du processus d’installation/mise à niveau Helm.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --set bgpControlPlane.enabled=true
   ```

1. Vérifiez que l’opérateur Cilium et les agents ont été redémarrés et fonctionnent correctement.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

1. Créez un fichier nommé `cilium-bgp-cluster.yaml` avec une définition `CiliumBGPClusterConfig`. Vous devrez peut-être obtenir les informations suivantes auprès de votre administrateur réseau.
   + Configurez `localASN` avec l’ASN pour les nœuds exécutant Cilium.
   + Configurez `peerASN` avec l’ASN pour votre routeur local.
   + Configurez le `peerAddress` du routeur local avec lequel chaque nœud exécutant Cilium sera appairé.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPClusterConfig
     metadata:
       name: cilium-bgp
     spec:
       nodeSelector:
         matchExpressions:
         - key: eks.amazonaws.com/compute-type
           operator: In
           values:
           - hybrid
       bgpInstances:
       - name: "rack0"
         localASN: NODES_ASN
         peers:
         - name: "onprem-router"
           peerASN: ONPREM_ROUTER_ASN
           peerAddress: ONPREM_ROUTER_IP
           peerConfigRef:
             name: "cilium-peer"
     ```

1. Appliquer la configuration du cluster Cilium BGP à votre cluster.

   ```
   kubectl apply -f cilium-bgp-cluster.yaml
   ```

1. Créez un fichier nommé `cilium-bgp-peer.yaml` d’après la ressource `CiliumBGPPeerConfig` qui définit une configuration de pair BGP. Plusieurs pairs peuvent partager la même configuration et fournir une référence à la ressource `CiliumBGPPeerConfig` commune. Consultez la [configuration BGP Peer](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-v2/#bgp-peer-configuration) dans la documentation Cilium pour obtenir la liste complète des options de configuration.

   Les valeurs des paramètres Cilium peer suivants doivent correspondre à celles du routeur local avec lequel vous établissez une connexion peer-to-peer.
   + Configurez `holdTimeSeconds`, qui détermine la durée pendant laquelle un pair BGP attend un message de maintien ou de mise à jour avant de déclarer la session comme interrompue. La durée par défaut est de 90 secondes.
   + Configurez `keepAliveTimeSeconds`, ce qui détermine si un pair BGP est toujours accessible et si la session BGP est active. Le durée par défaut est 30 secondes.
   + Configurez `restartTimeSeconds`, le délai pendant lequel le plan de contrôle BGP de Cilium doit rétablir la session BGP après un redémarrage. La durée par défaut est de 120 secondes.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPPeerConfig
     metadata:
       name: cilium-peer
     spec:
       timers:
         holdTimeSeconds: 90
         keepAliveTimeSeconds: 30
       gracefulRestart:
         enabled: true
         restartTimeSeconds: 120
       families:
         - afi: ipv4
           safi: unicast
           advertisements:
             matchLabels:
               advertise: "bgp"
     ```

1. Appliquez la configuration de pair Cilium BGP à votre cluster.

   ```
   kubectl apply -f cilium-bgp-peer.yaml
   ```

1. Créez un fichier nommé `cilium-bgp-advertisement-pods.yaml` avec une ressource `CiliumBGPAdvertisement` pour annoncer les CIDR du pod à votre réseau sur site.
   + Cette ressource `CiliumBGPAdvertisement` sert à définir les types de publicités et les attributs qui leur sont associés. L’exemple ci-dessous configure Cilium pour qu’il n’annonce que les CIDR des pods. Consultez les exemples dans [Type de service LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) et [Équilibrage de charge dans le cluster Cilium](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-cilium) pour plus d’informations sur la configuration de Cilium afin d’annoncer les adresses de service.
   + Chaque nœud hybride exécutant l’agent Cilium est apparié avec le routeur en amont compatible BGP. Chaque nœud annonce la plage CIDR du pod dont il est propriétaire lorsque le `advertisementType` de Cilium est configuré sur `PodCIDR` comme dans l’exemple ci-dessous. Pour plus d’informations, consultez la [configuration des annonces BGP](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane-v2/#bgp-advertisements) dans la documentation Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-pods
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "PodCIDR"
     ```

1. Appliquez la configuration Cilium BGP Advertisement à votre cluster.

   ```
   kubectl apply -f cilium-bgp-advertisement-pods.yaml
   ```

1. Vous pouvez vérifier que le peering BGP fonctionne avec l’interface [CLI Cilium](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) à l’aide de la commande `cilium bgp peers`. Vous devriez voir les valeurs correctes dans la sortie pour votre environnement et l’état de session cen tant que `established`. Pour plus d’informations sur le dépannage, consultez le [guide de dépannage et d’utilisation](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/#troubleshooting-and-operation-guide) dans la documentation Cilium.

   Dans les exemples ci-dessous, cinq nœuds hybrides exécutent l’agent Cilium et chaque nœud annonce la plage CIDR Pod qu’il possède.

   ```
   cilium bgp peers
   ```

   ```
   Node                   Local AS    Peer AS               Peer Address        Session State   Uptime     Family         Received   Advertised
   mi-026d6a261e355fba7   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   mi-082f73826a163626e   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-09183e8a3d755abf6   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m47s   ipv4/unicast   1          2
   mi-0d78d815980ed202d   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-0daa253999fe92daa   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   ```

   ```
   cilium bgp routes
   ```

   ```
   Node                   VRouter       Prefix           NextHop   Age         Attrs
   mi-026d6a261e355fba7   NODES_ASN     10.86.2.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN     10.86.2.192/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN     10.86.2.64/26    0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN     10.86.2.128/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN     10.86.3.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

# Configurer Kubernetes Ingress pour les nœuds hybrides
<a name="hybrid-nodes-ingress"></a>

Cette rubrique décrit comment configurer Kubernetes Ingress pour les charges de travail exécutées sur des nœuds hybrides Amazon EKS. [Kubernetes Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) expose les routes HTTP et HTTPS depuis l’extérieur du cluster vers les services au sein du cluster. Pour utiliser les ressources Ingress, un contrôleur Kubernetes Ingress est nécessaire pour configurer l’infrastructure réseau et les composants qui gèrent le trafic réseau.

 AWS prend en charge AWS Application Load Balancer (ALB) et Cilium pour Kubernetes Ingress pour les charges de travail exécutées sur des nœuds hybrides EKS. La décision d’utiliser ALB ou Cilium pour Ingress dépend de la source du trafic applicatif. Si le trafic applicatif provient d’une région AWS, AWS recommande d’utiliser AWS ALB et l’AWS Load Balancer Controller. Si le trafic applicatif provient de l’environnement local sur site ou périphérique, AWS recommande d’utiliser les fonctionnalités Ingress intégrées à Cilium, qui peuvent être utilisées avec ou sans infrastructure d’équilibrage de charge dans votre environnement.

![\[Nœuds hybrides EKS Ingress\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-ingress.png)


## AWS Application Load Balancer
<a name="hybrid-nodes-ingress-alb"></a>

Vous pouvez utiliser l’[AWS Load Balancer Controller](aws-load-balancer-controller.md) et l’Application Load Balancer (ALB) avec le type de cible `ip` pour les charges de travail s’exécutant sur des nœuds hybrides. Lorsque vous utilisez le type de cible `ip`, ALB transfère le trafic directement vers les pods, en contournant le chemin réseau de la couche Service. Pour qu’ALB atteigne les cibles IP des pods sur les nœuds hybrides, votre CIDR de pod sur site doit être routable sur votre réseau sur site. De plus, l’AWS Load Balancer Controller utilise des webhooks et nécessite une communication directe depuis le plan de contrôle EKS. Pour de plus amples informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

### Considérations
<a name="_considerations"></a>
+ Voir [Routage du trafic des applications et du trafic HTTP avec des équilibreurs de charge Application Load Balancer](alb-ingress.md) et [Installez le contrôleur AWS Load Balancer avec Helm](lbc-helm.md) pour plus d’informations sur AWS Application Load Balancer et AWS Load Balancer Controller.
+ Consultez la section [Meilleures pratiques pour l’équilibrage de charge](https://docs.aws.amazon.com/eks/latest/best-practices/load-balacing.html) pour savoir comment choisir entre AWSApplication Load Balancer et AWS Network Load Balancer.
+ Consultez les annotations sur l’[AWS Load Balancer Controller Ingress](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) pour obtenir la liste des annotations pouvant être configurées pour les ressources d’entrée avec AWS Application Load Balancer.

### Prérequis
<a name="_prerequisites"></a>
+ Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).
+ Le plan de contrôle Cilium BGP a été activé en suivant les instructions fournies dans [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md). Si vous ne souhaitez pas utiliser BGP, vous devez utiliser une autre méthode pour rendre vos CIDR de pods sur site routables sur votre réseau sur site. Si vous ne rendez pas vos CIDR de pods sur site routables, ALB ne pourra pas enregistrer ni contacter vos cibles IP de pods.
+ Helm installé dans votre environnement de ligne de commande, consultez les instructions de configuration de Helm pour plus d’informations.[Déployez des applications avec Helm sur Amazon EKS](helm.md)
+ eksctl installé dans votre environnement de ligne de commande, consultez les [instructions d’installation d’eksctl](install-kubectl.md#eksctl-install-update) pour plus d’informations.

### Procédure
<a name="_procedure"></a>

1. Téléchargez une politique IAM pour le contrôleur de l'équilibreur de charge AWS qui lui permet d'effectuer des appels aux API AWS en votre nom.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Créez une politique IAM à l'aide de la politique téléchargée à l'étape précédente.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Remplacez la valeur du nom du cluster (`CLUSTER_NAME`), de AWS la région (`AWS_REGION`) et de l’ID de AWS compte (`AWS_ACCOUNT_ID`) par vos paramètres et exécutez la commande suivante.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Ajoutez le référentiel des Charts de Helm eks-charts et mettez à jour votre référentiel Helm local pour vous assurer que vous disposez des graphiques les plus récents.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

   ```
   helm repo update eks
   ```

1. Installez le contrôleur de l'équilibreur de charge AWS. Remplacez les valeurs correspondant au nom du cluster (`CLUSTER_NAME`), à la région AWS (`AWS_REGION`), à l’ID VPC `VPC_ID`() et à la version des Charts de Helm de l’AWS Load Balancer Controller (`AWS_LBC_HELM_VERSION`) par vos paramètres, puis exécutez la commande suivante. Si vous utilisez un cluster en mode mixte avec des nœuds hybrides et des nœuds dans le cloud AWS, vous pouvez exécuter l’AWS Load Balancer Controller sur les nœuds cloud en suivant les instructions disponibles à l’adresse [Contrôleur de l'équilibreur de charge AWS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc).
   + Vous pouvez trouver la dernière version des Charts de Helm en exécutant `helm search repo eks/aws-load-balancer-controller --versions`.

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --version AWS_LBC_HELM_VERSION \
       --set clusterName=CLUSTER_NAME \
       --set region=AWS_REGION \
       --set vpcId=VPC_ID \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller
     ```

1. Vérifiez que l’AWS Load Balancer Controller a été installé correctement.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Créer un exemple d’application. L’exemple ci-dessous utilise l’application microservices [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Créez un fichier nommé `my-ingress-alb.yaml` avec les contenus suivants.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       alb.ingress.kubernetes.io/load-balancer-name: "my-ingress-alb"
       alb.ingress.kubernetes.io/target-type: "ip"
       alb.ingress.kubernetes.io/scheme: "internet-facing"
       alb.ingress.kubernetes.io/healthcheck-path: "/details/1"
   spec:
     ingressClassName: alb
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Appliquez la configuration Ingress à votre cluster.

   ```
   kubectl apply -f my-ingress-alb.yaml
   ```

1. La configuration de l’ALB pour votre ressource Ingress peut prendre quelques minutes. Une fois l’ALB provisionné, votre ressource Ingress se verra attribuer une adresse correspondant au nom DNS du déploiement ALB. L’adresse aura le format `<alb-name>-<random-string>.<region>.elb.amazonaws.com`.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS   HOSTS   ADDRESS                                                     PORTS   AGE
   my-ingress   alb     *       my-ingress-alb-<random-string>.<region>.elb.amazonaws.com   80      23m
   ```

1. Accédez au service à l’aide de l’adresse de l’ALB.

   ```
   curl -s http//my-ingress-alb-<random-string>.<region>.elb.amazonaws.com:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
     "details": "This is the details page"
   }
   ```

## Présentation de Cilium Ingress et Cilium Gateway
<a name="hybrid-nodes-ingress-cilium"></a>

Les fonctionnalités Ingress de Cilium sont intégrées à l’architecture de Cilium et peuvent être gérées à l’aide de l’API Ingress ou de l’API Gateway de Kubernetes. Si vous ne disposez pas encore de ressources Ingress, AWS recommandoe de commencer par l’API Gateway, car elle offre un moyen plus expressif et plus flexible de définir et de gérer les ressources réseau Kubernetes. [L’API Kubernetes Gateway](https://gateway-api.sigs.k8s.io/) vise à normaliser la manière dont les ressources réseau pour Ingress, l’équilibreur de charge et le maillage de services sont définies et gérées dans les clusters Kubernetes.

Lorsque vous activez les fonctionnalités Ingress ou Gateway de Cilium, l’opérateur Cilium synchronise les objets Ingress / Gateway dans le cluster et les proxys Envoy sur chaque nœud traitent le trafic réseau de couche 7 (L7). Cilium ne fournit pas directement d’infrastructure Ingress / Gateway telle que des équilibreurs de charge. Si vous prévoyez d’utiliser Cilium Ingress / Gateway avec un équilibreur de charge, vous devez utiliser les outils de l’équilibreur de charge, généralement un contrôleur Ingress ou Gateway, pour déployer et gérer l’infrastructure de l’équilibreur de charge.

Pour le trafic Ingress/Gateway, Cilium gère le trafic réseau central et l’application des politiques L3/L4, tandis que les proxys Envoy intégrés traitent le trafic réseau L7. Avec Cilium Ingress / Gateway, Envoy est chargé d’appliquer les règles de routage L7, les politiques et la manipulation des requêtes, la gestion avancée du trafic telle que la répartition et la mise en miroir du trafic, ainsi que la terminaison et l’origine TLS. Les proxys Envoy de Cilium sont déployés par défaut sous forme de DaemonSet (`cilium-envoy`) distinct, ce qui permet de mettre à jour, de dimensionner et de gérer séparément Envoy et l’agent Cilium.

Pour plus d’informations sur le fonctionnement de [Cilium Ingress](https://docs.cilium.io/en/stable/network/servicemesh/ingress/) et [Cilium Gateway](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/), consultez les pages Cilium Ingress et Cilium Gateway dans la documentation Cilium.

## Comparaison entre Cilium Ingress et Gateway
<a name="hybrid-nodes-ingress-cilium-comparison"></a>

Le tableau ci-dessous résume les fonctionnalités de Cilium Ingress et Cilium Gateway dans la **version 1.17.x de Cilium**.


| Fonctionnalité | Ingress | Passerelle | 
| --- | --- | --- | 
|  Type de service LoadBalancer  |  Oui  |  Oui  | 
|  Type de service NodePort  |  Oui  |  N°1   | 
|  Réseau hôte  |  Oui  |  Oui  | 
|  Équilibreur de charge partagé  |  Oui  |  Oui  | 
|  Équilibreur de charge dédié  |  Oui  |  No2   | 
|  Stratégies réseau  |  Oui  |  Oui  | 
|  Protocoles  |  Couche 7 (HTTP (S), gRPC)  |  Couche 7 (HTTP(S), gRPC)3   | 
|  TLS Passthrough  |  Oui  |  Oui  | 
|  Gestion du trafic  |  Routage du chemin et d’hôte  |  Routage de chemin et d’hôte, redirection et réécriture d’URL, répartition du trafic, modification d’en-tête  | 

 1 La prise en charge de Cilium Gateway pour les services NodePort est prévue pour la [version 1.18.x de Cilium (\$127273)](https://github.com/cilium/cilium/pull/27273)

 2 Prise en charge de Cilium Gateway pour les équilibreurs de charge dédiés ([\$125567](https://github.com/cilium/cilium/issues/25567))

 3 Prise en charge de Cilium Gateway pour TCP/UDP ([\$121929](https://github.com/cilium/cilium/issues/21929))

## Installer Cilium Gateway
<a name="hybrid-nodes-ingress-cilium-gateway-install"></a>

### Considérations
<a name="_considerations_2"></a>
+ Cilium doit être configuré avec `nodePort.enabled` réglé sur `true`, comme indiqué dans les exemples ci-dessous. Si vous utilisez la fonctionnalité de remplacement kube-proxy de Cilium, vous n’avez pas besoin de définir `nodePort.enabled` sur `true`.
+ Cilium doit être configuré avec `envoy.enabled` réglé sur `true`, comme indiqué dans les exemples ci-dessous.
+ Cilium Gateway peut être déployé en mode équilibreur de charge (par défaut) ou en mode réseau hôte.
+ Lorsque vous utilisez Cilium Gateway en mode équilibreur de charge, l’annotation `service.beta.kubernetes.io/aws-load-balancer-type: "external"` doit être définie sur la ressource Gateway afin d’empêcher le fournisseur de cloud hérité AWS de créer un Classic Load Balancer pour le service de type LoadBalancer que Cilium crée pour la ressource Gateway.
+ Lorsque vous utilisez Cilium Gateway en mode réseau hôte, le service de type LoadBalancer est désactivé. Le mode réseau hôte est utile pour les environnements qui ne disposent pas d’une infrastructure d’équilibrage de charge. Pour plus d’informations, consultez [Réseau hôte](#hybrid-nodes-ingress-cilium-host-network).

### Prérequis
<a name="_prerequisites_2"></a>

1. Helm installé dans votre environnement de ligne de commande, consultez les [Instructions de configuration de Helm](helm.md).

1. Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

### Procédure
<a name="_procedure_2"></a>

1. Installez les définitions de ressources personnalisées (CRD) de l’API Kubernetes Gateway.

   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gateways.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml
   ```

1. Créez un fichier nommé `cilium-gateway-values.yaml` avec le contenu suivant. L’exemple ci-dessous configure Cilium Gateway pour utiliser le mode d’équilibrage de charge par défaut et utiliser un DaemonSet `cilium-envoy` distinct pour les proxys Envoy configurés pour s’exécuter uniquement sur des nœuds hybrides.

   ```
   gatewayAPI:
     enabled: true
     # uncomment to use host network mode
     # hostNetwork:
     #   enabled: true
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Appliquez le fichier de valeurs Helm à votre cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-gateway-values.yaml
   ```

1. Vérifiez que l’opérateur Cilium, l’agent et les pods Envoy fonctionnent correctement.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Configurer la passerelle Cilium
<a name="hybrid-nodes-ingress-cilium-gateway-configure"></a>

Cilium Gateway est activé sur les objets Gateway en définissant le paramètre `gatewayClassName` sur `cilium`. Le service créé par Cilium pour les ressources Gateway peut être configuré à l’aide des champs de l’objet Gateway. Les annotations couramment utilisées par les contrôleurs Gateway pour configurer l’infrastructure d’équilibrage de charge peuvent être configurées à l’aide du champ `infrastructure` de l’objet Gateway. Lorsque vous utilisez l’IPAM LoadBalancer de Cilium (voir exemple dans [Type de service LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer)), l’adresse IP à utiliser pour le service de type LoadBalancer peut être configurée dans le champ `addresses` de l’objet Gateway. Pour plus d’informations sur la configuration de la passerelle, consultez la [spécification de l’API Kubernetes Gateway](https://gateway-api.sigs.k8s.io/reference/spec/#gateway).

```
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: cilium
  infrastructure:
    annotations:
      service.beta.kubernetes.io/...
      service.kuberentes.io/...
  addresses:
  - type: IPAddress
    value: <LoadBalancer IP address>
  listeners:
  ...
```

Cilium et la spécification Kubernetes Gateway prennent en charge les ressources GatewayClass, Gateway, HTTPRoute, GRPCRoute et ReferenceGrant.
+ Consultez les spécifications [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/HTTPRoute) et [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/GRPCRoute) pour obtenir la liste des champs disponibles.
+ Consultez les exemples dans la section [Déployer Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-deploy) ci-dessous et ceux dans la [documentation Cilium](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#examples) pour savoir comment utiliser et configurer ces ressources.

## Déployer Cilium Gateway
<a name="hybrid-nodes-ingress-cilium-gateway-deploy"></a>

1. Créer un exemple d’application. L’exemple ci-dessous utilise l’application microservices [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Vérifiez que l’application fonctionne correctement.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Créez un fichier nommé `my-gateway.yaml` avec les contenus suivants. L’exemple ci-dessous utilise l’annotation `service.beta.kubernetes.io/aws-load-balancer-type: "external"` pour empêcher l’ancien fournisseur de cloud AWS de créer un Classic Load Balancer pour le service de type LoadBalancer que Cilium crée pour la ressource Gateway.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     infrastructure:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
     listeners:
     - protocol: HTTP
       port: 80
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

1. Appliquez la ressource Gateway à votre cluster.

   ```
   kubectl apply -f my-gateway.yaml
   ```

1. Confirmez que la ressource Gateway et le service correspondant ont été créés. À ce stade, il est prévu que le champ `ADDRESS` de la ressource Gateway ne soit pas renseigné avec une adresse IP ou un nom d’hôte, et que le service de type LoadBalancer pour la ressource Gateway ne dispose pas non plus d’adresse IP ou de nom d’hôte attribué.

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS   PROGRAMMED   AGE
   my-gateway   cilium             True         10s
   ```

   ```
   kubectl get svc cilium-gateway-my-gateway
   ```

   ```
   NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
   cilium-gateway-my-gateway   LoadBalancer   172.16.227.247   <pending>     80:30912/TCP   24s
   ```

1. Procédez à [Type de service LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) pour configurer la ressource Gateway afin d’utiliser une adresse IP attribuée par Cilium Load Balancer IPAM, et [Type de service NodePort](#hybrid-nodes-ingress-cilium-nodeport) ou [Réseau hôte](#hybrid-nodes-ingress-cilium-host-network) pour configurer la ressource Gateway afin d’utiliser les adresses NodePort ou réseau hôte.

## Installer Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-install"></a>

### Considérations
<a name="_considerations_3"></a>
+ Cilium doit être configuré avec `nodePort.enabled` réglé sur `true`, comme indiqué dans les exemples ci-dessous. Si vous utilisez la fonctionnalité de remplacement kube-proxy de Cilium, vous n’avez pas besoin de définir `nodePort.enabled` sur `true`.
+ Cilium doit être configuré avec `envoy.enabled` réglé sur `true`, comme indiqué dans les exemples ci-dessous.
+ Lorsque `ingressController.loadbalancerMode` est défini sur `dedicated`, Cilium crée des services dédiés pour chaque ressource Ingress. Lorsque `ingressController.loadbalancerMode` est défini sur `shared`, Cilium crée un service partagé de type LoadBalancer pour toutes les ressources Ingress du cluster. Lorsque vous utilisez le mode équilibreur de charge `shared`, les paramètres du service partagé tels que `labels`, `annotations`, `type` et `loadBalancerIP` sont configurés dans la section `ingressController.service` des valeurs Helm. Pour plus d’informations, consultez la [référence sur les valeurs Cilium Helm](https://github.com/cilium/cilium/blob/v1.17.6/install/kubernetes/cilium/values.yaml#L887).
+ Avec `ingressController.default` défini sur `true`, Cilium est configuré comme contrôleur Ingress par défaut pour le cluster et créera des entrées Ingress même lorsque `ingressClassName` n’est pas spécifié sur les ressources Ingress.
+ Cilium Ingress peut être déployé en mode équilibreur de charge (par défaut), port de nœud ou réseau hôte. Lorsque Cilium est installé en mode réseau hôte, les modes Service de type LoadBalancer et Service de type NodePort sont désactivés. Pour plus d’informations, consultez [Réseau hôte](#hybrid-nodes-ingress-cilium-host-network).
+ Définissez toujours `ingressController.service.annotations` sur `service.beta.kubernetes.io/aws-load-balancer-type: "external"` dans les valeurs Helm afin d’empêcher l’ancien fournisseur de cloud AWS de créer un Classic Load Balancer pour le service par défaut `cilium-ingress` créé par les [Charts de Helm Cilium](https://github.com/cilium/cilium/blob/main/install/kubernetes/cilium/templates/cilium-ingress-service.yaml).

### Prérequis
<a name="_prerequisites_3"></a>

1. Helm installé dans votre environnement de ligne de commande, consultez les [Instructions de configuration de Helm](helm.md).

1. Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

### Procédure
<a name="_procedure_3"></a>

1. Créez un fichier nommé `cilium-ingress-values.yaml` avec le contenu suivant. L’exemple ci-dessous configure Cilium Ingress pour utiliser le mode d’équilibrage de charge `dedicated` par défaut et utiliser un DaemonSet distinct `cilium-envoy` pour les proxys Envoy configurés pour s’exécuter uniquement sur des nœuds hybrides.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: dedicated
     service:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Appliquez le fichier de valeurs Helm à votre cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-ingress-values.yaml
   ```

1. Vérifiez que l’opérateur Cilium, l’agent et les pods Envoy fonctionnent correctement.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Configurer Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-configure"></a>

Cilium Ingress est activé sur les objets Ingress en définissant le paramètre `ingressClassName` sur `cilium`. Les services créés par Cilium pour les ressources Ingress peuvent être configurés à l’aide d’annotations sur les objets Ingress lorsque vous utilisez le mode équilibreur de charge `dedicated`, et dans la configuration Cilium / Helm lorsque vous utilisez le mode équilibreur de charge `shared`. Ces annotations sont couramment utilisées par les contrôleurs Ingress pour configurer l’infrastructure de l’équilibreur de charge ou d’autres attributs du service, tels que le type de service, le mode de l’équilibreur de charge, les ports et le transfert TLS. Les annotations clés sont décrites ci-dessous. Pour obtenir la liste complète des annotations prises en charge, consultez les [annotations Cilium Ingress](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#supported-ingress-annotations) dans la documentation Cilium.


| Annotation | Description | 
| --- | --- | 
|   `ingress.cilium.io/loadbalancer-mode`   |   `dedicated` : Service dédié de type LoadBalancer pour chaque ressource Ingress (par défaut).  `shared` : Service unique de type LoadBalancer pour toutes les ressources Ingress.  | 
|   `ingress.cilium.io/service-type`   |   `LoadBalancer` : le service sera de type LoadBalancer (par défaut)  `NodePort` : Le service sera de type NodePort.  | 
|   `service.beta.kubernetes.io/aws-load-balancer-type`   |   `"external"` : Empêcher les anciens fournisseurs de cloud AWS de provisionner un Classic Load Balancer pour les services de type LoadBalancer.  | 
|   `lbipam.cilium.io/ips`   |  Liste des adresses IP à attribuer à partir de Cilium LoadBalancer IPAM  | 

Cilium et la spécification Kubernetes Ingress prennent en charge les règles de correspondance exacte, préfixe et spécifique à l’implémentation pour les chemins d’accès Ingress. Cilium prend en charge les expressions régulières comme règle de correspondance spécifique à son implémentation. Pour plus d’informations, consultez les sections [Types et priorité des chemins d’entrée](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#ingress-path-types-and-precedence) et [Exemples de types de chemins](https://docs.cilium.io/en/stable/network/servicemesh/path-types/) dans la documentation Cilium, ainsi que les exemples présentés dans cette section [Déployer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy).

Un exemple d’objet Cilium Ingress est présenté ci-dessous.

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    service.beta.kuberentes.io/...
    service.kuberentes.io/...
spec:
  ingressClassName: cilium
  rules:
  ...
```

## Déployer Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-deploy"></a>

1. Créer un exemple d’application. L’exemple ci-dessous utilise l’application microservices [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Vérifiez que l’application fonctionne correctement.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Créez un fichier nommé `my-ingress.yaml` avec les contenus suivants. L’exemple ci-dessous utilise l’annotation `service.beta.kubernetes.io/aws-load-balancer-type: "external"` pour empêcher l’ancien fournisseur de cloud AWS de créer un Classic Load Balancer pour le service de type LoadBalancer que Cilium crée pour la ressource Ingress.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Appliquez la ressource Ingress à votre cluster.

   ```
   kubectl apply -f my-ingress.yaml
   ```

1. Confirmez que la ressource Ingress et le service correspondant ont été créés. À ce stade, il est prévu que le champ `ADDRESS` de la ressource Ingress ne soit pas renseigné avec une adresse IP ou un nom d’hôte, et que le service partagé ou dédié de type LoadBalancer pour la ressource Ingress ne dispose pas non plus d’adresse IP ou de nom d’hôte attribué.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS   PORTS   AGE
   my-ingress   cilium   *                 80      8s
   ```

   Pour le mode équilibreur de charge `shared` 

   ```
   kubectl -n kube-system get svc cilium-ingress
   ```

   ```
   NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress   LoadBalancer   172.16.217.48   <pending>     80:32359/TCP,443:31090/TCP   10m
   ```

   Pour le mode équilibreur de charge `dedicated` 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   LoadBalancer   172.16.193.15   <pending>     80:32088/TCP,443:30332/TCP   25s
   ```

1. Procédez à [Type de service LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) pour configurer la ressource Ingress afin d’utiliser une adresse IP attribuée par Cilium Load Balancer IPAM, et [Type de service NodePort](#hybrid-nodes-ingress-cilium-nodeport) ou [Réseau hôte](#hybrid-nodes-ingress-cilium-host-network) pour configurer la ressource Ingress afin d’utiliser les adresses NodePort ou du réseau hôte.

## Type de service LoadBalancer
<a name="hybrid-nodes-ingress-cilium-loadbalancer"></a>

### Infrastructure existante de l’équilibreur de charge
<a name="_existing_load_balancer_infrastructure"></a>

Par défaut, pour Cilium Ingress et Cilium Gateway, Cilium crée des services Kubernetes de type LoadBalancer pour les ressources Ingress / Gateway. Les attributs du ou des services créés par Cilium peuvent être configurés via les ressources Ingress et Gateway. Lorsque vous créez des ressources Ingress ou Gateway, l’adresse IP ou les noms d’hôte exposés en externe pour Ingress ou Gateway sont attribués à partir de l’infrastructure d’équilibrage de charge, qui est généralement fournie par un contrôleur Ingress ou Gateway.

De nombreux contrôleurs Ingress et Gateway utilisent des annotations pour détecter et configurer l’infrastructure d’équilibrage de charge. Les annotations pour ces contrôleurs Ingress et Gateway sont configurées sur les ressources Ingress ou Gateway, comme indiqué dans les exemples précédents ci-dessus. Consultez la documentation de votre contrôleur Ingress ou Gateway pour connaître les annotations qu’il prend en charge et consultez la [documentation Kubernetes Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) et la [documentation Kubernetes Gateway](https://gateway-api.sigs.k8s.io/implementations/) pour obtenir une liste des contrôleurs courants.

**Important**  
Cilium Ingress et Gateway ne peuvent pas être utilisés avec l’AWS Load Balancer Controller et les Network Load Balancers (NLB) AWS avec les nœuds hybrides EKS. Tenter de les utiliser ensemble entraîne des cibles non enregistrées, car le NLB tente de se connecter directement aux adresses IP des pods qui prennent en charge le service de type LoadBalancer lorsque le NLB `target-type` est défini sur `ip` (condition requise pour utiliser NLB avec des charges de travail s’exécutant sur des nœuds hybrides EKS).

### Pas d’infrastructure d’équilibrage de charge
<a name="_no_load_balancer_infrastructure"></a>

Si votre environnement ne dispose pas d’une infrastructure d’équilibrage de charge et du contrôleur Ingress / Gateway correspondant, les ressources Ingress / Gateway et les services de type LoadBalancer correspondants peuvent être configurés pour utiliser les adresses IP attribuées par la [gestion des adresses IP de l’équilibreur de charge](https://docs.cilium.io/en/stable/network/lb-ipam/) de Cilium (LB IPAM). L’IPAM du LB Cilium peut être configuré avec des plages d’adresses IP connues provenant de votre environnement sur site et peut utiliser la prise en charge intégrée du protocole de passerelle frontière (BGP) de Cilium ou les annonces L2 pour diffuser les adresses IP du LoadBalancer vers votre réseau sur site.

L’exemple ci-dessous montre comment configurer l’IPAM LB de Cilium avec une adresse IP à utiliser pour vos ressources Ingress / Gateway, et comment configurer le plan de contrôle BGP de Cilium pour annoncer l’adresse IP de l’équilibreur de charge au réseau sur site. La fonctionnalité LB IPAM de Cilium est activée par défaut, mais n’est pas activée tant qu’une ressource `CiliumLoadBalancerIPPool` n’est pas créée.

#### Prérequis
<a name="_prerequisites_4"></a>
+ Cilium Ingress ou Gateway installé conformément aux instructions fournies dans [Installer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install) ou [Installer Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-install).
+ Ressources Cilium Ingress ou Gateway avec exemple d’application déployée en suivant les instructions dans [Déployer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy) ou [Déployer Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-deploy).
+ Le plan de contrôle Cilium BGP a été activé en suivant les instructions fournies dans [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md). Si vous ne souhaitez pas utiliser BGP, vous pouvez ignorer cette condition préalable, mais vous ne pourrez pas accéder à votre ressource Ingress ou Gateway tant que l’adresse IP LoadBalancer attribuée par Cilium LB IPAM ne sera pas routable sur votre réseau sur site.

#### Procédure
<a name="_procedure_4"></a>

1. Vous pouvez éventuellement modifier la ressource Ingress ou Gateway afin de demander une adresse IP spécifique à utiliser pour le service de type LoadBalancer. Si vous ne demandez pas d’adresse IP spécifique, Cilium attribuera une adresse IP à partir de la plage d’adresses IP configurée dans la ressource `CiliumLoadBalancerIPPool` à l’étape suivante. Dans les commandes ci-dessous, remplacez `LB_IP_ADDRESS` par l’adresse IP pour demander le service de type LoadBalancer.

    **Passerelle** 

   ```
   kubectl patch gateway -n default my-gateway --type=merge -p '{
     "spec": {
       "addresses": [{"type": "IPAddress", "value": "LB_IP_ADDRESS"}]
     }
   }'
   ```

    **Ingress** 

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
     "metadata": {"annotations": {"lbipam.cilium.io/ips": "LB_IP_ADDRESS"}}
   }'
   ```

1. Créez un fichier nommé `cilium-lbip-pool-ingress.yaml` avec une ressource `CiliumLoadBalancerIPPool` pour configurer la plage d’adresses IP de l’équilibreur de charge pour vos ressources Ingress / Gateway.
   + Si vous utilisez Cilium Ingress, Cilium applique automatiquement le label `cilium.io/ingress: "true"` aux services qu’il crée pour les ressources Ingress. Vous pouvez utiliser cette étiquette dans le champ `serviceSelector` de la définition de la ressource `CiliumLoadBalancerIPPool` pour sélectionner les services éligibles à LB IPAM.
   + Si vous utilisez Cilium Gateway, vous pouvez utiliser l’étiquette `gateway.networking.k8s.io/gateway-name` dans les champs `serviceSelector` de la définition de ressource `CiliumLoadBalancerIPPool` pour sélectionner les ressources Gateway éligibles pour LB IPAM.
   + Remplacez `LB_IP_CIDR` par la plage d’adresses IP à utiliser pour les adresses IP de l’équilibreur de charge. Pour sélectionner une seule adresse IP, utilisez un CIDR `/32`. Pour plus d’informations, consultez la section [Gestion des adresses IP LoadBalancer](https://docs.cilium.io/en/stable/network/lb-ipam/) dans la documentation Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: bookinfo-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         # if using Cilium Gateway
         matchExpressions:
           - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
         # if using Cilium Ingress
         matchLabels:
           cilium.io/ingress: "true"
     ```

1. Appliquez la ressource `CiliumLoadBalancerIPPool` à votre cluster.

   ```
   kubectl apply -f cilium-lbip-pool-ingress.yaml
   ```

1. Confirmez qu’une adresse IP a été attribuée par Cilium LB IPAM pour la ressource Ingress / Gateway.

    **Passerelle** 

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS        PROGRAMMED   AGE
   my-gateway   cilium   LB_IP_ADDRESS    True         6m41s
   ```

    **Ingress** 

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS        PORTS   AGE
   my-ingress   cilium   *       LB_IP_ADDRESS   80      10m
   ```

1. Créez un fichier nommé `cilium-bgp-advertisement-ingress.yaml` avec une ressource `CiliumBGPAdvertisement` pour annoncer l’adresse IP du LoadBalancer pour les ressources Ingress / Gateway. Si vous n’utilisez pas Cilium BGP, vous pouvez ignorer cette étape. L’adresse IP du LoadBalancer utilisée pour votre ressource Ingress / Gateway doit être routable sur votre réseau local afin que vous puissiez interroger le service à l’étape suivante.

   ```
   apiVersion: cilium.io/v2alpha1
   kind: CiliumBGPAdvertisement
   metadata:
     name: bgp-advertisement-lb-ip
     labels:
       advertise: bgp
   spec:
     advertisements:
       - advertisementType: "Service"
         service:
           addresses:
             - LoadBalancerIP
         selector:
           # if using Cilium Gateway
           matchExpressions:
             - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
           # if using Cilium Ingress
           matchLabels:
             cilium.io/ingress: "true"
   ```

1. Appliquez la ressource `CiliumBGPAdvertisement` à votre cluster.

   ```
   kubectl apply -f cilium-bgp-advertisement-ingress.yaml
   ```

1. Accédez au service à l’aide de l’adresse IP attribuée par Cilium LB IPAM.

   ```
   curl -s http://LB_IP_ADDRESS:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Type de service NodePort
<a name="hybrid-nodes-ingress-cilium-nodeport"></a>

Si votre environnement ne dispose pas d’une infrastructure d’équilibrage de charge et d’un contrôleur Ingress correspondant, ou si vous gérez vous-même votre infrastructure d’équilibrage de charge ou utilisez un équilibrage de charge basée sur DNS, vous pouvez configurer Cilium Ingress pour créer des services de type NodePort pour les ressources Ingress. Lorsque vous utilisez NodePort avec Cilium Ingress, le service de type NodePort est exposé sur un port de chaque nœud dans la plage de ports 30000-32767. Dans ce mode, lorsque le trafic atteint un nœud quelconque du cluster sur le NodePort, il est ensuite transféré vers un pod qui prend en charge le service, lequel peut se trouver sur le même nœud ou sur un nœud différent.

**Note**  
La prise en charge de Cilium Gateway pour les services NodePort est prévue pour la version 1.18.x de Cilium ([\$127273](https://github.com/cilium/cilium/pull/27273))

### Prérequis
<a name="_prerequisites_5"></a>
+ Cilium Ingress installé en suivant les instructions fournies dans [Installer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install).
+ Ressources Cilium Ingress avec exemple d’application déployée en suivant les instructions dans [Déployer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy).

### Procédure
<a name="_procedure_5"></a>

1. Modifiez la ressource Ingress `my-ingress` existante pour la faire passer du type de service LoadBalancer à NodePort.

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
       "metadata": {"annotations": {"ingress.cilium.io/service-type": "NodePort"}}
   }'
   ```

   Si vous n’avez pas créé la ressource Ingress, vous pouvez la créer en appliquant la définition Ingress suivante à votre cluster. Remarque : la définition d’Ingress ci-dessous utilise l’application exemple Istio Bookinfo décrite dans [Déployer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy).

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
       "ingress.cilium.io/service-type": "NodePort"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Confirmez que le service pour la ressource Ingress a été mis à jour pour utiliser le type de service NodePort. Notez le port pour le protocole HTTP dans la sortie. Dans l’exemple ci-dessous, ce port HTTP est `32353`, qui sera utilisé dans une étape ultérieure pour interroger le service. L’avantage d’utiliser Cilium Ingress avec un service de type NodePort est que vous pouvez appliquer un routage basé sur le chemin et l’hôte, ainsi que des politiques réseau pour le trafic Ingress, ce qui n’est pas possible avec un service standard de type NodePort sans Ingress.

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   NodePort   172.16.47.153   <none>        80:32353/TCP,443:30253/TCP   27m
   ```

1. Obtenez les adresses IP des nœuds de votre cluster.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Accédez au service de type NodePort à l’aide des adresses IP de vos nœuds et du NodePort capturé ci-dessus. Dans l’exemple ci-dessous, l’adresse IP du nœud utilisée est `10.80.146.32` et le NodePort est `32353`. Remplacez-les par les valeurs correspondant à votre environnement.

   ```
   curl -s http://10.80.146.32:32353/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Réseau hôte
<a name="hybrid-nodes-ingress-cilium-host-network"></a>

Comme pour le service de type NodePort, si vous ne disposez pas d’une infrastructure d’équilibrage de charge et d’un contrôleur Ingress ou Gateway, ou si vous gérez vous-même votre équilibrage de charge à l’aide d’un équilibreur de charge externe, vous pouvez configurer Cilium Ingress et Cilium Gateway pour exposer les ressources Ingress et Gateway directement sur le réseau hôte. Lorsque le mode réseau hôte est activé pour une ressource Ingress ou Gateway, les modes Service de type LoadBalancer et NodePort sont automatiquement désactivés. Le mode réseau hôte est mutuellement exclusif avec ces modes alternatifs pour chaque ressource Ingress ou Gateway. Par rapport au service de type NodePort, le mode réseau hôte offre une flexibilité supplémentaire pour la plage de ports pouvant être utilisés (il n’est pas limité à la plage NodePort 30000-32767) et vous pouvez configurer un sous-ensemble de nœuds où les proxys Envoy s’exécutent sur le réseau hôte.

### Prérequis
<a name="_prerequisites_6"></a>
+ Cilium Ingress ou Gateway installé conformément aux instructions fournies dans [Installer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install) ou [Installer Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-install).

### Procédure
<a name="_procedure_6"></a>

#### Passerelle
<a name="_gateway"></a>

1. Créez un fichier nommé `cilium-gateway-host-network.yaml` avec le contenu suivant.

   ```
   gatewayAPI:
     enabled: true
     hostNetwork:
       enabled: true
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: gateway
   ```

1. Appliquez la configuration du réseau hôte Cilium Gateway à votre cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-gateway-host-network.yaml
   ```

   Si vous n’avez pas créé la ressource Gateway, vous pouvez la créer en appliquant la définition Gateway suivante à votre cluster. La définition Gateway ci-dessous utilise l’application exemple Istio Bookinfo décrite dans [Déployer Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-deploy). Dans l’exemple ci-dessous, la ressource Gateway est configurée pour utiliser le port `8111` pour l’écouteur HTTP, qui est le port d’écouteur partagé pour les proxys Envoy s’exécutant sur le réseau hôte. Si vous utilisez un port privilégié (inférieur à 1023) pour la ressource Gateway, consultez la [documentation Cilium](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#bind-to-privileged-port) pour obtenir des instructions.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     listeners:
     - protocol: HTTP
       port: 8111
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

   Vous pouvez observer la configuration Cilium Envoy appliquée à l’aide de la commande suivante.

   ```
   kubectl get cec cilium-gateway-my-gateway -o yaml
   ```

   Vous pouvez obtenir le port d’écouteur Envoy pour le service `cilium-gateway-my-gateway` à l’aide de la commande suivante. Dans cet exemple, le port d’écouteur partagé est `8111`.

   ```
   kubectl get cec cilium-gateway-my-gateway -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Obtenez les adresses IP des nœuds de votre cluster.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Accédez au service à l’aide des adresses IP de vos nœuds et du port d’écouteur de la ressource `cilium-gateway-my-gateway`. Dans l’exemple ci-dessous, l’adresse IP du nœud utilisée est `10.80.146.32` et le port d’écouteur est `8111`. Remplacez-les par les valeurs correspondant à votre environnement.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

#### Ingress
<a name="_ingress"></a>

En raison d’un problème en amont avec Cilium ([\$134028](https://github.com/cilium/cilium/issues/34028)), Cilium Ingress en mode réseau hôte nécessite l’utilisation de `loadbalancerMode: shared`, qui crée un seul service de type ClusterIP pour toutes les ressources Ingress du cluster. Si vous utilisez un port privilégié (inférieur à 1023) pour la ressource Ingress, consultez la [documentation Cilium](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#bind-to-privileged-port) pour obtenir des instructions.

1. Créez un fichier nommé `cilium-ingress-host-network.yaml` avec le contenu suivant.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: shared
     # This is a workaround for the upstream Cilium issue
     service:
       externalTrafficPolicy: null
       type: ClusterIP
     hostNetwork:
       enabled: true
       # ensure the port does not conflict with other services on the node
       sharedListenerPort: 8111
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: ingress
   ```

1. Appliquez la configuration Cilium Ingress du réseau hôte à votre cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-ingress-host-network.yaml
   ```

   Si vous n’avez pas créé la ressource Ingress, vous pouvez la créer en appliquant la définition Ingress suivante à votre cluster. La définition d’Ingress ci-dessous utilise l’application exemple Istio Bookinfo décrite dans [Déployer Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy).

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

   Vous pouvez observer la configuration Cilium Envoy appliquée à l’aide de la commande suivante.

   ```
   kubectl get cec -n kube-system cilium-ingress -o yaml
   ```

   Vous pouvez obtenir le port d’écouteur Envoy pour le service `cilium-ingress` à l’aide de la commande suivante. Dans cet exemple, le port d’écouteur partagé est `8111`.

   ```
   kubectl get cec -n kube-system cilium-ingress -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Obtenez les adresses IP des nœuds de votre cluster.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Accédez au service à l’aide des adresses IP de vos nœuds et de `sharedListenerPort` pour la ressource `cilium-ingress`. Dans l’exemple ci-dessous, l’adresse IP du nœud utilisée est `10.80.146.32` et le port d’écouteur est `8111`. Remplacez-les par les valeurs correspondant à votre environnement.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

# Configurer les services de type LoadBalancer pour les nœuds hybrides
<a name="hybrid-nodes-load-balancing"></a>

Cette rubrique décrit comment configurer l’équilibrage de charge de couche 4 (L4) pour les applications s’exécutant sur des nœuds hybrides Amazon EKS. Les services Kubernetes de type LoadBalancer sont utilisés pour exposer les applications Kubernetes à l’extérieur du cluster. Les services de type LoadBalancer sont couramment utilisés avec une infrastructure d’équilibrage de charge physique dans le cloud ou dans un environnement sur site pour traiter le trafic de la charge de travail. Cette infrastructure d’équilibrage de charge est généralement fournie avec un contrôleur spécifique à l’environnement.

 AWS prend en charge Network Load Balancer (NLB) AWS et Cilium pour les services de type LoadBalancer s’exécutant sur des nœuds hybrides EKS. La décision d’utiliser NLB ou Cilium dépend de la source du trafic applicatif. Si le trafic applicatif provient d’une région AWS, AWS recommande d’utiliser AWS NLB ainsi que l’AWS Load Balancer Controller. Si le trafic applicatif provient de l’environnement local sur site ou périphérique, AWS recommande d’utiliser les capacités de répartition de charge intégrées à Cilium, qui peuvent être utilisées avec ou sans infrastructure d’équilibrage de charge dans votre environnement.

Pour l’équilibrage de charge du trafic des applications de couche 7 (L7), voir [Configurer Kubernetes Ingress pour les nœuds hybrides](hybrid-nodes-ingress.md). Pour obtenir des informations générales sur l’équilibrage de charge avec EKS, consultez la section [Meilleures pratiques pour l’équilibrage de charge](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html).

## AWS Network Load Balancer
<a name="hybrid-nodes-service-lb-nlb"></a>

Vous pouvez utiliser l’[AWS Load Balancer Controller](aws-load-balancer-controller.md) et NLB avec le type de cible `ip` pour les charges de travail s’exécutant sur des nœuds hybrides. Lorsque vous utilisez le type de cible `ip`, NLB transfère le trafic directement vers les pods, en contournant le chemin réseau de la couche Service. Pour que NLB atteigne les cibles IP des pods sur les nœuds hybrides, vos CIDR de pods sur site doivent être routables sur votre réseau sur site. De plus, l’AWS Load Balancer Controller utilise des webhooks et nécessite une communication directe depuis le plan de contrôle EKS. Pour de plus amples informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).
+ Consultez [Acheminer le trafic TCP et UDP avec des Network Load Balancers](network-load-balancing.md) pour connaître les exigences de configuration du sous-réseau, et [Installez le contrôleur AWS Load Balancer avec Helm](lbc-helm.md) et les [Bonnes pratiques en matière d’équilibrage de charge](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html) pour obtenir des informations supplémentaires sur le Network Load Balancer AWS et l’AWS Load Balancer Controller.
+ Consultez les [configurations NLB de l’AWS Load Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/nlb/) pour connaître les configurations pouvant être appliquées aux services de type `LoadBalancer` avec le Network Load Balancer AWS.

### Prérequis
<a name="_prerequisites"></a>
+ Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).
+ Le plan de contrôle Cilium BGP a été activé en suivant les instructions fournies dans [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md). Si vous ne souhaitez pas utiliser BGP, vous devez utiliser une autre méthode pour rendre vos CIDR de pods sur site routables sur votre réseau sur site. Pour plus d’informations, consultez [CIDR de pods distants routables](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).
+ Helm installé dans votre environnement de ligne de commande, consultez les [Instructions de configuration de Helm](helm.md).
+ eksctl installé dans votre environnement de ligne de commande, consultez les instructions de [configuration d’eksctl](install-kubectl.md#eksctl-install-update).

### Procédure
<a name="_procedure"></a>

1. Téléchargez une politique IAM pour le contrôleur de l'équilibreur de charge AWS qui lui permet d'effectuer des appels aux API AWS en votre nom.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Créez une politique IAM à l'aide de la politique téléchargée à l'étape précédente.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Remplacez les valeurs pour le nom du cluster (`CLUSTER_NAME`), la région AWS (`AWS_REGION`) et l’ID du compte AWS (`AWS_ACCOUNT_ID`) par vos paramètres, puis exécutez la commande suivante.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Ajoutez le référentiel des Charts de Helm eks-charts. AWS maintient ce référentiel sur GitHub.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Mettez à jour votre référentiel Helm local pour vous assurer que vous disposez des graphiques les plus récents.

   ```
   helm repo update eks
   ```

1. Installez le contrôleur de l'équilibreur de charge AWS. Remplacez les valeurs pour le nom du cluster (`CLUSTER_NAME`), la région AWS (`AWS_REGION`), l’ID VPC (`VPC_ID`) et la version des Charts de Helm de l’AWS Load Balancer Controller (`AWS_LBC_HELM_VERSION`) par vos paramètres. Vous pouvez trouver la dernière version des Charts de Helm en exécutant `helm search repo eks/aws-load-balancer-controller --versions`. Si vous utilisez un cluster en mode mixte avec des nœuds hybrides et des nœuds dans le cloud AWS, vous pouvez exécuter l’AWS Load Balancer Controller sur les nœuds cloud en suivant les instructions disponibles à l’adresse [Contrôleur de l'équilibreur de charge AWS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc).

   ```
   helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
     -n kube-system \
     --version AWS_LBC_HELM_VERSION \
     --set clusterName=CLUSTER_NAME \
     --set region=AWS_REGION \
     --set vpcId=VPC_ID \
     --set serviceAccount.create=false \
     --set serviceAccount.name=aws-load-balancer-controller
   ```

1. Vérifiez que l’AWS Load Balancer Controller a été installé correctement.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Définissez un exemple d’application dans un fichier nommé `tcp-sample-app.yaml`. L’exemple ci-dessous utilise un déploiement NGINX simple avec un port TCP.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Appliquez le déploiement à votre cluster.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Définissez un service de type LoadBalancer pour le déploiement dans un fichier nommé `tcp-sample-service.yaml`.

   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: tcp-sample-service
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: external
       service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
       service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
   spec:
     ports:
       - port: 80
         targetPort: 80
         protocol: TCP
     type: LoadBalancer
     selector:
       app: nginx
   ```

1. Appliquez la configuration du service à votre cluster.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. La configuration du NLB pour le service peut prendre quelques minutes. Une fois le NLB provisionné, le service se verra attribuer une adresse correspondant au nom DNS du déploiement NLB.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.115.212   k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com   80:30396/TCP   8s
   ```

1. Accédez au service à l’aide de l’adresse du NLB.

   ```
   curl k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com
   ```

   Un exemple de résultat est présenté ci-dessous.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Nettoyez les ressources que vous avez créées.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   ```

## Équilibrage de charge dans le cluster Cilium
<a name="hybrid-nodes-service-lb-cilium"></a>

Cilium peut être utilisé comme équilibreur de charge intra-cluster pour les charges de travail exécutées sur des nœuds hybrides EKS, ce qui peut s’avérer utile pour les environnements qui ne disposent pas d’infrastructure d’équilibrage de charge. Les capacités d’équilibrage de charge de Cilium reposent sur une combinaison de fonctionnalités Cilium, notamment le remplacement de kube-proxy, la gestion des adresses IP de l’équilibreur de charge (IPAM) et le plan de contrôle BGP. Les responsabilités de ces fonctionnalités sont détaillées ci-dessous :
+  **Remplacement de Cilium kube-proxy** : gère le routage du trafic des services vers les pods dorsaux.
+  **Cilium Load Balancer IPAM** : gère les adresses IP pouvant être attribuées aux services de type `LoadBalancer`.
+  **Plan de contrôle Cilium BGP** : annonce les adresses IP attribuées par le Load Balancer IPAM au réseau local.

Si vous n’utilisez pas le remplacement kube-proxy de Cilium, vous pouvez toujours utiliser Cilium Load Balancer IPAM et BGP Control Plane pour allouer et attribuer des adresses IP aux services de type LoadBalancer. Si vous n’utilisez pas le remplacement kube-proxy de Cilium, l’équilibrage de charge pour les services vers les pods dorsaux est géré par kube-proxy et les règles iptables par défaut dans EKS.

### Prérequis
<a name="_prerequisites_2"></a>
+ Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md), avec ou sans remplacement de kube-proxy activé. Le remplacement de kube-proxy par Cilium nécessite l’exécution d’un système d’exploitation avec un noyau Linux au moins aussi récent que v4.19.57, v5.1.16 ou v5.2.0. Toutes les versions récentes des systèmes d’exploitation pris en charge pour une utilisation avec des nœuds hybrides répondent à ces critères, à l’exception de Red Hat Enterprise Linux (RHEL) 8.x.
+ Le plan de contrôle Cilium BGP a été activé en suivant les instructions fournies dans [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md). Si vous ne souhaitez pas utiliser BGP, vous devez utiliser une autre méthode pour rendre vos CIDR de pods sur site routables sur votre réseau sur site. Pour plus d’informations, consultez [CIDR de pods distants routables](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).
+ Helm installé dans votre environnement de ligne de commande, consultez les [Instructions de configuration de Helm](helm.md).

### Procédure
<a name="_procedure_2"></a>

1. Créez un fichier nommé `cilium-lbip-pool-loadbalancer.yaml` avec une ressource `CiliumLoadBalancerIPPool` pour configurer la plage d’adresses IP du Load Balancer pour vos services de type LoadBalancer.
   + Remplacez `LB_IP_CIDR` par la plage d’adresses IP à utiliser pour les adresses IP de l’équilibreur de charge. Pour sélectionner une seule adresse IP, utilisez un CIDR `/32`. Pour plus d’informations, consultez la section [Gestion des adresses IP LoadBalancer](https://docs.cilium.io/en/stable/network/lb-ipam/) dans la documentation Cilium.
   + Le champ `serviceSelector` est configuré pour correspondre au nom du service que vous créerez à l’étape suivante. Avec cette configuration, les adresses IP de ce pool ne seront attribuées qu’aux services portant le nom `tcp-sample-service`.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: tcp-service-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         matchLabels:
           io.kubernetes.service.name: tcp-sample-service
     ```

1. Appliquez la ressource `CiliumLoadBalancerIPPool` à votre cluster.

   ```
   kubectl apply -f cilium-lbip-pool-loadbalancer.yaml
   ```

1. Vérifiez qu’au moins une adresse IP est disponible dans le pool.

   ```
   kubectl get ciliumloadbalancerippools.cilium.io
   ```

   ```
   NAME               DISABLED   CONFLICTING   IPS AVAILABLE   AGE
   tcp-service-pool   false      False         1               24m
   ```

1. Créez un fichier nommé `cilium-bgp-advertisement-loadbalancer.yaml` avec une ressource `CiliumBGPAdvertisement` pour annoncer l’adresse IP de l’équilibreur de charge pour le service que vous allez créer à l’étape suivante. Si vous n’utilisez pas Cilium BGP, vous pouvez ignorer cette étape. L’adresse IP de l’équilibreur de charge utilisée pour votre service doit être routable sur votre réseau sur site afin que vous puissiez interroger le service lors de la dernière étape.
   + Le champ `advertisementType` est défini sur `Service` et `service.addresses` est défini sur `LoadBalancerIP` pour annoncer uniquement le `LoadBalancerIP` pour les services de type `LoadBalancer`.
   + Le champ `selector` est configuré pour correspondre au nom du service que vous créerez à l’étape suivante. Avec cette configuration, seul `LoadBalancerIP` pour les services portant le nom `tcp-sample-service` seront annoncés.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-tcp-service
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "Service"
           service:
             addresses:
               - LoadBalancerIP
           selector:
             matchLabels:
               io.kubernetes.service.name: tcp-sample-service
     ```

1. Appliquez la ressource `CiliumBGPAdvertisement` à votre cluster. Si vous n’utilisez pas Cilium BGP, vous pouvez ignorer cette étape.

   ```
   kubectl apply -f cilium-bgp-advertisement-loadbalancer.yaml
   ```

1. Définissez un exemple d’application dans un fichier nommé `tcp-sample-app.yaml`. L’exemple ci-dessous utilise un déploiement NGINX simple avec un port TCP.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Appliquez le déploiement à votre cluster.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Définissez un service de type LoadBalancer pour le déploiement dans un fichier nommé `tcp-sample-service.yaml`.
   + Vous pouvez demander une adresse IP spécifique à partir du pool d’adresses IP de l’équilibreur de charge à l’aide de l’annotation `lbipam.cilium.io/ips` sur l’objet Service. Vous pouvez supprimer cette annotation si vous ne souhaitez pas demander une adresse IP spécifique pour le Service.
   + Le champ spec `loadBalancerClass` est obligatoire afin d’empêcher l’ancien fournisseur de cloud AWS de créer un Classic Load Balancer pour le service. Dans l’exemple ci-dessous, cela est configuré sur `io.cilium/bgp-control-plane` pour utiliser le plan de contrôle BGP de Cilium comme classe d’équilibrage de charge. Ce champ peut également être configuré sur `io.cilium/l2-announcer` pour utiliser la [fonctionnalité L2 Announcements](https://docs.cilium.io/en/latest/network/l2-announcements/) de Cilium (actuellement en version bêta et non officiellement prise en charge par AWS).

     ```
     apiVersion: v1
     kind: Service
     metadata:
       name: tcp-sample-service
       namespace: default
       annotations:
         lbipam.cilium.io/ips: "LB_IP_ADDRESS"
     spec:
       loadBalancerClass: io.cilium/bgp-control-plane
       ports:
         - port: 80
           targetPort: 80
           protocol: TCP
       type: LoadBalancer
       selector:
         app: nginx
     ```

1. Appliquez le service à votre cluster. Le service sera créé avec une adresse IP externe que vous pourrez utiliser pour accéder à l’application.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Vérifiez que le service a été créé avec succès et qu’une adresse IP lui a été attribuée à partir du `CiliumLoadBalancerIPPool` créé à l’étape précédente.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.117.76   LB_IP_ADDRESS   80:31129/TCP   14m
   ```

1. Si vous utilisez Cilium en mode de remplacement de kube-proxy, vous pouvez vérifier que Cilium gère l’équilibrage de charge pour le service en exécutant la commande suivante. Dans la sortie ci-dessous, les adresses `10.86.2.x` sont les adresses IP des pods dorsaux du service.

   ```
   kubectl -n kube-system exec ds/cilium -- cilium-dbg service list
   ```

   ```
   ID   Frontend               Service Type   Backend
   ...
   41   LB_IP_ADDRESS:80/TCP   LoadBalancer   1 => 10.86.2.76:80/TCP (active)
                                              2 => 10.86.2.130:80/TCP (active)
                                              3 => 10.86.2.141:80/TCP (active)
   ```

1. Confirmez que Cilium annonce l’adresse IP au réseau local via BGP. Dans l’exemple ci-dessous, il existe cinq nœuds hybrides, chacun annonçant le `LB_IP_ADDRESS` pour le service `tcp-sample-service` au réseau local.

   ```
   Node                   VRouter      Prefix             NextHop   Age     Attrs
   mi-026d6a261e355fba7   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

1. Accédez au service à l’aide de l’adresse IP de l’équilibreur de charge attribué.

   ```
   curl LB_IP_ADDRESS
   ```

   Un exemple de résultat est présenté ci-dessous.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Nettoyez les ressources que vous avez créées.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   kubectl delete -f cilium-lb-ip-pool.yaml
   kubectl delete -f cilium-bgp-advertisement.yaml
   ```

# Configurer les politiques réseau Kubernetes pour les nœuds hybrides
<a name="hybrid-nodes-network-policies"></a>

 AWS prend en charge les politiques réseau Kubernetes (couche 3 / couche 4) pour le trafic entrant et sortant des pods lors de l’utilisation de Cilium comme CNI avec les nœuds hybrides EKS. Si vous exécutez des clusters EKS avec des nœuds dans le cloud AWS, AWS prend en charge [Amazon VPC CNI pour les politiques réseau Kubernetes](cni-network-policy.md).

Cette rubrique explique comment configurer Cilium et les politiques réseau Kubernetes avec les nœuds hybrides EKS. Pour plus d’informations sur les politiques réseau Kubernetes, consultez la section [Politiques réseau Kubernetes](https://kubernetes.io/docs/concepts/services-networking/network-policies/) dans la documentation Kubernetes.

## Configurer des stratégies réseau
<a name="hybrid-nodes-configure-network-policies"></a>

### Considérations
<a name="_considerations"></a>
+  AWS prend en charge les politiques réseau Kubernetes en amont et les spécifications pour les pods ingress et egress. AWS ne prend actuellement pas en charge ni `CiliumNetworkPolicy` ni `CiliumClusterwideNetworkPolicy`.
+ La valeur Helm `policyEnforcementMode` peut être utilisée pour contrôler le comportement par défaut de l’application des politiques Cilium. Le comportement par défaut autorise tout le trafic sortant et entrant. Lorsqu’un point de terminaison est sélectionné par une stratégie réseau, il passe à un état de refus par défaut, dans lequel seul le trafic explicitement autorisé est autorisé. Consultez la documentation Cilium pour plus d’informations sur le [mode de politique par défaut](https://docs.cilium.io/en/stable/security/policy/intro/#policy-mode-default) et les [modes d’application des politiques](https://docs.cilium.io/en/stable/security/policy/intro/#policy-enforcement-modes).
+ Si vous modifiez `policyEnforcementMode` pour une installation Cilium existante, vous devez redémarrer le DaemonSet de l’agent Cilium pour appliquer le nouveau mode d’application des politiques.
+ Utilisez `namespaceSelector` et `podSelector` pour autoriser ou refuser le trafic vers/depuis les espaces de noms et les pods avec des étiquettes correspondantes. Le `namespaceSelector` et `podSelector` peut être utilisé avec `matchLabels` ou `matchExpressions` pour choisir des espaces de noms et des pods en fonction de leurs étiquettes.
+ Utilisez `ingress.ports` et `egress.ports` pour autoriser ou refuser le trafic vers/depuis les ports ainsi que les protocoles.
+ Le champ `ipBlock` ne peut pas être utilisé pour autoriser ou refuser de façon sélective le trafic vers/depuis les adresses IP des pods ([\$19209](https://github.com/cilium/cilium/issues/9209)). Utiliser des sélecteurs `ipBlock` pour les adresses IP des nœuds est une fonctionnalité bêta de Cilium qui n’est pas prise en charge par AWS.
+ Consultez la ressource [NetworkPolicy](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource) dans la documentation Kubernetes pour obtenir des informations sur les champs disponibles pour les politiques réseau Kubernetes.

### Prérequis
<a name="_prerequisites"></a>
+ Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).
+ Helm installé dans votre environnement de ligne de commande, consultez les [Instructions de configuration de Helm](helm.md).

### Procédure
<a name="_procedure"></a>

La procédure suivante configure les stratégies réseau pour un exemple d’application de microservices afin que les composants ne puissent communiquer qu’avec les autres composants nécessaires au fonctionnement de l’application. La procédure utilise l’application microservices [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

L’application Bookinfo se compose de quatre microservices distincts ayant les relations suivantes :
+  **pageproduit.** Le microservice de la page produit appelle les microservices de détails et d’avis pour remplir la page.
+  **détails**. Le microservice details contient des informations sur les livres.
+  **reviews**. Le microservice « critiques » contient des critiques de livres. Il fait également appel au microservice de notation.
+  **évaluations**. Le microservice « évaluations » contient des informations sur le classement des livres qui accompagnent les critiques littéraires.

  1. Créer l’application exemple.

     ```
     kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     ```

  1. Vérifiez que l’application fonctionne correctement et notez l’adresse IP du pod pour le microservice pageproduit. Vous utiliserez cette adresse IP du pod pour interroger chaque microservice dans les étapes suivantes.

     ```
     kubectl get pods -o wide
     ```

     ```
     NAME                              READY   STATUS    RESTARTS   AGE   IP            NODE
     details-v1-766844796b-9wff2       1/1     Running   0          7s    10.86.3.7     mi-0daa253999fe92daa
     productpage-v1-54bb874995-lwfgg   1/1     Running   0          7s    10.86.2.193   mi-082f73826a163626e
     ratings-v1-5dc79b6bcd-59njm       1/1     Running   0          7s    10.86.2.232   mi-082f73826a163626e
     reviews-v1-598b896c9d-p2289       1/1     Running   0          7s    10.86.2.47    mi-026d6a261e355fba7
     reviews-v2-556d6457d-djktc        1/1     Running   0          7s    10.86.3.58    mi-0daa253999fe92daa
     reviews-v3-564544b4d6-g8hh4       1/1     Running   0          7s    10.86.2.69    mi-09183e8a3d755abf6
     ```

  1. Créez un pod qui sera utilisé tout au long du processus pour tester les politiques réseau. Notez que le pod est créé dans l’espace de noms `default` avec le label `access: true`.

     ```
     kubectl run curl-pod --image=curlimages/curl -i --tty --labels=access=true --namespace=default --overrides='{"spec": { "nodeSelector": {"eks.amazonaws.com/compute-type": "hybrid"}}}' -- /bin/sh
     ```

  1. Testez l’accès au microservice de la page produit. Dans l’exemple ci-dessous, nous utilisons l’adresse IP du pod productpage (`10.86.2.193`) pour interroger le microservice. Remplacez ceci par l’adresse IP du pod productpage dans votre environnement.

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     ```

     ```
     <title>Simple Bookstore App</title>
     ```

  1. Vous pouvez quitter le pod test curl en tapant `exit` et vous pouvez vous reconnecter au pod en exécutant la commande suivante.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

  1. Pour démontrer les effets des stratégies réseau dans les étapes suivantes, nous créons d’abord une stratégie réseau qui refuse tout trafic pour les microservices BookInfo. Créez un fichier nommé `network-policy-deny-bookinfo.yaml` qui définit la stratégie réseau de refus.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: deny-bookinfo
       namespace: default
     spec:
       podSelector:
         matchExpressions:
         - key: app
           operator: In
           values: ["productpage", "details", "reviews", "ratings"]
       policyTypes:
       - Ingress
       - Egress
     ```

  1. Appliquez la stratégie réseau de refus à votre cluster.

     ```
     kubectl apply -f network-policy-default-deny-bookinfo.yaml
     ```

  1. Testez l’accès à l’application BookInfo. Dans l’exemple ci-dessous, nous utilisons l’adresse IP du pod productpage (`10.86.2.193`) pour interroger le microservice. Remplacez ceci par l’adresse IP du pod productpage dans votre environnement.

     ```
     curl http://10.86.2.193:9080/productpage --max-time 10
     ```

     ```
     curl: (28) Connection timed out after 10001 milliseconds
     ```

  1. Créez un fichier nommé `network-policy-productpage.yaml` qui définit la politique réseau de la page produit. La politique prévoit les règles suivantes :
     + autorise le trafic entrant provenant des pods portant le label `access: true` (le pod curl créé à l’étape précédente)
     + autorise le trafic TCP sortant sur le port `9080` pour les microservices détaillant les informations, les avis et les évaluations
     + autorise le trafic TCP/UDP sortant sur le port `53` pour CoreDNS qui s’exécute dans l’espace de noms `kube-system`

       ```
       apiVersion: networking.k8s.io/v1
       kind: NetworkPolicy
       metadata:
         name: productpage-policy
         namespace: default
       spec:
         podSelector:
           matchLabels:
             app: productpage
         policyTypes:
         - Ingress
         - Egress
         ingress:
         - from:
           - podSelector:
               matchLabels:
                 access: "true"
         egress:
         - to:
           - podSelector:
               matchExpressions:
               - key: app
                 operator: In
                 values: ["details", "reviews", "ratings"]
           ports:
           - port: 9080
             protocol: TCP
         - to:
           - namespaceSelector:
               matchLabels:
                 kubernetes.io/metadata.name: kube-system
             podSelector:
               matchLabels:
                 k8s-app: kube-dns
           ports:
           - port: 53
             protocol: UDP
           - port: 53
             protocol: TCP
       ```

  1. Appliquez la stratégie réseau de la page produit à votre cluster.

     ```
     kubectl apply -f network-policy-productpage.yaml
     ```

  1. Connectez-vous au pod curl et testez l’accès à l’application Bookinfo. L’accès au microservice de la page produit est désormais autorisé, mais les autres microservices sont toujours refusés, car ils sont toujours soumis à la politique réseau de refus. Dans les exemples ci-dessous, nous utilisons l’adresse IP du pod productpage (`10.86.2.193`) pour interroger le microservice. Remplacez ceci par l’adresse IP du pod productpage dans votre environnement.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     <title>Simple Bookstore App</title>
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     {"error": "Sorry, product details are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     {"error": "Sorry, product reviews are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     {"error": "Sorry, product ratings are currently unavailable for this book."}
     ```

  1. Créez un fichier nommé `network-policy-details.yaml` qui définit les détails de la stratégie réseau. La politique autorise uniquement le trafic entrant provenant du microservice productpage.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: details-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: details
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
     ```

  1. Créez un fichier nommé `network-policy-reviews.yaml` qui définit la politique réseau des avis. La politique autorise uniquement le trafic entrant provenant du microservice productpage et uniquement le trafic sortant vers le microservice ratings et CoreDNS.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: reviews-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: reviews
       policyTypes:
       - Ingress
       - Egress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
       egress:
       - to:
         - podSelector:
             matchLabels:
               app: ratings
       - to:
         - namespaceSelector:
             matchLabels:
               kubernetes.io/metadata.name: kube-system
           podSelector:
             matchLabels:
               k8s-app: kube-dns
         ports:
         - port: 53
           protocol: UDP
         - port: 53
           protocol: TCP
     ```

  1. Créez un fichier nommé `network-policy-ratings.yaml` qui définit la politique du réseau de notation. La politique autorise uniquement le trafic entrant provenant des microservices de la page produit et des avis.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: ratings-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: ratings
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchExpressions:
             - key: app
               operator: In
               values: ["productpage", "reviews"]
     ```

  1. Appliquez les politiques réseau relatives aux détails, aux avis et aux évaluations à votre cluster.

     ```
     kubectl apply -f network-policy-details.yaml
     kubectl apply -f network-policy-reviews.yaml
     kubectl apply -f network-policy-ratings.yaml
     ```

  1. Connectez-vous au pod curl et testez l’accès à l’application Bookinfo. Dans les exemples ci-dessous, nous utilisons l’adresse IP du pod productpage (`10.86.2.193`) pour interroger le microservice. Remplacez ceci par l’adresse IP du pod productpage dans votre environnement.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     Testez les détails du microservice.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     ```

     ```
     {"id": 1, "author": "William Shakespeare", "year": 1595, "type": "paperback", "pages": 200, "publisher": "PublisherA", "language": "English", "ISBN-10": "1234567890", "ISBN-13": "123-1234567890"}
     ```

     Testez le microservice des évaluations.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     ```

     ```
     {"id": "1", "podname": "reviews-v1-598b896c9d-p2289", "clustername": "null", "reviews": [{"reviewer": "Reviewer1", "text": "An extremely entertaining play by Shakespeare. The slapstick humour is refreshing!"}, {"reviewer": "Reviewer2", "text": "Absolutely fun and entertaining. The play lacks thematic depth when compared to other plays by Shakespeare."}]}
     ```

     Testez le microservice de notation.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     ```

     ```
     {"id": 1, "ratings": {"Reviewer1": 5, "Reviewer2": 4}}
     ```

  1. Nettoyez les ressources que vous avez créées au cours de cette procédure.

     ```
     kubectl delete -f network-policy-deny-bookinfo.yaml
     kubectl delete -f network-policy-productpage.yaml
     kubectl delete -f network-policy-details.yaml
     kubectl delete -f network-policy-reviews.yaml
     kubectl delete -f network-policy-ratings.yaml
     kubectl delete -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     kubectl delete pod curl-pod
     ```

# Concepts pour les nœuds hybrides
<a name="hybrid-nodes-concepts"></a>

Avec les *nœuds hybrides Amazon EKS*, vous pouvez connecter des machines physiques ou virtuelles fonctionnant dans des environnements sur site ou en périphérie à des clusters Amazon EKS fonctionnant dans le cloud AWS. Cette approche présente de nombreux avantages, mais introduit également de nouveaux concepts et architectures de réseau pour ceux qui sont habitués à exploiter des clusters Kubernetes dans un environnement réseau unique.

Les sections suivantes approfondissent les concepts Kubernetes et réseau pour les nœuds hybrides EKS et détaillent la manière dont le trafic circule à travers l’architecture hybride. Ces sections nécessitent que vous ayez des connaissances de base sur les réseaux Kubernetes, telles que les concepts de pods, de nœuds, de services, du plan de contrôle Kubernetes, de kubelet et de kube-proxy.

Nous vous recommandons de lire ces pages dans l’ordre, en commençant par la [Concepts de mise en réseau pour les nœuds hybrides](hybrid-nodes-concepts-networking.md), puis la [Concepts Kubernetes pour les nœuds hybrides](hybrid-nodes-concepts-kubernetes.md), et enfin la [Flux de trafic réseau pour les nœuds hybrides](hybrid-nodes-concepts-traffic-flows.md).

**Topics**
+ [Concepts de mise en réseau pour les nœuds hybrides](hybrid-nodes-concepts-networking.md)
+ [Concepts Kubernetes pour les nœuds hybrides](hybrid-nodes-concepts-kubernetes.md)
+ [Flux de trafic réseau pour les nœuds hybrides](hybrid-nodes-concepts-traffic-flows.md)

# Concepts de mise en réseau pour les nœuds hybrides
<a name="hybrid-nodes-concepts-networking"></a>

Cette section détaille les concepts fondamentaux du réseau et les contraintes à prendre en compte lors de la conception de la topologie réseau pour les nœuds hybrides EKS.

## Concepts de mise en réseau pour les nœuds hybrides EKS
<a name="_networking_concepts_for_eks_hybrid_nodes"></a>

![\[Schéma du réseau de nœuds hybrides de haut niveau\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-highlevel-network.png)


 **Le VPC en tant que hub réseau** 

Tout le trafic qui traverse les limites du cloud passe par votre VPC. Cela inclut le trafic entre le plan de contrôle EKS ou les pods s'exécutant AWS vers les nœuds hybrides ou les pods exécutés sur ceux-ci. Vous pouvez considérer le VPC de votre cluster comme le hub réseau entre vos nœuds hybrides et le reste du cluster. Cette architecture vous donne un contrôle total sur le trafic et son routage, mais vous rend également responsable de la configuration correcte des routes, des groupes de sécurité et des pare-feu pour le VPC.

 **Plan de contrôle EKS vers le VPC** 

Le plan de contrôle EKS attache les **interfaces réseau élastiques (ENIs)** à votre VPC. Ils ENIs gèrent le trafic à destination et en provenance du serveur API EKS. Vous contrôlez le placement du plan de contrôle EKS ENIs lorsque vous configurez votre cluster, car EKS s'attache ENIs aux sous-réseaux que vous transmettez lors de la création du cluster.

EKS associe les groupes de sécurité aux groupes ENIs qu'EKS attache à vos sous-réseaux. Ces groupes de sécurité autorisent le trafic à destination et en provenance du plan de contrôle EKS via le ENIs. Ceci est important pour les nœuds hybrides EKS, car vous devez autoriser le trafic provenant des nœuds hybrides et des pods qui s'y exécutent vers le plan de contrôle EKS ENIs.

 **Réseau de nœuds distants** 

Les réseaux de nœuds distants, en particulier le nœud distant CIDRs, sont les plages de nœuds IPs attribuées aux machines que vous utilisez en tant que nœuds hybrides. Lorsque vous provisionnez des nœuds hybrides, ceux-ci résident dans votre centre de données sur site ou à la périphérie, qui est un domaine réseau différent du plan de contrôle EKS et du VPC. Chaque nœud hybride possède une ou plusieurs adresses IP provenant d’un CIDR de nœud distant distinct des sous-réseaux de votre VPC.

Vous configurez le cluster EKS avec ces nœuds distants CIDRs afin qu'EKS sache qu'il doit acheminer tout le trafic destiné aux nœuds hybrides IPs via le VPC de votre cluster, comme les demandes adressées à l'API kubelet. Les connexions à l'`kubelet`API sont utilisées dans les `kubectl port-forward` commandes `kubectl attach` `kubectl cp``kubectl exec`,`kubectl logs`,, et.

 **Réseaux de pods distants** 

Les réseaux de pods distants sont les plages IPs attribuées aux pods exécutés sur les nœuds hybrides. En général, vous configurez votre CNI avec ces plages et la fonctionnalité de gestion des adresses IP (IPAM) du CNI se charge d’attribuer une tranche de ces plages à chaque nœud hybride. Lorsque vous créez un pod, le CNI attribue une adresse IP au pod à partir de la tranche allouée au nœud où le pod a été planifié.

Vous configurez le cluster EKS avec ces pods distants CIDRs afin que le plan de contrôle EKS sache qu'il doit acheminer tout le trafic destiné aux pods exécutés sur les nœuds hybrides via le VPC de votre cluster, par exemple pour les communications avec les webhooks.

![\[Réseaux de pods distants\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-remote-pod-cidrs.png)


 **Sur site, sur le VPC** 

Le réseau local que vous utilisez pour les nœuds hybrides doit être acheminé vers le VPC que vous utilisez pour votre cluster EKS. Plusieurs [options de connectivité Network-to-Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) sont disponibles pour connecter votre réseau local à un VPC. Vous pouvez également utiliser votre propre solution VPN.

Il est important de configurer correctement le routage côté AWS cloud dans le VPC et dans votre réseau sur site, afin que les deux réseaux acheminent le trafic approprié via la connexion des deux réseaux.

Dans le VPC, tout le trafic à destination du nœud distant et des réseaux de pods distants doit transiter par la connexion à votre réseau local (appelée « passerelle »). Si certains de vos sous-réseaux ont des tables de routage différentes, vous devez configurer chaque table de routage avec les routes pour vos nœuds hybrides et les pods qui s’exécutent sur ceux-ci. Cela est vrai pour les sous-réseaux auxquels le plan ENIs de contrôle EKS est attaché, ainsi que pour les sous-réseaux contenant des EC2 nœuds ou des pods devant communiquer avec des nœuds hybrides.

Dans votre réseau sur site, vous devez configurer votre réseau pour autoriser le trafic à destination et en provenance du VPC de votre cluster EKS et les AWS autres services requis pour les nœuds hybrides. Le trafic pour le cluster EKS traverse la passerelle dans les deux sens.

## Contraintes du réseau
<a name="_networking_constraints"></a>

 **Réseau entièrement routé** 

La principale contrainte réside dans le fait que le plan de contrôle EKS et tous les nœuds, qu’ils soient cloud ou hybrides, doivent former un réseau **entièrement routé**. Cela signifie que tous les nœuds doivent pouvoir se joindre mutuellement au niveau de la couche trois, par adresse IP.

Le plan de contrôle EKS et les nœuds cloud sont déjà accessibles les uns depuis les autres, car ils se trouvent dans un réseau plat (le VPC). Les nœuds hybrides se trouvent toutefois dans un domaine de réseau différent. C’est pourquoi vous devez configurer un routage supplémentaire dans le VPC et sur votre réseau local afin d’acheminer le trafic entre les nœuds hybrides et le reste du cluster. Si les nœuds hybrides sont accessibles les uns depuis les autres et depuis le VPC, vos nœuds hybrides peuvent se trouver dans un seul réseau plat ou dans plusieurs réseaux segmentés.

 **Module de télécommande routable CIDRs** 

Pour que le plan de contrôle EKS puisse communiquer avec les pods s’exécutant sur des nœuds hybrides (par exemple, les webhooks ou le serveur Metrics) ou pour que les pods s’exécutant sur des nœuds cloud puissent communiquer avec les pods s’exécutant sur des nœuds hybrides (communication est-ouest de la charge de travail), votre CIDR de pod distant doit être routable à partir du VPC. Cela signifie que le VPC doit être en mesure d'acheminer le trafic vers le pod CIDRs via la passerelle vers votre réseau local et que votre réseau local doit être en mesure d'acheminer le trafic d'un pod vers le bon nœud.

Il est important de noter la distinction entre les exigences de routage des pods dans le VPC et sur site. Le VPC doit uniquement savoir que tout trafic destiné à un pod distant doit passer par la passerelle. Si vous ne possédez qu’un seul CIDR du pod distant, vous n’avez besoin que d’un seul itinéraire.

Cette exigence s’applique à tous les sauts de votre réseau local jusqu’au routeur local situé dans le même sous-réseau que vos nœuds hybrides. C’est le seul routeur qui doit connaître la tranche CIDR du pod attribuée à chaque nœud, afin de s’assurer que le trafic destiné à un pod particulier est acheminé vers le nœud où le pod a été planifié.

Vous pouvez choisir de propager ces routes pour le pod local CIDRs depuis votre routeur local vers les tables de routage VPC, mais cela n'est pas nécessaire. Si votre espace sur site CIDRs change fréquemment et que vos tables de routage VPC doivent être mises à jour pour refléter le changement d' CIDRsespace, nous vous recommandons de propager l'espace sur site CIDRs vers les tables de routage VPC, mais cela est rare.

Notez que la contrainte permettant de rendre votre module local CIDRs routable est facultative. Si vous n'avez pas besoin d'exécuter des webhooks sur vos nœuds hybrides ou de laisser les pods sur les nœuds cloud communiquer avec les pods sur les nœuds hybrides, vous n'avez pas besoin de configurer le routage pour le pod CIDRs sur votre réseau local.

 *Pourquoi le pod sur site CIDRs doit-il être routable avec des nœuds hybrides ?* 

Lorsque vous utilisez EKS avec le VPC CNI pour vos nœuds de cloud, le VPC CNI est attribué directement IPs du VPC aux pods. Cela signifie qu'aucun routage spécial n'est nécessaire, car les modules cloud et le plan de contrôle EKS peuvent accéder IPs directement au pod.

Lorsqu'ils sont exécutés sur site (et avec d'autres CNIs dans le cloud), les pods s'exécutent généralement sur un réseau superposé isolé et le CNI se charge de distribuer le trafic entre les pods. Cela se fait généralement par le biais de l'encapsulation : le CNI convertit le pod-to-pod trafic en node-to-node trafic, en se chargeant de l'encapsulation et du désencapsulage des deux côtés. De cette manière, aucune configuration supplémentaire n’est nécessaire sur les nœuds et les routeurs.

La mise en réseau avec des nœuds hybrides est unique, car elle combine les deux topologies : le plan de contrôle EKS et les nœuds cloud (avec le VPC CNI) s’attendent à un réseau plat comprenant des nœuds et des pods, tandis que les pods s’exécutant sur des nœuds hybrides se trouvent dans un réseau superposé utilisant VXLAN pour l’encapsulation (par défaut dans Cilium). Les pods exécutés sur des nœuds hybrides peuvent atteindre le plan de contrôle EKS et les pods exécutés sur des nœuds cloud, à condition que le réseau local puisse acheminer vers le VPC. Toutefois, sans routage pour le module CIDRs sur le réseau local, tout trafic revenant vers une adresse IP d'espace local sera finalement abandonné si le réseau ne sait pas comment atteindre le réseau superposé et acheminer vers les nœuds appropriés.

# Concepts Kubernetes pour les nœuds hybrides
<a name="hybrid-nodes-concepts-kubernetes"></a>

Cette page détaille les concepts clés de Kubernetes qui sous-tendent l’architecture système des nœuds hybrides EKS.

## Plan de contrôle EKS dans le VPC
<a name="hybrid-nodes-concepts-k8s-api"></a>

Les adresses IP des ENI du plan de contrôle EKS sont stockées dans l’objet `kubernetes` `Endpoints` dans l’espace de noms `default`. Lorsque EKS crée de nouveaux ENI ou supprime les anciens, EKS met à jour cet objet afin que la liste des adresses IP soit toujours à jour.

Vous pouvez utiliser ces points de terminaison via le service `kubernetes`, également dans l’espace de noms `default`. Ce service, de type `ClusterIP`, se voit toujours attribuer la première adresse IP du CIDR du service du cluster. Par exemple, pour le service CIDR `172.16.0.0/16`, l’adresse IP du service sera `172.16.0.1`.

En général, c’est ainsi que les pods (qu’ils fonctionnent dans le cloud ou sur des nœuds hybrides) accèdent au serveur API EKS Kubernetes. Les pods utilisent l’adresse IP du service comme adresse IP de destination, qui est traduite en adresses IP réelles de l’une des ENI du plan de contrôle EKS. La principale exception est `kube-proxy`, car elle configure la traduction.

## point de terminaison de serveur d’API E
<a name="hybrid-nodes-concepts-k8s-eks-api"></a>

L’adresse IP du service `kubernetes` n’est pas le seul moyen d’accéder au serveur API EKS. EKS crée également un nom DNS Route53 lorsque vous créez votre cluster. Il s’agit du champ `endpoint` de votre cluster EKS lorsque vous appelez l’action API `DescribeCluster` EKS.

```
{
    "cluster": {
        "endpoint": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com",
        "name": "my-cluster",
        "status": "ACTIVE"
    }
}
```

Dans un cluster d’accès aux points de terminaison publics ou d’accès aux points de terminaison publics et privés, vos nœuds hybrides résoudront ce nom DNS en une adresse IP publique par défaut, routable via Internet. Dans un cluster d’accès aux points de terminaison privés, le nom DNS est résolu en adresses IP privées des ENI du plan de contrôle EKS.

Voici comment le `kubelet` et `kube-proxy` accèdent au serveur API Kubernetes. Si vous souhaitez que tout le trafic de votre cluster Kubernetes passe par le VPC, vous devez soit configurer votre cluster en mode d’accès privé, soit modifier votre serveur DNS sur site afin de résoudre le point de terminaison du cluster EKS vers les adresses IP privées des ENI du plan de contrôle EKS.

## Point de terminaison `kubelet`
<a name="hybrid-nodes-concepts-k8s-kubelet-api"></a>

Le `kubelet` expose plusieurs points de terminaison REST, permettant à d’autres parties du système d’interagir avec chaque nœud et d’y recueillir des informations. Dans la plupart des clusters, la majorité du trafic vers le serveur `kubelet` provient du plan de contrôle, mais certains agents de surveillance peuvent également interagir avec lui.

Grâce à cette interface, le `kubelet` gère diverses requêtes : récupération des journaux (`kubectl logs`), exécution de commandes à l’intérieur des conteneurs (`kubectl exec`) et redirection du trafic (`kubectl port-forward`). Chacune de ces requêtes interagit avec l’exécution de conteneur sous-jacent via `kubelet`, ce qui semble transparent pour les administrateurs de cluster et les développeurs.

Le serveur d’API Kubernetes est le serveur d’API Kubernetes. Lorsque vous utilisez l’une des commandes `kubectl` mentionnées précédemment, `kubectl` envoie une requête API au serveur API, qui appelle ensuite l’API `kubelet` du nœud sur lequel le pod est exécuté. C’est la principale raison pour laquelle l’adresse IP du nœud doit être accessible depuis le plan de contrôle EKS et pourquoi, même si vos pods sont en cours d’exécution, vous ne pourrez pas accéder à leurs journaux ou à `exec` si la route du nœud est mal configurée.

 **IP des nœuds** 

Lorsque le plan de contrôle EKS communique avec un nœud, il utilise l’une des adresses indiquées dans l’état de l’objet `Node` (`status.addresses`).

Avec les nœuds cloud EKS, il est courant que le kubelet signale l’adresse IP privée de l’instance EC2 comme une `InternalIP` lors de l’enregistrement du nœud. Cette adresse IP est ensuite validée par le Cloud Controller Manager (CCM) qui s’assure qu’elle appartient bien à l’instance EC2. De plus, le CCM ajoute généralement les adresses IP publiques (comme `ExternalIP`) et les noms DNS (`InternalDNS` et `ExternalDNS`) de l’instance au statut du nœud.

Cependant, il n’existe pas de CCM pour les nœuds hybrides. Lorsque vous enregistrez un nœud hybride avec la CLI des nœuds hybrides EKS (`nodeadm`), celle-ci configure le kubelet pour qu’il signale l’adresse IP de votre machine directement dans l’état du nœud, sans passer par le CCM.

```
apiVersion: v1
kind: Node
metadata:
  name: my-node-1
spec:
  providerID: eks-hybrid:///us-west-2/my-cluster/my-node-1
status:
  addresses:
  - address: 10.1.1.236
    type: InternalIP
  - address: my-node-1
    type: Hostname
```

Si votre machine dispose de plusieurs adresses IP, le kubelet en sélectionnera une selon sa propre logique. Vous pouvez contrôler l’adresse IP sélectionnée à l’aide du drapeau `--node-ip`, que vous pouvez passer dans la configuration `nodeadm` dans `spec.kubelet.flags`. Seule l’adresse IP indiquée dans l’objet `Node` nécessite une route depuis le VPC. Vos machines peuvent avoir d’autres adresses IP qui ne sont pas accessibles depuis le cloud.

## `kube-proxy`
<a name="hybrid-nodes-concepts-k8s-kube-proxy"></a>

 `kube-proxy` est responsable de la mise en œuvre de l’abstraction du service au niveau de la couche réseau de chaque nœud. Il agit comme un proxy réseau et un équilibreur de charge pour le trafic destiné aux services Kubernetes. En surveillant en permanence le serveur API Kubernetes pour détecter les changements liés aux services et aux points de terminaison, `kube-proxy` met à jour de manière dynamique les règles de réseau de l’hôte sous-jacent afin de garantir que le trafic est correctement acheminé.

En mode `iptables`, `kube-proxy` programme plusieurs chaînes `netfilter` pour gérer le trafic de service. Les règles forment la hiérarchie suivante :

1.  **Chaîne KUBE-SERVICES** : point d’entrée pour tout le trafic de services. Il comporte des règles correspondant à chaque `ClusterIP` et port du service.

1.  **Chaînes KUBE-SVC-XXX** : les chaînes spécifiques à un service disposent de règles d’équilibrage de charge pour chaque service.

1.  **Chaînes KUBE-SEP-XXX** : les chaînes spécifiques aux points de terminaison contiennent les règles `DNAT` effectives.

Examinons ce qui se passe pour un service `test-server` dans l’espace de noms `default` : \$1 Service ClusterIP : `172.16.31.14` \$1 Port du service : `80` \$1 Pods de sauvegarde : `10.2.0.110`, `10.2.1.39`, et `10.2.2.254` 

Lorsque nous inspectons les règles `iptables` (à l’aide de `iptables-save 0 grep -A10 KUBE-SERVICES`) :

1. Dans la chaîne **KUBE-SERVICES**, nous trouvons une règle correspondant au service :

   ```
   -A KUBE-SERVICES -d 172.16.31.14/32 -p tcp -m comment --comment "default/test-server cluster IP" -m tcp --dport 80 -j KUBE-SVC-XYZABC123456
   ```
   + Cette règle correspond aux paquets destinés à 172.16.31.14:80
   + Le commentaire indique à quoi sert cette règle : `default/test-server cluster IP` 
   + Les paquets correspondants passent à la chaîne `KUBE-SVC-XYZABC123456`

1. La chaîne **KUBE-SVC-XYZABC123456** dispose de règles d’équilibrage de charge basées sur la probabilité :

   ```
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-POD1XYZABC
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-POD2XYZABC
   -A KUBE-SVC-XYZABC123456 -j KUBE-SEP-POD3XYZABC
   ```
   + Première règle : 33,3 % de chances de passer à `KUBE-SEP-POD1XYZABC` 
   + Deuxième règle : 50 % de chances que le trafic restant (33,3 % du total) passe à `KUBE-SEP-POD2XYZABC` 
   + Dernière règle : tout le trafic restant (33,3 % du total) passe à `KUBE-SEP-POD3XYZABC` 

1. Les chaînes **KUBE-SEP-XXX** individuelles exécutent le DNAT (Destination NAT) :

   ```
   -A KUBE-SEP-POD1XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.0.110:80
   -A KUBE-SEP-POD2XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.1.39:80
   -A KUBE-SEP-POD3XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.2.254:80
   ```
   + Ces règles DNAT réécrivent l’adresse IP et le port de destination afin de diriger le trafic vers des pods spécifiques.
   + Chaque règle gère environ 33,3 % du trafic, assurant ainsi un équilibrage de charge uniforme entre `10.2.0.110`, `10.2.1.39` et `10.2.2.254`.

Cette structure en chaîne à plusieurs niveaux permet à `kube-proxy` de mettre en œuvre efficacement l’équilibrage de charge et la redirection des services grâce à la manipulation des paquets au niveau du noyau, sans nécessiter de processus proxy dans le chemin de données.

### Impact sur les opérations Kubernetes
<a name="hybrid-nodes-concepts-k8s-operations"></a>

Une `kube-proxy` rompu sur un nœud empêche ce dernier d’acheminer correctement le trafic du service, ce qui entraîne des délais d’attente ou des échecs de connexion pour les pods qui dépendent des services du cluster. Cela peut être particulièrement perturbant lors de la première inscription d’un nœud. Le CNI doit communiquer avec le serveur API Kubernetes pour obtenir des informations, telles que le CIDR du pod du nœud, avant de pouvoir configurer le réseau des pods. Pour ce faire, il utilise l’adresse IP du service `kubernetes`. Cependant, si `kube-proxy` n’a pas pu démarrer ou n’a pas réussi à définir les règles `iptables` appropriées, les requêtes envoyées à l’adresse IP du service `kubernetes` ne sont pas traduites en adresses IP réelles des ENI du plan de contrôle EKS. En conséquence, le CNI entrera dans une boucle de crash et aucun des pods ne pourra fonctionner correctement.

Nous savons que les pods utilisent l’adresse IP `kubernetes` du service pour communiquer avec le serveur API Kubernetes, mais il faut d’abord que `kube-proxy` définisse des règles `iptables` pour que cela fonctionne.

Comment `kube-proxy` communique-t-il avec le serveur API ?

Le `kube-proxy` doit être configuré pour utiliser les adresses IP réelles du serveur API Kubernetes ou un nom DNS qui les résout. Dans le cas d’EKS, EKS configure la valeur `kube-proxy` par défaut pour pointer vers le nom DNS Route53 créé par EKS lors de la création du cluster. Vous pouvez voir cette valeur dans le `kube-proxy` ConfigMap dans l’espace de noms `kube-system`. Le contenu de ce ConfigMap est un `kubeconfig` qui est injecté dans le pod `kube-proxy`, recherchez donc le champ `clusters0.cluster.server`. Cette valeur correspondra au champ `endpoint` de votre cluster EKS (lorsque vous appelez l’API `DescribeCluster` EKS).

```
apiVersion: v1
data:
  kubeconfig: |-
    kind: Config
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        server: https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com
      name: default
    contexts:
    - context:
        cluster: default
        namespace: default
        user: default
      name: default
    current-context: default
    users:
    - name: default
      user:
        tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
kind: ConfigMap
metadata:
  name: kube-proxy
  namespace: kube-system
```

## CIDR de pods distants routables
<a name="hybrid-nodes-concepts-k8s-pod-cidrs"></a>

Cette page [Concepts de mise en réseau pour les nœuds hybrides](hybrid-nodes-concepts-networking.md) détaille les conditions requises pour exécuter des webhooks sur des nœuds hybrides ou pour que les pods exécutés sur des nœuds cloud communiquent avec les pods exécutés sur des nœuds hybrides. La condition essentielle est que le routeur sur site doit savoir quel nœud est responsable d’une adresse IP de pod particulière. Il existe plusieurs façons d’y parvenir, notamment le protocole de passerelle frontière (BGP), les routes statiques et le proxy ARP (Address Resolution Protocol). Ces points sont abordés dans les sections suivantes.

 **Protocole de passerelle frontière (BGP)** 

Si votre CNI le prend en charge (comme Cilium et Calico), vous pouvez utiliser le mode BGP de votre CNI pour propager les routes vers vos CIDR de pod par nœud depuis vos nœuds vers votre routeur local. Lorsque vous utilisez le mode BGP du CNI, votre CNI agit comme un routeur virtuel, de sorte que votre routeur local considère que le CIDR du pod appartient à un sous-réseau différent et que votre nœud est la passerelle vers ce sous-réseau.

![\[Routage BGP des nœuds hybrides\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-bgp.png)


 **Routes statiques** 

Vous pouvez également configurer des routes statiques dans votre routeur local. Il s’agit de la méthode la plus simple pour acheminer le CIDR du pod sur site vers votre VPC, mais c’est aussi la plus sujette aux erreurs et la plus difficile à maintenir. Vous devez vous assurer que les routes sont toujours à jour avec les nœuds existants et leurs CIDR de pod attribués. Si votre nombre de nœuds est faible et que votre infrastructure est statique, cette option est viable et élimine le besoin d’une prise en charge BGP dans votre routeur. Si vous optez pour cette solution, nous vous recommandons de configurer votre CNI avec la tranche CIDR du pod que vous souhaitez attribuer à chaque nœud, plutôt que de laisser son IPAM décider.

![\[Routage statique des nœuds hybrides\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-static-routes.png)


 **Proxy ARP (Address Resolution Protocol)** 

Le proxy ARP est une autre approche permettant de rendre routables les adresses IP des pods sur site, particulièrement utile lorsque vos nœuds hybrides se trouvent sur le même réseau de couche 2 que votre routeur local. Lorsque le proxy ARP est activé, un nœud répond aux requêtes ARP pour les adresses IP des pods qu’il héberge, même si ces adresses IP appartiennent à un sous-réseau différent.

Lorsqu’un appareil de votre réseau local tente d’atteindre une adresse IP de pod, il envoie d’abord une requête ARP demandant « Qui possède cette adresse IP ? ». Le nœud hybride hébergeant ce pod répondra avec sa propre adresse MAC, indiquant « Je peux gérer le trafic pour cette adresse IP ». Cela crée un chemin direct entre les appareils de votre réseau local et les pods sans nécessiter de configuration du routeur.

Pour que cela fonctionne, votre CNI doit prendre en charge la fonctionnalité ARP proxy. Cilium dispose d’un support intégré pour le proxy ARP que vous pouvez activer via la configuration. Le point essentiel à prendre en compte est que le CIDR du pod ne doit pas chevaucher aucun autre réseau de votre environnement, car cela pourrait entraîner des conflits de routage.

Cette approche présente plusieurs avantages : \$1 Pas besoin de configurer votre routeur avec BGP ou de maintenir des routes statiques \$1 Fonctionne bien dans les environnements où vous n’avez pas le contrôle sur la configuration de votre routeur

![\[Nœuds hybrides (ARP), proxy\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-arp-proxy.png)


## Encapsulation de pod à pod
<a name="hybrid-nodes-concepts-k8s-pod-encapsulation"></a>

Dans les environnements sur site, les CNI utilisent généralement des protocoles d’encapsulation pour créer des réseaux superposés qui peuvent fonctionner au-dessus du réseau physique sans qu’il soit nécessaire de le reconfigurer. Cette section explique comment fonctionne cette encapsulation. Veuillez noter que certains détails peuvent varier en fonction du CNI que vous utilisez.

L’encapsulation consiste à envelopper les paquets réseau du pod d’origine dans un autre paquet réseau qui peut être acheminé via le réseau physique sous-jacent. Cela permet aux pods de communiquer entre les nœuds exécutant le même CNI sans que le réseau physique ait besoin de savoir comment acheminer ces CIDR de pod.

Le protocole d’encapsulation le plus couramment utilisé avec Kubernetes est le Virtual Extensible LAN (VXLAN), mais d’autres protocoles (tels que `Geneve`) sont également disponibles en fonction de votre CNI.

### Encapsulation VXLAN
<a name="_vxlan_encapsulation"></a>

VXLAN encapsule les trames Ethernet de couche 2 dans des paquets UDP. Lorsqu’un pod envoie du trafic à un autre pod sur un nœud différent, le CNI effectue les opérations suivantes :

1. Le CNI intercepte les paquets provenant du Pod A.

1. Le CNI encapsule le paquet d’origine dans un en-tête VXLAN.

1. Ce paquet encapsulé est ensuite envoyé via la pile réseau standard du nœud vers le nœud de destination.

1. Le CNI sur le nœud de destination déballe le paquet et le transmet au Pod B

Voici ce qui arrive à la structure du paquet lors de l’encapsulation VXLAN :

Paquet original de pod à pod :

```
+-----------------+---------------+-------------+-----------------+
| Ethernet Header | IP Header     | TCP/UDP     | Payload         |
| Src: Pod A MAC  | Src: Pod A IP | Src Port    |                 |
| Dst: Pod B MAC  | Dst: Pod B IP | Dst Port    |                 |
+-----------------+---------------+-------------+-----------------+
```

Après l’encapsulation VXLAN :

```
+-----------------+-------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP    | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node A MAC | Src: Node A | Src: Random  | VNI: xx    | Packet (unchanged         |
| Dst: Node B MAC | Dst: Node B | Dst: 4789    |            | from above)               |
+-----------------+-------------+--------------+------------+---------------------------+
```

L’identifiant réseau VXLAN (VNI) permet de distinguer les différents réseaux superposés.

### Scénarios de communication de pod
<a name="_pod_communication_scenarios"></a>

 **Pods sur le même nœud hybride** 

Lorsque des pods sur le même nœud hybride communiquent, aucune encapsulation n’est généralement nécessaire. Le CNI configure des routes locales qui dirigent le trafic entre les pods via les interfaces virtuelles internes du nœud :

```
Pod A -> veth0 -> node's bridge/routing table -> veth1 -> Pod B
```

Le paquet ne quitte jamais le nœud et ne nécessite pas d’encapsulation.

 **Pods sur différents nœuds hybrides** 

La communication entre les pods sur différents nœuds hybrides nécessite une encapsulation :

```
Pod A -> CNI -> [VXLAN encapsulation] -> Node A network -> router or gateway -> Node B network -> [VXLAN decapsulation] -> CNI -> Pod B
```

Cela permet au trafic des pods de traverser l’infrastructure réseau physique sans que celle-ci ait besoin de comprendre le routage IP des pods.

# Flux de trafic réseau pour les nœuds hybrides
<a name="hybrid-nodes-concepts-traffic-flows"></a>

Cette page détaille les flux de trafic réseau pour les nœuds hybrides EKS avec des diagrammes montrant les chemins end-to-end réseau pour les différents types de trafic.

Les flux de trafic suivants sont couverts :
+  [Nœud hybride `kubelet` vers plan de contrôle EKS](#hybrid-nodes-concepts-traffic-flows-kubelet-to-cp) 
+  [Plan de contrôle EKS vers nœud hybride (serveur `kubelet`)](#hybrid-nodes-concepts-traffic-flows-cp-to-kubelet) 
+  [Pods exécutés sur des nœuds hybrides vers le plan de contrôle EKS](#hybrid-nodes-concepts-traffic-flows-pods-to-cp) 
+  [Plan de contrôle EKS pour les pods exécutés sur un nœud hybride (webhooks)](#hybrid-nodes-concepts-traffic-flows-cp-to-pod) 
+  [Pod-to-Pod exécution sur des nœuds hybrides](#hybrid-nodes-concepts-traffic-flows-pod-to-pod) 
+  [Des pods sur des nœuds cloud vers des pods sur des nœuds hybrides (trafic est-ouest)](#hybrid-nodes-concepts-traffic-flows-east-west) 

## Nœud hybride `kubelet` vers plan de contrôle EKS
<a name="hybrid-nodes-concepts-traffic-flows-kubelet-to-cp"></a>

![\[Nœud hybride kubelet vers plan de contrôle EKS\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-kubelet-to-cp-public.png)


### Demande
<a name="_request"></a>

 **1`kubelet`. Lance une demande** 

Lorsque `kubelet` sur un nœud hybride doit communiquer avec le plan de contrôle EKS (par exemple, pour signaler l’état du nœud ou obtenir les spécifications du pod), il utilise le `kubeconfig` fourni lors de l’enregistrement du nœud. Ce `kubeconfig` possède l’URL du point de terminaison du serveur API (le nom DNS Route53) plutôt que d’adresses IP directes.

Le `kubelet` effectue une recherche DNS pour le point de terminaison (par exemple, `https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com`). Dans un cluster à accès public, cela se résout en une adresse IP publique (par exemple `54.239.118.52`) qui appartient au service EKS s’exécutant dans AWS. Le `kubelet` crée ensuite une requête HTTPS sécurisée vers ce point de terminaison. Le paquet initial ressemble à ceci :

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 10.80.0.2     | Src: 52390 (random) |                 |
| Dst: 54.239.118.52 | Dst: 443            |                 |
+--------------------+---------------------+-----------------+
```

 **2. Routage du routeur local** 

Étant donné que l’adresse IP de destination est une adresse IP publique et ne fait pas partie du réseau sur site, le `kubelet` envoie ce paquet à sa passerelle par défaut (le routeur local sur site). Le routeur examine l’adresse IP de destination et détermine qu’il s’agit d’une adresse IP publique.

Pour le trafic public, le routeur transfère généralement le paquet vers une passerelle Internet ou un routeur frontalier qui gère le trafic sortant vers Internet. Ceci n’apparaît pas dans le schéma et dépendra de la configuration de votre réseau sur site. Le paquet traverse votre infrastructure réseau sur site et atteint finalement le réseau de votre fournisseur d’accès Internet.

 **3. Livraison au plan de commande EKS** 

Le paquet traverse l'Internet public et les réseaux de transit jusqu'à ce qu' AWS il atteigne le réseau. AWS le réseau achemine le paquet vers le point de terminaison du service EKS dans la région appropriée. Lorsque le paquet atteint le service EKS, il est transféré vers le plan de contrôle EKS réel de votre cluster.

Ce routage via l’Internet public est différent du chemin privé routé par VPC que nous verrons dans d’autres flux de trafic. La principale différence réside dans le fait que, lorsque vous utilisez le mode d’accès public, le trafic provenant des `kubelet` locales (mais pas des pods) vers le plan de contrôle EKS ne passe pas par votre VPC, mais utilise plutôt l’infrastructure Internet mondiale.

### Réponse
<a name="_response"></a>

Une fois que le plan de contrôle EKS a traité la demande `kubelet`, il renvoie une réponse :

 **3. Le plan de contrôle EKS envoie une réponse** 

Le plan de contrôle EKS crée un paquet de réponse. Ce paquet a l’adresse IP publique comme source et l’adresse IP du nœud hybride comme destination :

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 54.239.118.52 | Src: 443            |                 |
| Dst: 10.80.0.2     | Dst: 52390          |                 |
+--------------------+---------------------+-----------------+
```

 **2. Routage Internet** 

Le paquet de réponse retourne sur Internet, en suivant le chemin de routage déterminé par les fournisseurs d’accès Internet, jusqu’à ce qu’il atteigne le routeur périphérique de votre réseau sur site.

 **1. Livraison locale** 

Votre routeur local reçoit le paquet et reconnaît que l’adresse IP de destination (`10.80.0.2`) appartient à votre réseau sur site. Il transmet le paquet via votre infrastructure réseau locale jusqu’à ce qu’il atteigne le nœud hybride cible, où `kubelet` reçoit et traite la réponse.

## Nœud hybride `kube-proxy` vers plan de contrôle EKS
<a name="_hybrid_node_kube_proxy_to_eks_control_plane"></a>

Si vous activez l’accès public aux points de terminaison pour le cluster, le trafic de retour utilise l’Internet public. Ce trafic provient du `kube-proxy` sur le nœud hybride vers le plan de contrôle EKS et suit le même chemin que le trafic provenant du `kubelet` vers le plan de contrôle EKS.

## Plan de contrôle EKS vers nœud hybride (serveur `kubelet`)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-kubelet"></a>

![\[Plan de contrôle EKS vers nœud hybride\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-cp-to-kubelet.png)


### Demande
<a name="_request_2"></a>

 **1. Le serveur d’API EKS Kubernetes lance une demande** 

Le serveur API EKS Kubernetes extrait l’adresse IP du nœud (`10.80.0.2`) à partir de l’état de l’objet nœud. Il achemine ensuite cette demande via son ENI dans le VPC, car l’adresse IP de destination appartient au nœud distant configuré CIDR (`10.80.0.0/16`). Le paquet initial ressemble à ceci :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 67493 (random) |                 |
| Dst: 10.80.0.2  | Dst: 10250          |                 |
+-----------------+---------------------+-----------------+
```

 **2. Traitement réseau VPC** 

Le paquet quitte l’ENI et entre dans la couche réseau VPC, où il est dirigé vers la passerelle du sous-réseau pour un routage supplémentaire.

 **3. Recherche dans une table de routage VPC** 

La table de routage VPC pour le sous-réseau contenant l’ENI du plan de contrôle EKS dispose d’un itinéraire spécifique (le deuxième dans le diagramme) pour le CIDR du nœud distant. Sur la base de cette règle de routage, le paquet est dirigé vers la VPC-to-onprem passerelle.

 **4. Transit transfrontalier** 

La passerelle transfère le paquet à travers la limite du cloud via votre connexion établie (telle que Direct Connect ou VPN) vers votre réseau sur site.

 **5. Réception réseau sur site** 

Le paquet arrive à votre routeur local sur site qui gère le trafic pour le sous-réseau où se trouvent vos nœuds hybrides.

 **6. Livraison finale** 

Le routeur local identifie que l’adresse IP (`10.80.0.2`) de destination appartient à son réseau directement connecté et transfère le paquet directement au nœud hybride cible, où le `kubelet` reçoit et traite la requête.

### Réponse
<a name="_response_2"></a>

Une fois que le nœud hybride `kubelet` a traité la demande, il renvoie une réponse en suivant le même chemin en sens inverse :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 10250          |                 |
| Dst: 10.0.0.132 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **6. `kubelet` Envoie une réponse** 

`kubelet`Le nœud hybride (`10.80.0.2`) crée un paquet de réponse avec l’adresse IP source d’origine comme destination. La destination n’appartenant pas au réseau local, elle est envoyée à la passerelle par défaut de l’hôte, qui est le routeur local.

 **5. Routage du routeur local** 

Le routeur détermine que l’adresse IP de destination (`10.0.0.132`) appartient à `10.0.0.0/16`, qui dispose d’une route pointant vers la passerelle connectée à AWS.

 **4. Retour transfrontalier** 

Le paquet retourne par la même connexion locale vers VPC (telle que Direct Connect ou VPN), franchissant la limite du cloud dans le sens inverse.

 **3. Routage VPC** 

Lorsque le paquet arrive dans le VPC, les tables de routage identifient que l’adresse IP de destination appartient à un CIDR VPC. Les acheminements de paquets au sein du VPC.

 **2. Livraison de réseaux VPC** 

La couche réseau VPC transmet le paquet au sous-réseau avec le plan de contrôle EKS ENI (`10.0.0.132`).

 **1. Réception ENI** 

Le paquet atteint le plan de contrôle EKS ENI connecté au serveur API Kubernetes, achevant ainsi son aller-retour.

## Pods exécutés sur des nœuds hybrides vers le plan de contrôle EKS
<a name="hybrid-nodes-concepts-traffic-flows-pods-to-cp"></a>

![\[Pods exécutés sur des nœuds hybrides vers le plan de contrôle EKS\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-pod-to-cp.png)


### Sans CNI NAT
<a name="_without_cni_nat"></a>

### Demande
<a name="_request_3"></a>

Les pods communiquent généralement avec le serveur API Kubernetes via le service `kubernetes`. L’adresse IP du service est la première adresse IP du service CIDR du cluster. Cette convention permet aux pods qui doivent s’exécuter avant que CoreDNS soit disponible d’accéder au serveur API, par exemple le CNI. Les demandes quittent le pod avec l’adresse IP du service comme destination. Par exemple, si le CIDR du service est `172.16.0.0/16`, l’adresse IP du service sera `172.16.0.1`.

 **1. Le module lance une demande** 

Le pod envoie une requête à l’adresse IP `kubernetes` du service ()`172.16.0.1` sur le port (443) du serveur API à partir d’un port source aléatoire. Le paquet se présente comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. Traitement CNI** 

Le CNI détecte que l’adresse IP de destination n’appartient à aucun des pods CIDR qu’il gère. Comme le **NAT sortant est désactivé**, le CNI transmet le paquet à la pile réseau hôte sans le modifier.

 **3. Traitement du réseau de nœuds** 

Le paquet entre dans la pile réseau du nœud où des hooks `netfilter` déclenchent les règles `iptables` définies par kube-proxy. Plusieurs règles s’appliquent dans l’ordre suivant :

1. Le paquet atteint d’abord la chaîne `KUBE-SERVICES`, qui contient les règles correspondant à l’adresse IP du cluster et au port de chaque service.

1. La règle de correspondance passe à la chaîne `KUBE-SVC-XXX` pour le service `kubernetes` (paquets destinés à `172.16.0.1:443`), qui contient les règles d’équilibrage de charge.

1. La règle d'équilibrage de charge sélectionne aléatoirement l'une des `KUBE-SEP-XXX` chaînes pour le plan de commande ENI IPs (`10.0.0.132`or`10.0.1.23`).

1. La chaîne `KUBE-SEP-XXX` sélectionnée possède la règle réelle qui change l’adresse IP de destination de l’adresse IP du service à l’adresse IP sélectionnée. C’est ce qu’on appelle la traduction d’adresses réseau de destination (DNAT).

Une fois ces règles appliquées, en supposant que l’adresse IP de l’ENI du plan de contrôle EKS sélectionné soit `10.0.0.132`, le paquet se présente comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Le nœud transmet le paquet à sa passerelle par défaut car l’adresse IP de destination ne se trouve pas sur le réseau local.

 **4. Routage du routeur local** 

Le routeur local détermine que l’adresse IP de destination (`10.0.0.132`) appartient au CIDR VPC (`10.0.0.0/16`) et la transfère vers la passerelle connectée à AWS.

 **5. Transit transfrontalier** 

Le paquet passe par votre connexion établie (telle que Direct Connect ou VPN) à travers la limite du cloud jusqu’au VPC.

 **6. Livraison de réseaux VPC** 

La couche réseau VPC achemine le paquet vers le sous-réseau approprié où se trouve l’ENI (`10.0.0.132`) du plan de contrôle EKS.

 **7. Réception ENI** 

Le paquet atteint le plan de contrôle EKS ENI attaché au serveur d’API Kubernetes.

### Réponse
<a name="_response_3"></a>

Une fois que le plan de contrôle EKS a traité la demande, il renvoie une réponse au pod :

 **7. Le serveur API envoie une réponse** 

Le serveur d’API EKS Kubernetes crée un paquet de réponse avec l’adresse IP source d’origine comme destination. Le paquet se présente comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Comme l’adresse IP de destination appartient au pod distant CIDR (`10.85.0.0/16`) configuré, il l’envoie via son ENI dans le VPC avec le routeur du sous-réseau comme saut suivant.

 **6. Routage VPC** 

La table de routage VPC contient une entrée pour le pod distant CIDR (`10.85.0.0/16`), qui dirige ce trafic vers la passerelle. VPC-to-onprem

 **5. Transit transfrontalier** 

La passerelle transfère le paquet à travers la limite du cloud via votre connexion établie (telle que Direct Connect ou VPN) vers votre réseau sur site.

 **4. Réception réseau sur site** 

Le paquet arrive à votre routeur local sur site.

 **3. Livraison au nœud** 

La table du routeur contient une entrée pour `10.85.1.0/24` avec `10.80.0.2` comme prochain saut, livrant le paquet à notre nœud.

 **2. Traitement du réseau de nœuds** 

Lorsque le paquet est traité par la pile réseau du nœud, `conntrack` (une partie de `netfilter`) correspond au paquet avec la connexion initialement établie par le pod. Depuis l’application initiale du DNAT, `conntrack` inverse le DNAT en réécrivant l’adresse IP source de l’ENI du plan de contrôle EKS vers l’adresse IP `kubernetes` du service :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. Traitement CNI** 

Le CNI identifie que l’adresse IP de destination appartient à un pod de son réseau et achemine le paquet vers l’espace de noms réseau du pod approprié.

Ce flux montre pourquoi Remote Pod CIDRs doit être correctement routable depuis le VPC jusqu'au nœud spécifique hébergeant chaque pod. Le chemin de retour complet dépend du routage correct du pod sur les réseaux cloud et IPs sur site.

### Avec CNI NAT
<a name="_with_cni_nat"></a>

Ce flux est très similaire à celui *sans CNI NAT*, mais avec une différence essentielle : le CNI applique le NAT source (SNAT) au paquet avant de l’envoyer à la pile réseau du nœud. Cela modifie l’adresse IP source du paquet pour la remplacer par l’adresse IP du nœud, ce qui permet au paquet d’être renvoyé vers le nœud sans nécessiter de configuration de routage supplémentaire.

### Demande
<a name="_request_4"></a>

 **1. Le module lance une demande** 

Le pod envoie une requête à l’adresse IP `kubernetes` du service ()`172.16.0.1` sur le port (443) du serveur API EKS Kubernetes à partir d’un port source aléatoire. Le paquet se présente comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. Traitement CNI** 

Le CNI détecte que l’adresse IP de destination n’appartient à aucun des pods CIDR qu’il gère. Comme le **NAT sortant est activé**, le CNI applique le SNAT au paquet, en remplaçant l’adresse IP source par celle du nœud avant de le transmettre à la pile réseau du nœud :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Remarque : CNI et CNI `iptables` sont présentés dans l'exemple sous forme de blocs séparés pour plus de clarté, mais dans la pratique, il est possible que certains CNIs utilisent le NAT `iptables` pour appliquer le NAT.

 **3. Traitement du réseau de nœuds** 

Ici, les `iptables` règles définies par `kube-proxy` se comportent de la même manière que dans l'exemple précédent, en équilibrant la charge du paquet sur l'un des plans de contrôle EKS ENIs. Le paquet se présente maintenant comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Le nœud transmet le paquet à sa passerelle par défaut car l’adresse IP de destination ne se trouve pas sur le réseau local.

 **4. Routage du routeur local** 

Le routeur local détermine que l’adresse IP de destination (`10.0.0.132`) appartient au CIDR VPC (`10.0.0.0/16`) et la transfère vers la passerelle connectée à AWS.

 **5. Transit transfrontalier** 

Le paquet passe par votre connexion établie (telle que Direct Connect ou VPN) à travers la limite du cloud jusqu’au VPC.

 **6. Livraison de réseaux VPC** 

La couche réseau VPC achemine le paquet vers le sous-réseau approprié où se trouve l’ENI (`10.0.0.132`) du plan de contrôle EKS.

 **7. Réception ENI** 

Le paquet atteint le plan de contrôle EKS ENI attaché au serveur d’API Kubernetes.

### Réponse
<a name="_response_4"></a>

Une fois que le plan de contrôle EKS a traité la demande, il renvoie une réponse au pod :

 **7. Le serveur API envoie une réponse** 

Le serveur d’API EKS Kubernetes crée un paquet de réponse avec l’adresse IP source d’origine comme destination. Le paquet se présente comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Comme l’adresse IP de destination appartient au nœud distant CIDR (`10.80.0.0/16`) configuré, il l’envoie via son ENI dans le VPC avec le routeur du sous-réseau comme saut suivant.

 **6. Routage VPC** 

La table de routage VPC contient une entrée pour le nœud distant CIDR (`10.80.0.0/16`), qui dirige ce trafic vers la passerelle. VPC-to-onprem

 **5. Transit transfrontalier** 

La passerelle transfère le paquet à travers la limite du cloud via votre connexion établie (telle que Direct Connect ou VPN) vers votre réseau sur site.

 **4. Réception réseau sur site** 

Le paquet arrive à votre routeur local sur site.

 **3. Livraison au nœud** 

Le routeur local identifie que l’adresse IP (`10.80.0.2`) de destination appartient à son réseau directement connecté et transfère le paquet directement au nœud hybride cible.

 **2. Traitement du réseau de nœuds** 

Lorsque le paquet est traité par la pile réseau du nœud, `conntrack` (une partie de `netfilter`) correspond au paquet avec la connexion initialement établie par le pod et, comme le DNAT a été appliqué à l’origine, il inverse cette opération en réécrivant l’adresse IP source de l’ENI du plan de contrôle EKS vers l’adresse IP du service `kubernetes` :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. Traitement CNI** 

Le CNI identifie que ce paquet appartient à une connexion à laquelle il a précédemment appliqué le SNAT. Il inverse le SNAT, remplaçant l’adresse IP de destination par l’adresse IP du pod :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Le CNI détecte que l’adresse IP de destination appartient à un pod de son réseau et achemine le paquet vers l’espace de noms réseau du pod approprié.

Ce flux montre comment CNI Nat-ing peut simplifier la configuration en permettant le renvoi des paquets vers le nœud sans nécessiter de routage supplémentaire pour le pod. CIDRs

## Plan de contrôle EKS pour les pods exécutés sur un nœud hybride (webhooks)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-pod"></a>

![\[Plan de contrôle EKS pour les pods exécutés sur un nœud hybride\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-cp-to-pod.png)


Ce modèle de trafic est le plus souvent observé avec les webhooks, où le plan de contrôle EKS doit initier directement des connexions vers les serveurs webhooks s’exécutant dans des pods sur des nœuds hybrides. Parmi les exemples, citons la validation et la mutation des webhooks d’admission, qui sont appelés par le serveur API pendant les processus de validation ou de mutation des ressources.

### Demande
<a name="_request_5"></a>

 **1. Le serveur d’API EKS Kubernetes lance une demande** 

Lorsqu’un webhook est configuré dans le cluster et qu’une opération API pertinente le déclenche, le serveur API EKS Kubernetes doit établir une connexion directe avec le pod du serveur webhook. Le serveur API recherche d’abord l’adresse IP du pod à partir de la ressource Service ou Endpoint associée au webhook.

En supposant que le pod webhook s’exécute sur un nœud hybride avec l’adresse IP `10.85.1.23`, le serveur API Kubernetes EKS crée une requête HTTPS vers le point de terminaison webhook. Le paquet initial est envoyé via l’ENI du plan de contrôle EKS dans votre VPC, car l’adresse IP de destination `10.85.1.23` appartient au CIDR du pod distant configuré (`10.85.0.0/16`). Le paquet se présente comme suit :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 41892 (random) |                 |
| Dst: 10.85.1.23 | Dst: 8443           |                 |
+-----------------+---------------------+-----------------+
```

 **2. Traitement réseau VPC** 

Le paquet quitte l’ENI du plan de contrôle EKS et entre dans la couche réseau VPC avec le routeur du sous-réseau comme prochain saut.

 **3. Recherche dans une table de routage VPC** 

La table de routage VPC pour le sous-réseau contenant l’ENI du plan de contrôle EKS contient une route spécifique pour le CIDR du pod distant (`10.85.0.0/16`). Cette règle de routage dirige le paquet vers la VPC-to-onprem passerelle (par exemple, une passerelle privée virtuelle pour les connexions Direct Connect ou VPN) :

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

 **4. Transit transfrontalier** 

La passerelle transfère le paquet à travers la limite du cloud via votre connexion établie (telle que Direct Connect ou VPN) vers votre réseau sur site. Le paquet conserve ses adresses IP source et de destination d’origine lorsqu’il traverse cette connexion.

 **5. Réception réseau sur site** 

Le paquet arrive à votre routeur local sur site. Le routeur consulte sa table de routage pour déterminer comment atteindre l’adresse 10.85.1.23. Pour que cela fonctionne, votre réseau local doit disposer de routes pour le pod CIDRs qui dirigent le trafic vers le nœud hybride approprié.

Dans ce cas, la table de routage du routeur contient une entrée indiquant que le sous-réseau `10.85.1.0/24` est accessible via le nœud hybride avec l’adresse IP `10.80.0.2` :

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **6. Livraison au nœud** 

Sur la base de l’entrée de la table de routage, le routeur transmet le paquet au nœud hybride (`10.80.0.2`). Lorsque le paquet arrive au nœud, il a le même aspect que lorsqu’il a été envoyé par le serveur API EKS Kubernetes, l’adresse IP de destination étant toujours celle du pod.

 **7. Traitement CNI** 

La pile réseau du nœud reçoit le paquet et, constatant que l’adresse IP de destination n’est pas celle du nœud, le transmet au CNI pour traitement. Le CNI identifie que l’adresse IP de destination appartient à un pod s’exécutant localement sur ce nœud et transfère le paquet vers le pod correct via les interfaces virtuelles appropriées :

```
Original packet -> node routing -> CNI -> Pod's network namespace
```

Le serveur Webhook du pod reçoit la demande et la traite.

### Réponse
<a name="_response_5"></a>

Une fois que le pod webhook a traité la requête, il renvoie une réponse en suivant le même chemin en sens inverse :

 **7. Le pod envoie une réponse** 

Le pod webhook crée un paquet de réponse avec sa propre adresse IP comme source et le demandeur d’origine (l’ENI du plan de contrôle EKS) comme destination :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.23 | Src: 8443           |                 |
| Dst: 10.0.0.132 | Dst: 41892          |                 |
+-----------------+---------------------+-----------------+
```

Le CNI identifie que ce paquet est destiné à un réseau externe (et non à un pod local) et le transmet à la pile réseau du nœud en conservant l’adresse IP source d’origine.

 **6. Traitement du réseau de nœuds** 

Le nœud détermine que l’adresse IP de destination (`10.0.0.132`) ne se trouve pas dans le réseau local et transfère le paquet vers sa passerelle par défaut (le routeur local).

 **5. Routage du routeur local** 

Le routeur local consulte sa table de routage et détermine que l’adresse IP de destination (`10.0.0.132`) appartient au CIDR VPC (`10.0.0.0/16`). Il transfère le paquet vers la passerelle connectée à AWS.

 **4. Transit transfrontalier** 

Le paquet retourne par la même connexion locale vers VPC, traversant la limite du cloud dans le sens inverse.

 **3. Routage VPC** 

Lorsque le paquet arrive dans le VPC, les tables de routage identifient que l’adresse IP de destination appartient à un sous-réseau au sein du VPC. Le paquet est acheminé en conséquence au sein du VPC.

 **2. et 1. Plan de commande EKS ENI Receiption** 

Le paquet atteint l’ENI rattaché au serveur API EKS Kubernetes, complétant ainsi l’aller-retour. Le serveur API reçoit la réponse du webhook et continue à traiter la requête API initiale en fonction de cette réponse.

Ce flux de trafic montre pourquoi le module distant CIDRs doit être correctement configuré et routé :
+ Le VPC doit disposer de routes pour le pod distant CIDRs pointant vers la passerelle sur site
+ Votre réseau sur site doit disposer de routes pour les pods CIDRs qui dirigent le trafic vers les nœuds spécifiques hébergeant ces pods
+ Sans cette configuration de routage, les webhooks et autres services similaires s’exécutant dans des pods sur des nœuds hybrides ne seraient pas accessibles depuis le plan de contrôle EKS.

## Pod-to-Pod exécution sur des nœuds hybrides
<a name="hybrid-nodes-concepts-traffic-flows-pod-to-pod"></a>

![\[Pod-to-Pod s’exécutant sur des nœuds hybrides\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-pod-to-pod.png)


Cette section explique comment les pods s’exécutant sur différents nœuds hybrides communiquent entre eux. Cet exemple suppose que votre CNI utilise VXLAN pour l'encapsulation, ce qui est courant pour Cilium CNIs ou Calico. Le processus global est similaire pour d'autres protocoles d'encapsulation tels que Geneve ou. IP-in-IP

### Demande
<a name="_request_6"></a>

 **1. Le pod A initie la communication** 

Le Pod A (`10.85.1.56`) sur le Nœud 1 souhaite envoyer du trafic vers le Pod B (`10.85.2.67`) sur le Nœud 2. Le paquet initial ressemble à ceci :

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

 **2. CNI intercepte et traite le paquet** 

Lorsque le paquet du pod A quitte son espace de noms réseau, le CNI l’intercepte. Le CNI consulte sa table de routage et détermine : – L’adresse IP de destination (`10.85.2.67`) appartient au CIDR du pod – Cette adresse IP ne se trouve pas sur le nœud local, mais appartient au nœud 2 (`10.80.0.3`) – Le paquet doit être encapsulé avec VXLAN.

La décision d'encapsuler est essentielle car le réseau physique sous-jacent ne sait pas comment acheminer CIDRs directement le pod. Il sait uniquement comment acheminer le trafic entre les nœuds IPs.

Le CNI encapsule l’intégralité du paquet d’origine dans une trame VXLAN. Cela crée effectivement un « paquet dans un paquet » avec de nouveaux en-têtes :

```
+-----------------+----------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP       | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node1 MAC  | Src: 10.80.0.2 | Src: Random  | VNI: 42    | Packet (unchanged         |
| Dst: Router MAC | Dst: 10.80.0.3 | Dst: 8472    |            | from above)               |
+-----------------+----------------+--------------+------------+---------------------------+
```

Points clés concernant cette encapsulation : – Le paquet externe est adressé du nœud 1 (`10.80.0.2`) au nœud 2 (`10.80.0.3`) – Le port UDP `8472` est le port VXLAN utilisé par défaut par Cilium – L’identifiant de réseau VXLAN (VNI) identifie le réseau superposé auquel appartient ce paquet – Le paquet d’origine complet (avec l’adresse IP du pod A comme source et l’adresse IP du pod B comme destination) est conservé intact à l’intérieur

Le paquet encapsulé entre alors dans la pile réseau normale du nœud 1 et est traité de la même manière que n’importe quel autre paquet :

1.  **Traitement du réseau de nœuds** : la pile réseau du nœud 1 achemine le paquet en fonction de sa destination (`10.80.0.3`)

1.  **Livraison sur le réseau local** :
   + Si les deux nœuds sont sur le même réseau de couche 2, le paquet est envoyé directement au nœud 2
   + S’ils se trouvent sur des sous-réseaux différents, le paquet est d’abord transféré au routeur local

1.  **Gestion du routeur** : le routeur transmet le paquet en fonction de sa table de routage et le livre au nœud 2

 **3. Traitement des nœuds de réception** 

Lorsque le paquet encapsulé arrive au nœud 2 (`10.80.0.3`) :

1. La pile réseau du nœud le reçoit et l’identifie comme un paquet VXLAN (port UDP `4789`)

1. Le paquet est transmis à l’interface VXLAN du CNI pour traitement

 **4. Décapsulation VXLAN** 

Le CNI sur le nœud 2 traite le paquet VXLAN :

1. Il supprime les en-têtes extérieurs (Ethernet, IP, UDP et VXLAN)

1. Il extrait le paquet intérieur d’origine

1. Le paquet a maintenant retrouvé sa forme d’origine :

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

Le CNI du nœud 2 examine l’adresse IP de destination (`10.85.2.67`) et :

1. Identifie que cette adresse IP appartient à un pod local

1. Achemine le paquet via les interfaces virtuelles appropriées

1. Fournit le paquet à l’espace de noms réseau du Pod B

### Réponse
<a name="_response_6"></a>

Lorsque le Pod B répond au Pod A, l’ensemble du processus se déroule en sens inverse :

1. Le Pod B envoie un paquet au Pod A (`10.85.1.56`)

1. Le CNI du nœud 2 l’encapsule avec VXLAN, en définissant la destination sur le nœud 1 (`10.80.0.2`)

1. Le paquet encapsulé est livré au nœud 1

1. Le CNI du nœud 1 le décapsule et fournit la réponse initiale au module A

## Des pods sur des nœuds cloud vers des pods sur des nœuds hybrides (trafic est-ouest)
<a name="hybrid-nodes-concepts-traffic-flows-east-west"></a>

![\[Des pods sur des nœuds cloud vers des pods sur des nœuds hybrides\]](http://docs.aws.amazon.com/fr_fr/eks/latest/userguide/images/hybrid-nodes-east-west.png)


### Demande
<a name="_request_7"></a>

 **1. Le module A initie la communication** 

Le pod A (`10.0.0.56`) sur le EC2 nœud souhaite envoyer du trafic vers le pod B (`10.85.1.56`) sur le nœud hybride. Le paquet initial ressemble à ceci :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.56  | Src: 52390 (random) |                 |
| Dst: 10.85.1.56 | Dst: 8080           |                 |
+-----------------+---------------------+-----------------+
```

Avec le VPC CNI, le Pod A possède une adresse IP provenant du VPC CIDR et est directement attaché à un ENI sur l'instance. EC2 L’espace de noms réseau du pod est connecté au réseau VPC, de sorte que le paquet entre directement dans l’infrastructure de routage VPC.

 **2. Routage VPC** 

La table de routage VPC contient une route spécifique pour le Remote Pod CIDR (`10.85.0.0/16`), dirigeant ce trafic vers la passerelle : VPC-to-onprem

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

Sur la base de cette règle de routage, le paquet est dirigé vers la passerelle qui se connecte à votre réseau sur site.

 **3. Transit transfrontalier** 

La passerelle transfère le paquet à travers la limite du cloud via votre connexion établie (telle que Direct Connect ou VPN) vers votre réseau sur site. Le paquet conserve ses adresses IP source et destination d’origine tout au long de ce transit.

 **4. Réception réseau sur site** 

Le paquet arrive à votre routeur local sur site. Le routeur consulte sa table de routage pour déterminer le prochain saut permettant d’atteindre l’adresse 10.85.1.56. Votre routeur local doit disposer de routes pour le pod CIDRs qui dirigent le trafic vers le nœud hybride approprié.

La table du routeur contient une entrée indiquant que le sous-réseau `10.85.1.0/24` est accessible via le nœud hybride avec l’adresse IP `10.80.0.2` :

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **5. Traitement du réseau de nœuds** 

Le routeur transmet le paquet au nœud hybride (`10.80.0.2`). Lorsque le paquet arrive au nœud, il a toujours l’adresse IP du pod A comme source et celle du pod B comme destination.

 **6. Traitement CNI** 

La pile réseau du nœud reçoit le paquet et, constatant que l’adresse IP de destination n’est pas la sienne, le transmet au CNI pour traitement. Le CNI identifie que l’adresse IP de destination appartient à un pod s’exécutant localement sur ce nœud et transfère le paquet vers le pod correct via les interfaces virtuelles appropriées :

```
Original packet -> node routing -> CNI -> Pod B's network namespace
```

Le pod B reçoit le paquet et le traite selon les besoins.

### Réponse
<a name="_response_7"></a>

 **6. Le pod B envoie une réponse** 

Le pod B crée un paquet de réponse avec sa propre adresse IP comme source et celle du pod A comme destination :

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 8080           |                 |
| Dst: 10.0.0.56  | Dst: 52390          |                 |
+-----------------+---------------------+-----------------+
```

Le CNI identifie que ce paquet est destiné à un réseau externe et le transmet à la pile réseau du nœud.

 **5. Traitement du réseau de nœuds** 

Le nœud détermine que l’adresse IP de destination (`10.0.0.56`) n’appartient pas au réseau local et transfère le paquet vers sa passerelle par défaut (le routeur local).

 **4. Routage du routeur local** 

Le routeur local consulte sa table de routage et détermine que l’adresse IP de destination (`10.0.0.56`) appartient au CIDR VPC (`10.0.0.0/16`). Il transfère le paquet vers la passerelle connectée à AWS.

 **3. Transit transfrontalier** 

Le paquet retourne par la même connexion locale vers VPC, traversant la limite du cloud dans le sens inverse.

 **2. Routage VPC** 

Lorsque le paquet arrive dans le VPC, le système de routage identifie que l’adresse IP de destination appartient à un sous-réseau au sein du VPC. Le paquet est acheminé via le réseau VPC vers l'instance hébergeant EC2 le Pod A.

 **1. Le pod A reçoit une réponse** 

Le paquet arrive à l' EC2 instance et est livré directement au Pod A via son ENI attaché. Étant donné que le CNI VPC n’utilise pas de réseau superposé pour les pods dans le VPC, aucune décapsulation supplémentaire n’est nécessaire : le paquet arrive avec ses en-têtes d’origine intacts.

Ce flux de trafic est-ouest montre pourquoi le module distant CIDRs doit être correctement configuré et routable dans les deux sens :
+ Le VPC doit disposer de routes pour le pod distant CIDRs pointant vers la passerelle sur site
+ Votre réseau local doit disposer de routes pour les pods CIDRs qui dirigent le trafic vers les nœuds spécifiques hébergeant ces pods.

# Référence des nœuds hybrides `nodeadm`
<a name="hybrid-nodes-nodeadm"></a>

L’interface CLI nœuds hybrides Amazon EKS (`nodeadm`) simplifie l’installation, la configuration, l’enregistrement et la désinstallation des composants des nœuds hybrides. Vous pouvez inclure `nodeadm` dans votre système d’exploitation des images permettant d’automatiser le démarrage des nœuds hybrides. Pour plus d’informations, consultez [Préparer le système d’exploitation pour les nœuds hybrides](hybrid-nodes-os.md).

La `nodeadm` version pour les nœuds hybrides est différente de la `nodeadm` version utilisée pour démarrer les EC2 instances Amazon en tant que nœuds dans des clusters Amazon EKS. Suivez la documentation et les références correspondant à la version `nodeadm` appropriée. Cette page de documentation concerne la version `nodeadm` des nœuds hybrides.

Le code source des nœuds hybrides `nodeadm` est publié dans le référentiel https://github.com/aws/ eks-hybridGitHub .

**Important**  
Vous devez exécuter `nodeadm` avec un utilisateur qui possède root/sudo des privilèges.

## Télécharger `nodeadm`
<a name="_download_nodeadm"></a>

La version des nœuds hybrides de `nodeadm` est hébergée sur Amazon S3, géré par Amazon CloudFront. Pour installer `nodeadm` sur chaque hôte sur site, vous pouvez exécuter la commande suivante à partir de vos hôtes sur site.

 **Pour les hôtes x86\$164** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Pour les hôtes ARM** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Ajoutez les permissions d’exécution au fichier binaire téléchargé sur chaque hôte.

```
chmod +x nodeadm
```

## `nodeadm install`
<a name="_nodeadm_install"></a>

La commande `nodeadm install` permet d’installer les artefacts et les dépendances nécessaires pour exécuter et joindre des nœuds hybrides à un cluster Amazon EKS. La commande `nodeadm install` peut être exécutée individuellement sur chaque nœud hybride ou pendant les pipelines de création d’images afin de préinstaller les dépendances des nœuds hybrides dans les images du système d’exploitation.

 **Utilisation** 

```
nodeadm install [KUBERNETES_VERSION] [flags]
```

 **Arguments positionnels** 

(Obligatoire) `KUBERNETES_VERSION` La version majeure.mineure d’EKS Kubernetes à installer, par exemple `1.32` 

 **Indicateurs** 


| Name | Obligatoire | Description | 
| --- | --- | --- | 
|   `-p`,  `--credential-provider`   |  TRUE  |  Fournisseur d’informations d’identification à installer. Les valeurs prises en charge sont `iam-ra` et `ssm`. Pour plus d’informations, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).  | 
|   `-s`,  `--containerd-source`   |  FALSE  |  Source pour `containerd`. `nodeadm` prend en charge l’installation de `containerd` à partir de la distribution du système d’exploitation, des paquets Docker et le saute l’installation de `containerd`.  **Valeurs**   `distro`- Il s'agit de la valeur par défaut. `nodeadm`installera le dernier `containerd` package distribué par le système d'exploitation du nœud compatible avec la version EKS Kubernetes. `distro`n'est pas une valeur prise en charge pour les systèmes d'exploitation Red Hat Enterprise Linux (RHEL).  `docker`- `nodeadm` installera le dernier `containerd` package créé et distribué par Docker compatible avec la version EKS Kubernetes. `docker`n'est pas une valeur prise en charge pour Amazon Linux 2023.  `none` : `nodeadm` n’installera pas le paquet `containerd`. Vous devez installer `containerd` manuellement avant d’exécuter `nodeadm init`.  | 
|   `-r`,  `--region`   |  FALSE  |  Spécifie la AWS région pour le téléchargement d'artefacts tels que l'agent SSM. La valeur par défaut est `us-west-2` .  | 
|   `-t`,  `--timeout`   |  FALSE  |  Durée maximale de la commande d’installation. La saisie suit le format de durée. Par exemple `1h23m`. Le délai d’expiration par défaut pour le téléchargement de la commande d’installation est fixé à 20 minutes.  | 
|   `-h`, `--help`   |  FALSE  |  Affiche un message d’aide avec les paramètres disponibles pour les métriques, les sous-commandes et les valeurs positionnelles.  | 

 **Exemples** 

Installez la version Kubernetes avec AWS Systems `1.32` Manager (SSM) comme fournisseur d'informations d'identification

```
nodeadm install 1.32 --credential-provider ssm
```

Installez la version Kubernetes avec AWS Systems `1.32` Manager (SSM) comme fournisseur d'informations d'identification, Docker comme source containerd, avec un délai de téléchargement de 20 minutes.

```
nodeadm install 1.32 --credential-provider ssm --containerd-source docker --timeout 20m
```

Installez la version Kubernetes `1.32` avec AWS IAM Roles Anywhere comme fournisseur d'informations d'identification

```
nodeadm install 1.32 --credential-provider iam-ra
```

## `nodeadm config check`
<a name="_nodeadm_config_check"></a>

La commande `nodeadm config check` vérifie la configuration du nœud fourni afin de détecter d’éventuelles erreurs. Cette commande peut être utilisée pour vérifier et valider l’exactitude d’un fichier de configuration de nœud hybride.

 **Utilisation** 

```
nodeadm config check [flags]
```

 **Indicateurs** 


| Name | Obligatoire | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Source de la configuration nodeadm. Pour les nœuds hybrides, l’entrée doit suivre un URI avec un schéma de fichier.  | 
|   `-h`, `--help`   |  FALSE  |  Affiche un message d’aide avec les paramètres disponibles pour les métriques, les sous-commandes et les valeurs positionnelles.  | 

 **Exemples** 

```
nodeadm config check -c file://nodeConfig.yaml
```

## `nodeadm init`
<a name="_nodeadm_init"></a>

La commande `nodeadm init` démarre et connecte le nœud hybride au cluster Amazon EKS configuré. Consultez [Configuration des nœuds pour les activations hybrides SSM](#hybrid-nodes-node-config-ssm) ou [Configuration des nœuds pour Rôles Anywhere IAM](#hybrid-nodes-node-config-iamra) pour plus de détails sur la configuration du fichier `nodeConfig.yaml`.

 **Utilisation** 

```
nodeadm init [flags]
```

 **Indicateurs** 


| Name | Obligatoire | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Source de la configuration `nodeadm`. Pour les nœuds hybrides, l’entrée doit suivre un URI avec un schéma de fichier.  | 
|   `-s`,  `--skip`   |  FALSE  |  Phases de `init` à ignorer. Il n’est pas recommandé de sauter l’une des phases, sauf si cela permet de résoudre un problème.  **Valeurs**   `install-validation` ignore la vérification du bon déroulement de la commande d’installation précédente.  `cni-validation` ignore la vérification de l’ouverture des ports VXLAN de Cilium ou Calico CNI si le pare-feu est activé sur le nœud  `node-ip-validation` ignore la vérification si l’adresse IP du nœud se trouve dans un CIDR dans les réseaux de nœuds distants  | 
|   `-h`, `--help`   |  FALSE  |  Affiche un message d’aide avec les paramètres disponibles pour les métriques, les sous-commandes et les valeurs positionnelles.  | 

 **Exemples** 

```
nodeadm init -c file://nodeConfig.yaml
```

## `nodeadm upgrade`
<a name="_nodeadm_upgrade"></a>

La commande `nodeadm upgrade` met à niveau tous les artefacts installés vers la dernière version et amorce le nœud pour configurer les artefacts mis à niveau et rejoindre le cluster EKS sur AWS. La mise à niveau est une commande perturbatrice pour les charges de travail exécutées sur le nœud. Veuillez déplacer vos charges de travail vers un autre nœud avant de lancer la mise à niveau.

 **Utilisation** 

```
nodeadm upgrade [KUBERNETES_VERSION] [flags]
```

 **Arguments positionnels** 

(Obligatoire) `KUBERNETES_VERSION` La version majeure.mineure d’EKS Kubernetes à installer, par exemple `1.32` 

 **Indicateurs** 


| Name | Obligatoire | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Source de la configuration `nodeadm`. Pour les nœuds hybrides, l’entrée doit suivre un URI avec un schéma de fichier.  | 
|   `-t`,  `--timeout`   |  FALSE  |  Délai d’attente pour le téléchargement des artefacts. La saisie suit le format de durée. Par exemple 1 h 23 min. Le délai d’expiration par défaut pour le téléchargement de la commande de mise à niveau est défini sur 10 minutes.  | 
|   `-s`,  `--skip`   |  FALSE  |  Phases de mise à niveau à ignorer. Il n’est pas recommandé de sauter l’une des phases, sauf si cela permet de résoudre un problème.  **Valeurs**   `pod-validation` ignore la vérification si tous les pods ne sont pas en cours d’exécution sur le nœud, à l’exception des ensembles de démons et des pods statiques.  `node-validation` ignore la vérification si le nœud a été bouclé.  `init-validation` ignore la vérification de l’initialisation réussie du nœud avant d’exécuter la mise à niveau.  `containerd-major-version-upgrade`empêche les mises à niveau des versions majeures de containerd lors de la mise à niveau du nœud.  | 
|   `-h`, `--help`   |  FALSE  |  Affiche un message d’aide avec les paramètres disponibles pour les métriques, les sous-commandes et les valeurs positionnelles.  | 

 **Exemples** 

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml
```

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml --timeout 20m
```

## `nodeadm uninstall`
<a name="_nodeadm_uninstall"></a>

La commande `nodeadm uninstall` arrête et supprime les artefacts que `nodeadm` installe pendant `nodeadm install`, y compris kubelet et containerd. Remarque : La commande de désinstallation ne vide pas et ne supprime pas vos nœuds hybrides de votre cluster. Vous devez exécuter les opérations de vidage et de suppression séparément. Pour plus d’informations, consultez [Supprimer les nœuds hybrides](hybrid-nodes-remove.md). Par défaut, `nodeadm uninstall` ne continuera pas s’il reste des pods sur le nœud. De même, `nodeadm uninstall` ne supprime pas les dépendances CNI ni les dépendances d’autres modules complémentaires Kubernetes que vous exécutez sur votre cluster. Pour supprimer complètement l’installation CNI de votre hôte, consultez les instructions à l’adresse [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md). Si vous utilisez des activations hybrides AWS SSM comme fournisseur d'informations d'identification sur site, la `nodeadm uninstall` commande annule l'enregistrement de vos hôtes en tant qu'instances gérées par SSM. AWS 

 **Utilisation** 

```
nodeadm uninstall [flags]
```

 **Indicateurs** 


| Name | Obligatoire | Description | 
| --- | --- | --- | 
|   `-s`,  `--skip`   |  FALSE  |  Phases de désinstallation à ignorer. Il n’est pas recommandé de sauter l’une des phases, sauf si cela permet de résoudre un problème.  **Valeurs**   `pod-validation` ignore la vérification si tous les pods ne sont pas en cours d’exécution sur le nœud, à l’exception des ensembles de démons et des pods statiques.  `node-validation` ignore la vérification si le nœud a été bouclé.  `init-validation` ignore la vérification de l’initialisation réussie du nœud avant d’exécuter la désinstallation.  | 
|   `-h`,  `--help`   |  FALSE  |  Affiche un message d’aide avec les paramètres disponibles pour les métriques, les sous-commandes et les valeurs positionnelles.  | 
|   `-f`,  `--force`   |  FALSE  |  Supprimer de force les répertoires supplémentaires qui pourraient contenir des fichiers restants provenant des composants Kubernetes et CNI.  **WARNING**  Cela supprimera tout le contenu des répertoires Kubernetes et CNI par défaut (`/var/lib/cni`, `/etc/cni/net.d`, etc.). N’utilisez pas cet indicateur si vous stockez vos propres données à ces emplacements. À partir de nodeadm `v1.0.9`, la commande `./nodeadm uninstall --skip node-validation,pod-validation --force` ne supprime plus le répertoire `/var/lib/kubelet`. En effet, il peut contenir des volumes Pod et des répertoires volume-subpath qui incluent parfois le système de fichiers du nœud monté.  **Conseils pour une manipulation en toute sécurité**  – La suppression des chemins montés peut entraîner la suppression accidentelle du système de fichiers du nœud monté. Avant de supprimer manuellement le répertoire `/var/lib/kubelet`, inspectez soigneusement tous les montages actifs et démontez les volumes en toute sécurité afin d’éviter toute perte de données.  | 

 **Exemples** 

```
nodeadm uninstall
```

```
nodeadm uninstall --skip node-validation,pod-validation
```

## `nodeadm debug`
<a name="_nodeadm_debug"></a>

La commande `nodeadm debug` peut être utilisée pour dépanner les nœuds hybrides défectueux ou mal configurés. Il vérifie que les exigences suivantes sont respectées.
+ Le nœud dispose d'un accès réseau aux informations requises AWS APIs pour obtenir les informations d'identification,
+ Le nœud est en mesure d'obtenir des AWS informations d'identification pour le rôle IAM des nœuds hybrides configuré,
+ Le nœud dispose d’un accès réseau au point de terminaison de l’API EKS Kubernetes et la validité du certificat du point de terminaison de l’API EKS Kubernetes,
+ Le nœud est capable de s’authentifier auprès du cluster EKS, son identité dans le cluster est valide et le nœud a accès au cluster EKS via le VPC configuré pour le cluster EKS.

Si des erreurs sont détectées, la sortie de la commande suggère des étapes de dépannage. Certaines étapes de validation affichent les processus enfants. Si celles-ci échouent, le résultat s’affiche dans une section stderr sous l’erreur de validation.

 **Utilisation** 

```
nodeadm debug [flags]
```

 **Indicateurs** 


| Name | Obligatoire | Description | 
| --- | --- | --- | 
|   `-c`, `--config-source`   |  TRUE  |  Source de la configuration `nodeadm`. Pour les nœuds hybrides, l’entrée doit suivre un URI avec un schéma de fichier.  | 
|   `--no-color`   |  FALSE  |  Désactive la sortie couleur. Utile pour l’automatisation.  | 
|   `-h`, `--help`   |  FALSE  |  Affiche un message d’aide avec les paramètres disponibles pour les métriques, les sous-commandes et les valeurs positionnelles.  | 

 **Exemples** 

```
nodeadm debug -c file://nodeConfig.yaml
```

## Emplacements des fichiers Nodeadm
<a name="_nodeadm_file_locations"></a>

### nodeadm installer
<a name="_nodeadm_install_2"></a>

Lors de l’exécution `nodeadm install`, les fichiers et emplacements de fichiers suivants sont configurés.


| Artefact | Chemin | 
| --- | --- | 
|  CLI Rôles Anywhere IAM  |  /usr/local/bin/aws\$1assistant à la signature  | 
|  Kubelet binaire  |  /usr/bin/kubelet  | 
|  Kubectl binaire  |  usr/local/bin/kubectl  | 
|  Fournisseur d’informations d’identification ECR  |  /etc/eks/image-credential-provider/ecr-fournisseur d'informations d'identification  | 
|   AWS Authentificateur IAM  |  /usr/local/bin/aws-iam-authentificateur  | 
|  Configuration SSM CLI  |  /opt/ssm/ssm-setup-cli  | 
|  SSM Agent  |  Sur Ubuntu -/snap/amazon-ssm-agent/current/amazon-ssm-agent Sur RHEL et AL2 023 -/-ssm-agent usr/bin/amazon  | 
|  Containerd  |  Sur Ubuntu et AL2 023 -/usr/bin/containerd Sur RHEL : /bin/containerd  | 
|  iptables  |  Sur Ubuntu et AL2 023 -/usr/sbin/iptables Sur RHEL : /sbin/iptables  | 
|  Plug-ins CNI  |  /opt/cni/bin  | 
|  suivi des artefacts installés  |  /opt/nodeadm/tracker  | 

### nodeadm init
<a name="_nodeadm_init_2"></a>

Lors de l’exécution de `nodeadm init`, les fichiers et emplacements de fichiers suivants sont configurés.


| Name | Chemin | 
| --- | --- | 
|  Kubelet kubeconfig  |  /var/lib/kubelet/kubeconfig  | 
|  Configuration Kubelet  |  /etc/kubernetes/kubelet/config.json  | 
|  Unité de système Kubelet  |  /etc/systemd/system/kubelet.service  | 
|  Configuration du fournisseur d’informations d’identification d’image  |  /etc/eks/image-credential-provider/config.json  | 
|  Fichier d’environnement Kubelet  |  /etc/eks/kubelet/environment  | 
|  Certificats Kubelet  |  /etc/kubernetes/pki/ca.crt  | 
|  Config de Containerd  |  /etc/containerd/config.toml  | 
|  Configuration des modules du noyau Containerd  |  /etc/modules-load.d/contianerd.conf  | 
|   AWS fichier de configuration  |  /etc/aws/hybrid/config  | 
|   AWS fichier d'informations d'identification (si le fichier d'informations d'identification est activé)  |  /eks-hybrid/.aws/identifiants  | 
|   AWS unité système d'aide à la signature  |  /etc/systemd/system/aws\$1signing\$1helper\$1update.service  | 
|  fichier de configuration sysctl  |  /etc/sysctl.d/99-nodeadm.conf  | 
|  Ca-certificates  |  /etc/ssl/certs/ca-certificates.crt  | 
|  Fichier de clé Gpg  |  /etc/apt/keyrings/docker.asc  | 
|  Fichier source du dépôt Docker  |  /etc/apt/sources.list.d/docker.liste  | 

## Configuration des nœuds pour les activations hybrides SSM
<a name="hybrid-nodes-node-config-ssm"></a>

Voici un exemple `nodeConfig.yaml` d'utilisation des activations hybrides AWS SSM pour les informations d'identification des nœuds hybrides.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Configuration des nœuds pour Rôles Anywhere IAM
<a name="hybrid-nodes-node-config-iamra"></a>

Voici un `nodeConfig.yaml` exemple d'identifiant AWS IAM Roles Anywhere pour les nœuds hybrides.

Lorsque vous utilisez AWS IAM Roles Anywhere comme fournisseur d'informations d'identification sur site, celles que `nodeName` vous utilisez dans votre `nodeadm` configuration doivent correspondre aux autorisations que vous avez définies pour votre rôle IAM Hybrid Nodes. Par exemple, si vos autorisations pour le rôle IAM de Hybrid Nodes autorisent uniquement AWS IAM Roles Anywhere à assumer le rôle lorsque le nom de session du rôle est égal au CN du certificat hôte, le `nodeName` CN de votre `nodeadm` configuration doit être le même que le CN de vos certificats. Le `nodeName` que vous utilisez ne peut pas dépasser 64 caractères. Pour de plus amples informations, veuillez consulter [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:              # Name of the EKS cluster
    region:            # AWS Region where the EKS cluster resides
  hybrid:
    iamRolesAnywhere:
      nodeName:        # Name of the node
      trustAnchorArn:  # ARN of the IAM Roles Anywhere trust anchor
      profileArn:      # ARN of the IAM Roles Anywhere profile
      roleArn:         # ARN of the Hybrid Nodes IAM role
      certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor
      privateKeyPath:  # Path to the private key file for the certificate
```

## Configuration du nœud pour personnaliser kubelet (facultatif)
<a name="hybrid-nodes-nodeadm-kubelet"></a>

Vous pouvez transmettre la configuration et les métriques kubelet dans votre configuration `nodeadm`. Consultez l’exemple ci-dessous pour savoir comment ajouter une étiquette de nœud `abc.amazonaws.com/test-label` supplémentaire et configurer `shutdownGracePeriod` sur 30 secondes.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  kubelet:
    config:           # Map of kubelet config and values
       shutdownGracePeriod: 30s
    flags:            # List of kubelet flags
       - --node-labels=abc.company.com/test-label=true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Configuration du nœud pour personnaliser containerd (facultatif)
<a name="_node_config_for_customizing_containerd_optional"></a>

Vous pouvez passer une configuration containerd personnalisée dans votre configuration `nodeadm`. La configuration containerd pour `nodeadm` accepte TOML en ligne. Consultez l’exemple ci-dessous pour savoir comment configurer containerd afin de désactiver la suppression des couches d’image décompressées dans le magasin de contenu containerd.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri".containerd]
       discard_unpacked_layers = false
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

**Note**  
Les versions 1.x et 2.x de Containerd utilisent différents formats de configuration. Containerd 1.x utilise la version de configuration 2, tandis que containerd 2.x utilise la version de configuration 3. Bien que containerd 2.x reste rétrocompatible avec la version 2 de configuration, la version 3 de configuration est recommandée pour des performances optimales. Vérifiez la version de votre containerd `containerd --version` ou consultez les journaux d'`nodeadm`installation. Pour plus de détails sur la gestion des versions de configuration, consultez https://containerd.io/releases/

Vous pouvez également utiliser la configuration containerd pour activer SELinux le support. SELinux Lorsque cette option est activée sur containerd, assurez-vous que les pods planifiés sur le nœud disposent du SecurityContext approprié et sont activés. seLinuxOptions Vous trouverez plus d’informations sur la configuration d’un contexte de sécurité dans la [documentation Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).

**Note**  
Red Hat Enterprise Linux (RHEL) 8 et RHEL 9 sont SELinux activés par défaut et définis sur strict sur l'hôte. Amazon Linux 2023 est SELinux activé par défaut et est réglé sur le mode permissif. Lorsqu'il SELinux est défini sur le mode permissif sur l'hôte, son activation sur containerd ne bloquera pas les demandes mais les enregistrera conformément à la SELinux configuration de l'hôte.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri"]
       enable_selinux = true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

# Dépannage des nœuds hybrides
<a name="hybrid-nodes-troubleshooting"></a>

Cette rubrique traite de certaines erreurs courantes que vous pouvez rencontrer lors de l’utilisation des nœuds hybrides Amazon EKS et explique comment les résoudre. Pour d'autres informations de dépannage, consultez le [Résolution des problèmes liés aux clusters et aux nœuds Amazon EKS](troubleshooting.md) [tag Knowledge Center pour Amazon EKS](https://repost.aws/tags/knowledge-center/TA4IvCeWI1TE66q4jEj4Z9zg/amazon-elastic-kubernetes-service) sur * AWS Re:Post*. Si vous ne parvenez pas à résoudre le problème, contactez AWS le Support.

 **Dépannage des nœuds avec `nodeadm debug`**. Vous pouvez exécuter la commande `nodeadm debug` à partir de vos nœuds hybrides pour vérifier que les exigences en matière de réseau et d’informations d’identification sont respectées. Pour plus d’informations sur la commande `nodeadm debug`, voir [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

 **Détectez les problèmes liés à vos nœuds hybrides grâce aux informations sur les clusters** Les informations sur les clusters Amazon EKS comprennent des *vérifications* qui détectent les problèmes courants liés à la configuration des nœuds hybrides EKS dans votre cluster. Vous pouvez consulter les résultats de toutes les vérifications d'aperçu à partir de la AWS Management Console AWS CLI et du AWS SDKs. Pour plus d’informations sur les informations relatives aux clusters, consultez [Préparation aux mises à niveau des versions Kubernetes et résolution des erreurs de configuration grâce aux informations sur les clusters](cluster-insights.md).

## Dépannage de l’installation de nœuds hybrides
<a name="hybrid-nodes-troubleshooting-install"></a>

Les rubriques de dépannage suivantes concernent l’installation des dépendances des nœuds hybrides sur les hôtes à l’aide de la commande `nodeadm install`.

 **`nodeadm` échec de la commande `must run as root`** 

La commande `nodeadm install` doit être exécutée avec un utilisateur disposant de droits root ou de `sudo` privilèges sur votre hôte. Si vous exécutez `nodeadm install` avec un utilisateur qui ne dispose pas des droits root ou des privilèges `sudo`, vous verrez l’erreur suivante dans la sortie `nodeadm`.

```
"msg":"Command failed","error":"must run as root"
```

 **Impossible de se connecter aux dépendances** 

La commande `nodeadm install` installe les dépendances requises pour les nœuds hybrides. Les dépendances des nœuds hybrides incluent`containerd`, `kubelet``kubectl`, et les composants AWS SSM ou AWS IAM Roles Anywhere. Vous devez avoir accès à partir de l’endroit où vous exécutez `nodeadm install` pour télécharger ces dépendances. Pour plus d’informations sur la liste des emplacements auxquels vous devez pouvoir accéder, consultez [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md). Si vous n’y avez pas accès, vous verrez des erreurs similaires à celles-ci dans la sortie `nodeadm install`.

```
"msg":"Command failed","error":"failed reading file from url: ...: max retries achieved for http request"
```

 **Impossible de mettre à jour le gestionnaire de paquets** 

La commande `nodeadm install` exécute `apt update`, `yum update` ou `dnf update` avant l’installation des dépendances des nœuds hybrides. Si cette étape échoue, vous pourriez voir apparaître des erreurs similaires à celles ci-dessous. Pour remédier à cette situation, vous pouvez exécuter `apt update`, `yum update` ou `dnf update` avant l’exécution de `nodeadm install` ou essayer de réexécuter `nodeadm install`.

```
failed to run update using package manager
```

 **Délai d’expiration ou délai de mise en contexte dépassé** 

Lors de l’exécution de `nodeadm install`, si vous constatez des problèmes à différentes étapes du processus d’installation avec des erreurs indiquant un délai d’attente ou une limite de contexte dépassée, il se peut que votre connexion soit trop lente et empêche l’installation des dépendances des nœuds hybrides avant l’expiration des délais d’attente. Pour contourner ces problèmes, vous pouvez essayer d’utiliser la balise `--timeout` dans `nodeadm` afin de prolonger la durée des délais d’attente pour le téléchargement des dépendances.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --timeout 20m0s
```

## Dépannage des problèmes liés à la connexion
<a name="hybrid-nodes-troubleshooting-connect"></a>

Les rubriques de résolution des problèmes de cette section concernent le processus de connexion des nœuds hybrides aux clusters EKS à l’aide de la commande `nodeadm init`.

 **Erreurs de fonctionnement ou schéma non pris en charge** 

Lors de l’exécution `nodeadm init`, si vous voyez des erreurs liées à `operation error` ou `unsupported scheme`, vérifiez votre `nodeConfig.yaml` pour vous assurer qu’il est correctement formaté et transmis à `nodeadm`. Pour plus d’informations sur le format et les options disponibles pour `nodeConfig.yaml`, consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

```
"msg":"Command failed","error":"operation error ec2imds: GetRegion, request canceled, context deadline exceeded"
```

 **Nœuds hybrides (rôle IAM) : autorisations manquantes pour l’action `eks:DescribeCluster`** 

Lors de l'exécution`nodeadm init`, `nodeadm` tente de recueillir des informations sur votre cluster EKS en appelant l'`DescribeCluster`action EKS. Si votre rôle IAM Hybrid Nodes n'est pas autorisé à effectuer cette `eks:DescribeCluster` action, vous devez transmettre le point de terminaison de l'API Kubernetes, le bundle CA du cluster et le IPv4 CIDR du service dans la configuration du nœud à laquelle vous passez lors de l'exécution. `nodeadm` `nodeadm init` Pour plus d’informations sur les autorisations requises pour le rôle IAM des nœuds hybrides, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

```
"msg":"Command failed","error":"operation error EKS: DescribeCluster, https response error StatusCode: 403 ... AccessDeniedException"
```

 **Nœuds hybrides (rôle IAM) : autorisations manquantes pour l’action `eks:ListAccessEntries`** 

Lors de l'exécution`nodeadm init`, `nodeadm` tente de valider si votre cluster EKS possède une entrée d'accès de type `HYBRID_LINUX` associée au rôle IAM des nœuds hybrides en appelant l'`ListAccessEntries`action EKS. Si votre rôle IAM Hybrid Nodes n'est pas autorisé à `eks:ListAccessEntries` effectuer cette action, vous devez passer le `--skip cluster-access-validation` drapeau lorsque vous exécutez la `nodeadm init` commande. Pour plus d’informations sur les autorisations requises pour le rôle IAM des nœuds hybrides, consultez [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md).

```
"msg":"Command failed","error":"operation error EKS: ListAccessEntries, https response error StatusCode: 403 ... AccessDeniedException"
```

 **L’adresse IP du nœud ne figure pas dans le réseau de nœuds distants CIDR** 

Lors de l'exécution`nodeadm init`, vous pouvez rencontrer une erreur si l'adresse IP du nœud ne se trouve pas dans le réseau de nœuds distants spécifié CIDRs. L’erreur ressemblera à l’exemple suivant :

```
node IP 10.18.0.1 is not in any of the remote network CIDR blocks [10.0.0.0/16 192.168.0.0/16]
```

Cet exemple montre un nœud dont l'adresse IP est 10.18.0.1 qui tente de rejoindre un cluster doté du réseau distant CIDRs 10.0.0.0/16 et 192.168.0.0/16. L’erreur se produit car 10.18.0.1 ne se situe dans aucune des plages.

Vérifiez que vous avez correctement configuré votre adresse IP `RemoteNodeNetworks` pour inclure toutes les adresses IP des nœuds. Pour plus d’informations sur la configuration réseau, voir [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+ Exécutez la commande suivante dans la région où se trouve votre cluster pour vérifier vos configurations `RemoteNodeNetwork`. Vérifiez que les blocs CIDR répertoriés dans la sortie incluent la plage IP de votre nœud et correspondent aux blocs CIDR répertoriés dans le message d’erreur. Si elles ne correspondent pas, vérifiez que le nom du cluster et la région dans votre `nodeConfig.yaml` correspondent bien au cluster souhaité.

```
aws eks describe-cluster --name CLUSTER_NAME --region REGION_NAME --query cluster.remoteNetworkConfig.remoteNodeNetworks
```
+ Vérifiez que vous travaillez avec le nœud prévu :
  + Vérifiez que vous êtes sur le bon nœud en vérifiant que son nom d’hôte et son adresse IP correspondent à ceux que vous souhaitez enregistrer auprès du cluster.
  + Vérifiez que ce nœud se trouve dans le bon réseau sur site (celui dont la plage CIDR a été enregistrée en tant que `RemoteNodeNetwork` lors de la configuration du cluster).

Si l’adresse IP de votre nœud ne correspond toujours pas à ce que vous attendiez, vérifiez les points suivants :
+ Si vous utilisez Rôles Anywhere IAM, `kubelet` effectue une recherche DNS sur Rôles Anywhere IAM `nodeName` et utilise une adresse IP associée au nom du nœud, le cas échéant. Si vous conservez des entrées DNS pour vos nœuds, vérifiez qu'elles pointent vers l' IPs intérieur de votre réseau de nœuds distants CIDRs.
+ Si votre nœud possède plusieurs interfaces réseau, vous `kubelet` pouvez sélectionner une interface avec une adresse IP en dehors du réseau CIDRs de votre nœud distant par défaut. Pour utiliser une interface différente, spécifiez son adresse IP à l’aide de la balise `--node-ip` `kubelet` dans votre fichier `nodeConfig.yaml`. Pour de plus amples informations, veuillez consulter [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md). Vous pouvez consulter les interfaces réseau et les adresses IP de votre nœud en exécutant la commande suivante sur votre nœud :

```
ip addr show
```

 **Les nœuds hybrides n’apparaissent pas dans le cluster EKS** 

Si vous avez exécuté `nodeadm init` et qu’il s’est terminé, mais que vos nœuds hybrides n’apparaissent pas dans votre cluster, il se peut qu’il y ait des problèmes avec la connexion réseau entre vos nœuds hybrides et le plan de contrôle EKS, que vous n’ayez pas configuré les autorisations requises pour le groupe de sécurité ou que vous n’ayez pas effectué le mappage requis entre le rôle IAM de vos nœuds hybrides et le contrôle d’accès basé sur les rôles (RBAC) de Kubernetes. Vous pouvez lancer le processus de débogage en vérifiant l’état de `kubelet` et des journaux `kubelet` à l’aide des commandes suivantes. Exécutez les commandes suivantes à partir des nœuds hybrides qui n’ont pas réussi à rejoindre votre cluster.

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Impossible de communiquer avec le cluster** 

Si votre nœud hybride n’a pas pu communiquer avec le plan de contrôle du cluster, des journaux similaires aux suivants peuvent s’afficher.

```
"Failed to ensure lease exists, will retry" err="Get ..."
```

```
"Unable to register node with API server" err="Post ..."
```

```
Failed to contact API server when waiting for CSINode publishing ... dial tcp <ip address>: i/o timeout
```

Si vous voyez ces messages, vérifiez les points suivants pour vous assurer qu’ils répondent aux exigences relatives aux nœuds hybrides détaillées dans [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+ Vérifiez que le VPC transmis au cluster EKS possède des itinéraires vers votre Transit Gateway (TGW) ou votre passerelle privée virtuelle (VGW) pour votre nœud sur site et éventuellement votre pod. CIDRs
+ Vérifiez que vous disposez d'un groupe de sécurité supplémentaire pour votre cluster EKS et que des règles d'entrée s'appliquent à votre nœud local CIDRs et, éventuellement, à votre pod. CIDRs
+ Vérifiez que votre routeur sur site est configuré pour autoriser le trafic vers et depuis le plan de contrôle EKS.

 **Non autorisé** 

Si votre nœud hybride a pu communiquer avec le plan de contrôle EKS mais n’a pas pu s’enregistrer, vous pouvez voir des journaux similaires à ceux ci-dessous. Notez que la principale différence dans les messages du journal ci-dessous réside dans l’erreur `Unauthorized`. Cela indique que le nœud n’a pas pu exécuter ses tâches car il ne dispose pas des autorisations requises.

```
"Failed to ensure lease exists, will retry" err="Unauthorized"
```

```
"Unable to register node with API server" err="Unauthorized"
```

```
Failed to contact API server when waiting for CSINode publishing: Unauthorized
```

Si vous voyez ces messages, vérifiez les éléments suivants pour vous assurer qu’ils répondent aux exigences relatives aux nœuds hybrides détaillées dans [Préparer les informations d’identification pour les nœuds hybrides](hybrid-nodes-creds.md) et [Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).
+ Vérifiez que l’identité des nœuds hybrides correspond au rôle IAM des nœuds hybrides que vous attendiez. Pour ce faire, exécutez `sudo aws sts get-caller-identity` depuis vos nœuds hybrides.
+ Vérifiez que votre rôle IAM des nœuds hybrides dispose des autorisations requises.
+ Vérifiez que dans votre cluster, vous disposez d'une entrée d'accès EKS pour votre rôle IAM Hybrid Nodes ou confirmez que vous disposez d'`aws-auth` ConfigMap une entrée pour votre rôle IAM Hybrid Nodes. Si vous utilisez des entrées d’accès EKS, vérifiez que votre entrée d’accès pour votre rôle IAM des nœuds hybrides dispose du type d’accès `HYBRID_LINUX`. Si vous utilisez le `aws-auth` ConfigMap, confirmez que votre entrée pour le rôle Hybrid Nodes IAM répond aux exigences et au format détaillés dans[Préparation de l’accès au cluster pour les nœuds hybrides](hybrid-nodes-cluster-prep.md).

### Nœuds hybrides enregistrés dans le cluster EKS mais affichant l’état `Not Ready`
<a name="hybrid-nodes-troubleshooting-not-ready"></a>

Si vos nœuds hybrides se sont correctement enregistrés auprès de votre cluster EKS, mais qu’ils affichent l’état `Not Ready`, la première chose à vérifier est l’état de votre interface réseau de conteneur (CNI). Si vous n’avez pas installé de CNI, vos nœuds hybrides devraient avoir le statut `Not Ready`. Une fois qu’un CNI est installé et fonctionne correctement, les nœuds sont mis à jour vers le statut `Ready`. Si vous avez essayé d’installer un CNI mais qu’il ne fonctionne pas correctement, consultez [Dépannage des nœuds hybrides CNI](#hybrid-nodes-troubleshooting-cni) sur cette page.

 **Les demandes de signature de certificat (CSRs) sont bloquées en attente** 

Après avoir connecté des nœuds hybrides à votre cluster EKS, si vous constatez que CSRs des nœuds hybrides sont en attente, cela signifie que ceux-ci ne répondent pas aux exigences d'approbation automatique. CSRs pour les nœuds hybrides sont automatiquement approuvés et émis si les CSRs nœuds hybrides ont été créés par un nœud portant une `eks.amazonaws.com/compute-type: hybrid` étiquette, et que le CSR possède les noms alternatifs de sujet suivants (SANs) : au moins un SAN DNS égal au nom du nœud et l'adresse IP SANs appartient au réseau de nœuds distants CIDRs.

 **Le profil hybride existe déjà** 

Si vous avez modifié votre configuration `nodeadm` et que vous essayez de réenregistrer le nœud avec la nouvelle configuration, vous pouvez obtenir une erreur indiquant que le profil hybride existe déjà, mais que son contenu a été modifié. Au lieu d’exécuter `nodeadm init` entre les changements de configuration, exécutez `nodeadm uninstall` suivi d’un `nodeadm install` et `nodeadm init`. Cela garantit un nettoyage correct lors des changements de configuration.

```
"msg":"Command failed","error":"hybrid profile already exists at /etc/aws/hybrid/config but its contents do not align with the expected configuration"
```

 **Le nœud hybride n’a pas réussi à résoudre l’API privée** 

Après l’exécution `nodeadm init`, si vous constatez une erreur dans les journaux `kubelet` indiquant des échecs de connexion au serveur API EKS Kubernetes en raison de la présence de `no such host`, vous devrez peut-être modifier votre entrée DNS pour le point de terminaison API EKS Kubernetes dans votre réseau sur site ou au niveau de l’hôte. Consultez la section [Transfert de requêtes DNS entrantes vers votre VPC](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) dans * AWS la* documentation de Route53.

```
Failed to contact API server when waiting for CSINode publishing: Get ... no such host
```

 **Impossible d’afficher les nœuds hybrides dans la console EKS** 

Si vous avez enregistré vos nœuds hybrides mais que vous ne parvenez pas à les afficher dans la console EKS, vérifiez les autorisations du principal IAM que vous utilisez pour afficher la console. Le principal IAM que vous utilisez doit disposer d’autorisations IAM et Kubernetes minimales spécifiques pour afficher les ressources dans la console. Pour de plus amples informations, veuillez consulter [Consultez les ressources Kubernetes dans le AWS Management Console](view-kubernetes-resources.md).

## Résolution des problèmes d’exécution de nœuds hybrides
<a name="_running_hybrid_nodes_troubleshooting"></a>

Si vos nœuds hybrides enregistrés dans votre cluster EKS avaient le statut `Ready`, puis sont passés au statut `Not Ready`, plusieurs problèmes peuvent avoir contribué à ce statut non fonctionnel, par exemple un manque de ressources CPU, de mémoire ou d’espace disque disponible, ou une déconnexion du nœud du plan de contrôle EKS. Vous pouvez suivre les étapes ci-dessous pour dépanner vos nœuds, et si vous ne parvenez pas à résoudre le problème, contactez le AWS Support.

Exécutez `nodeadm debug` à partir de vos nœuds hybrides pour vérifier que les exigences en matière de réseau et d’informations d’identification sont satisfaites. Pour plus d’informations sur la commande `nodeadm debug` , consultez [Référence des nœuds hybrides `nodeadm`](hybrid-nodes-nodeadm.md).

 **Obtenir le statut du nœud** 

```
kubectl get nodes -o wide
```

 **Vérifiez les conditions et les événements du nœud** 

```
kubectl describe node NODE_NAME
```

 **Obtenir le statut du pod** 

```
kubectl get pods -A -o wide
```

 **Vérifiez l’état et les événements du pod** 

```
kubectl describe pod POD_NAME
```

 **Vérifiez les journaux du pod** 

```
kubectl logs POD_NAME
```

 **Vérifiez les journaux `kubectl`** 

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Les sondes de durée de vie du pod échouent ou les webhooks ne fonctionnent pas** 

Si les applications, les modules complémentaires ou les webhooks exécutés sur vos nœuds hybrides ne démarrent pas correctement, vous rencontrez peut-être des problèmes de réseau qui bloquent la communication avec les pods. Pour que le plan de contrôle EKS puisse contacter les webhooks exécutés sur des nœuds hybrides, vous devez configurer votre cluster EKS avec un réseau de pods distant et disposer de routes pour votre CIDR de pod sur site dans votre table de routage VPC, avec comme cible votre Transit Gateway (TGW), votre passerelle privée virtuelle (VPW) ou toute autre passerelle que vous utilisez pour connecter votre VPC à votre réseau sur site. Pour plus d’informations sur les exigences réseau pour les nœuds hybrides, voir [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md). Vous devez également autoriser ce trafic dans votre pare-feu local et vous assurer que votre routeur peut acheminer correctement le trafic vers vos pods. Pour plus d’informations sur les conditions requises pour exécuter des webhooks sur des nœuds hybrides, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md).

Un message de journal de pod courant pour ce scénario est présenté ci-dessous, où l’adresse IP correspond à l’adresse IP du cluster pour le service Kubernetes.

```
dial tcp <ip-address>:443: connect: no route to host
```

 **`kubectl logs`ou `kubectl exec` les commandes ne fonctionnent pas (commandes `kubelet` API)** 

Si`kubectl attach`,`kubectl cp`, `kubectl exec``kubectl logs`, et `kubectl port-forward` les commandes expirent alors que `kubectl` les autres commandes réussissent, le problème est probablement lié à la configuration du réseau distant. Ces commandes se connectent via le cluster au point de terminaison `kubelet` sur le nœud. Pour de plus amples informations, veuillez consulter [Point de terminaison `kubelet`](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-kubelet-api).

Vérifiez que votre nœud IPs et votre pod font IPs partie du réseau de nœuds distants et du réseau de nœuds distants CIDRs configurés pour votre cluster. Utilisez les commandes ci-dessous pour examiner les attributions d’adresses IP.

```
kubectl get nodes -o wide
```

```
kubectl get pods -A -o wide
```

 IPs Comparez-les avec votre réseau distant configuré CIDRs pour garantir un routage correct. Pour les exigences de configuration réseau, voir [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).

## Dépannage des nœuds hybrides CNI
<a name="hybrid-nodes-troubleshooting-cni"></a>

Si vous rencontrez des problèmes lors du démarrage initial de Cilium ou Calico avec des nœuds hybrides, cela est le plus souvent dû à des problèmes de réseau entre les nœuds hybrides ou les pods CNI s’exécutant sur les nœuds hybrides et le plan de contrôle EKS. Assurez-vous que votre environnement répond aux exigences de la section Préparer le réseau pour les nœuds hybrides. Il est utile de décomposer le problème en plusieurs parties.

Configuration du cluster EKS  
Les RemotePodNetwork configurations RemoteNodeNetwork et sont-elles correctes ?

Configuration VPC  
Existe-t-il des itinéraires pour RemoteNodeNetwork et RemotePodNetwork dans la table de routage VPC avec la cible du Transit Gateway ou de la Virtual Private Gateway ?

Configuration du groupe de sécurité  
Existe-t-il des règles d'entrée et de sortie pour le RemoteNodeNetwork et ? RemotePodNetwork 

Réseau local  
Existe-t-il des routes et des accès vers et depuis le plan de contrôle EKS, ainsi que vers et depuis les nœuds hybrides et les pods fonctionnant sur des nœuds hybrides ?

Configuration CNI  
Si vous utilisez un réseau superposé, la configuration du pool IP pour le CNI correspond-elle à celle RemotePodNetwork configurée pour le cluster EKS si vous utilisez des webhooks ?

 **Le nœud hybride a un statut `Ready` sans CNI installé** 

Si vos nœuds hybrides affichent le statut `Ready`, mais que vous n’avez pas installé de CNI sur votre cluster, il est possible que d’anciens artefacts CNI soient présents sur vos nœuds hybrides. Par défaut, lorsque vous désinstallez Cilium et Calico à l’aide d’outils tels que Helm, les ressources sur disque ne sont pas supprimées de vos machines physiques ou virtuelles. En outre, les définitions de ressources personnalisées (CRDs) correspondantes CNIs peuvent toujours être présentes sur votre cluster à partir d'une ancienne installation. Pour plus d’informations, consultez les sections Supprimer Cilium et Supprimer Calico de [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

 **Résolution des problèmes liés à Cilium** 

Si vous rencontrez des problèmes lors de l’exécution de Cilium sur des nœuds hybrides, consultez les [étapes de dépannage](https://docs.cilium.io/en/stable/operations/troubleshooting/) dans la documentation Cilium. Les sections ci-dessous traitent des problèmes qui peuvent être propres au déploiement de Cilium sur des nœuds hybrides.

 **Cilium ne démarre pas** 

Si les agents Cilium qui s’exécutent sur chaque nœud hybride ne démarrent pas, vérifiez les journaux des pods de l’agent Cilium pour détecter d’éventuelles erreurs. L’agent Cilium nécessite une connexion au point de terminaison API EKS Kubernetes pour démarrer. Le démarrage de l’agent Cilium échouera si cette connectivité n’est pas correctement configurée. Dans ce cas, vous verrez des messages de journal similaires aux suivants dans les journaux du pod de l’agent Cilium.

```
msg="Unable to contact k8s api-server"
level=fatal msg="failed to start: Get \"https://<k8s-cluster-ip>:443/api/v1/namespaces/kube-system\": dial tcp <k8s-cluster-ip>:443: i/o timeout"
```

L’agent Cilium s’exécute sur le réseau hôte. Votre cluster EKS doit être configuré avec `RemoteNodeNetwork` pour la connectivité Cilium. Vérifiez que vous disposez d’un groupe de sécurité supplémentaire pour votre cluster EKS avec une règle entrante pour votre `RemoteNodeNetwork`, que vous disposez de routes dans votre VPC pour votre `RemoteNodeNetwork`, et que votre réseau sur site est correctement configuré pour permettre la connectivité au plan de contrôle EKS.

Si l'opérateur Cilium est en cours d'exécution et que certains de vos agents Cilium sont en cours d'exécution, mais pas tous, vérifiez que vous disposez d'un pod disponible IPs à allouer pour tous les nœuds de votre cluster. Vous configurez la taille de votre pod allouable CIDRs lorsque vous utilisez le pool de clusters IPAM `clusterPoolIPv4PodCIDRList` dans votre configuration Cilium. La taille CIDR par nœud est configurée à l’aide du paramètre `clusterPoolIPv4MaskSize` dans votre configuration Cilium. Voir [Extension du pool de clusters](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) dans la documentation de Cilium pour plus d’informations.

 **Cilium BGP ne fonctionne pas** 

Si vous utilisez le plan de contrôle Cilium BGP pour annoncer les adresses de vos pods ou services à votre réseau sur site, vous pouvez utiliser les commandes CLI Cilium suivantes pour vérifier si BGP annonce les routes vers vos ressources. Pour connaître les étapes d’installation de la CLI Cilium, consultez la section [Installer la CLI Cilium dans la](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) documentation de Cilium.

Si BGP fonctionne correctement, vous devez indiquer l’état de session de vos nœuds hybrides `established` dans la sortie. Vous devrez peut-être collaborer avec votre équipe réseau afin d’identifier les valeurs correctes pour l’AS local, l’AS pair et l’adresse pair de votre environnement.

```
cilium bgp peers
```

```
cilium bgp routes
```

Si vous utilisez Cilium BGP pour faire IPs de la publicité pour des Services par type`LoadBalancer`, vous devez avoir la même étiquette sur votre produit `CiliumLoadBalancerIPPool` et sur le Service, qui doit être utilisée dans le sélecteur de votre. `CiliumBGPAdvertisement` Un exemple est illustré ci-dessous. Notez que si vous utilisez Cilium BGP pour promouvoir les services avec type LoadBalancer, les IPs routes BGP peuvent être perturbées lors du redémarrage de l'agent Cilium. Pour plus d’informations, consultez la section [Scénarios de défaillance](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-operation/#failure-scenarios) dans la documentation Cilium.

 **Service** 

```
kind: Service
apiVersion: v1
metadata:
  name: guestbook
  labels:
    app: guestbook
spec:
  ports:
  - port: 3000
    targetPort: http-server
  selector:
    app: guestbook
  type: LoadBalancer
```

 **CiliumLoadBalancerIPPool** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
  name: guestbook-pool
  labels:
    app: guestbook
spec:
  blocks:
  - cidr: <CIDR to advertise>
  serviceSelector:
    matchExpressions:
      - { key: app, operator: In, values: [ guestbook ] }
```

 **CiliumBGPAdvertisement** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPAdvertisement
metadata:
  name: bgp-advertisements-guestbook
  labels:
    advertise: bgp
spec:
  advertisements:
    - advertisementType: "Service"
      service:
        addresses:
          - ExternalIP
          - LoadBalancerIP
      selector:
        matchExpressions:
          - { key: app, operator: In, values: [ guestbook ] }
```

 **Résolution des problèmes liés à Calico** 

Si vous rencontrez des problèmes lors de l’exécution de Calico sur des nœuds hybrides, consultez les [étapes de dépannage](https://docs.tigera.io/calico/latest/operations/troubleshoot/) dans la documentation Calico. Les sections ci-dessous traitent des problèmes qui peuvent être propres au déploiement de Calico sur des nœuds hybrides.

Le tableau ci-dessous récapitule les composants Calico et indique s’ils s’exécutent par défaut sur le réseau du nœud ou du pod. Si vous avez configuré Calico pour utiliser NAT pour le trafic sortant des pods, votre réseau sur site doit être configuré pour acheminer le trafic vers votre CIDR de nœud sur site et vos tables de routage VPC doivent être configurées avec une route pour votre CIDR de nœud sur site avec votre passerelle de transit (TGW) ou votre passerelle privée virtuelle (VGW) comme cible. Si vous ne configurez pas Calico pour utiliser NAT pour le trafic sortant des pods, votre réseau sur site doit être configuré pour acheminer le trafic vers votre CIDR de pod sur site et vos tables de routage VPC doivent être configurées avec une route pour votre CIDR de pod sur site avec votre passerelle de transit (TGW) ou votre passerelle privée virtuelle (VGW) comme cible.


| Composant | Réseau | 
| --- | --- | 
|  Serveur API Calico  |  Nœud  | 
|  Contrôleurs Calico pour Kubernetes  |  pod  | 
|  Agent de nœud Calico  |  Nœud  | 
|  Calico `typha`   |  Nœud  | 
|  Pilote de nœud Calico CSI  |  pod  | 
|  Opérateur Calico  |  Nœud  | 

 **Les ressources Calico sont planifiées ou en cours d’exécution sur des nœuds cordonnés** 

Les ressources Calico qui ne s'exécutent pas en tant que telles DaemonSet sont soumises à des tolérances flexibles par défaut qui leur permettent d'être planifiées sur des nœuds cordonés qui ne sont pas prêts à être planifiés ou à exécuter des pods. Vous pouvez renforcer les tolérances pour les ressources autres que DaemonSet Calico en modifiant l'installation de votre opérateur pour inclure les éléments suivants.

```
installation:
  ...
  controlPlaneTolerations:
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  calicoKubeControllersDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
  typhaDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
```

## Dépannage des informations d’identification
<a name="hybrid-nodes-troubleshooting-creds"></a>

Pour les activations hybrides AWS SSM et pour AWS IAM Roles Anywhere, vous pouvez vérifier que les informations d'identification du rôle Hybrid Nodes IAM sont correctement configurées sur vos nœuds hybrides en exécutant la commande suivante depuis vos nœuds hybrides. Vérifiez que le nom du nœud et le nom du rôle IAM des nœuds hybrides correspondent à vos attentes.

```
sudo aws sts get-caller-identity
```

```
{
    "UserId": "ABCDEFGHIJKLM12345678910:<node-name>",
    "Account": "<aws-account-id>",
    "Arn": "arn:aws: sts::<aws-account-id>:assumed-role/<hybrid-nodes-iam-role/<node-name>"
}
```

 **Dépannage du gestionnaire de systèmes (SSM) AWS ** 

Si vous utilisez des activations hybrides AWS SSM pour les informations d'identification de vos nœuds hybrides, tenez compte des répertoires et artefacts SSM suivants qui sont installés sur vos nœuds hybrides par. `nodeadm` Pour plus d'informations sur l'agent SSM, consultez la section Utilisation [de l'agent SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) dans le Guide de l'*utilisateur de AWS Systems Manager*.


| Description | Location | 
| --- | --- | 
|  Agent SSM  |  Ubuntu - `/snap/amazon-ssm-agent/current/amazon-ssm-agent` RHEL et AL2 023 - `/usr/bin/amazon-ssm-agent`   | 
|  Journaux SSM Agent  |   `/var/log/amazon/ssm`   | 
|   AWS informations d'identification  |   `/root/.aws/credentials`   | 
|  Configuration SSM CLI  |   `/opt/ssm/ssm-setup-cli`   | 

 **Redémarrage de l’agent SSM** 

Certains problèmes peuvent être résolus en redémarrant l’agent SSM. Vous pouvez utiliser les commandes ci-dessous pour le redémarrer.

 **AL2023 et autres systèmes d'exploitation** 

```
systemctl restart amazon-ssm-agent
```

 **Ubuntu** 

```
systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent
```

 **Vérifiez la connectivité aux points de terminaison SSM** 

Vérifiez que vous pouvez vous connecter aux points de terminaison SSM à partir de vos nœuds hybrides. Pour obtenir la liste des points de terminaison SSM, consultez la section [Points de terminaison et quotas Systems Manager AWS](https://docs.aws.amazon.com/general/latest/gr/ssm.html). Remplacez `us-west-2` la commande ci-dessous par la AWS région pour votre activation hybride AWS SSM.

```
ping ssm.us-west-2.amazonaws.com
```

 **Afficher l’état de connexion des instances SSM enregistrées** 

Vous pouvez vérifier l'état de connexion des instances enregistrées avec les activations hybrides SSM à l'aide de la commande AWS CLI suivante. Remplacez l’ID de machine par l’ID de machine de votre instance.

```
aws ssm get-connection-status --target mi-012345678abcdefgh
```

 **Incompatibilité de la somme de contrôle de la CLI de configuration SSM** 

Si vous constatez un problème de discordance de somme de contrôle `ssm-setup-cli` lors de l’exécution de `nodeadm install`, vous devez vérifier qu’il n’existe pas d’anciennes installations SSM sur votre hôte. Si votre hôte contient d’anciennes installations SSM, supprimez-les et relancez `nodeadm install` pour résoudre le problème.

```
Failed to perform agent-installation/on-prem registration: error while verifying installed ssm-setup-cli checksum: checksum mismatch with latest ssm-setup-cli.
```

 **SSM `InvalidActivation` ** 

Si vous constatez une erreur lors de l'enregistrement de votre instance auprès de AWS SSM, confirmez que le `region``activationCode`, et `activationId` dans votre nom `nodeConfig.yaml` sont corrects. La AWS région de votre cluster EKS doit correspondre à la région de votre activation hybride SSM. Si ces valeurs sont mal configurées, vous pourriez voir une erreur similaire à celle-ci.

```
ERROR Registration failed due to error registering the instance with AWS SSM. InvalidActivation
```

 **SSM `ExpiredTokenException` : le jeton de sécurité inclus dans la demande a expiré** 

Si l’agent SSM n’est pas en mesure d’actualiser les informations d’identification, vous pouvez voir apparaître un `ExpiredTokenException`. Dans ce scénario, si vous parvenez à vous connecter aux points de terminaison SSM à partir de vos nœuds hybrides, vous devrez peut-être redémarrer l’agent SSM pour forcer l’actualisation des informations d’identification.

```
"msg":"Command failed","error":"operation error SSM: DescribeInstanceInformation, https response error StatusCode: 400, RequestID: eee03a9e-f7cc-470a-9647-73d47e4cf0be, api error ExpiredTokenException: The security token included in the request is expired"
```

 **Erreur SSM lors de l’exécution de la commande register machine** 

Si vous constatez une erreur lors de l’enregistrement de la machine auprès de SSM, vous devrez peut-être relancer `nodeadm install` afin de vous assurer que toutes les dépendances SSM sont correctement installées.

```
"error":"running register machine command: , error: fork/exec /opt/aws/ssm-setup-cli: no such file or directory"
```

 **SSM `ActivationExpired` ** 

Lors de l’exécution de `nodeadm init`, si vous constatez une erreur lors de l’enregistrement de l’instance auprès de SSM en raison d’une activation expirée, vous devez créer une nouvelle activation hybride SSM, mettre à jour votre `nodeConfig.yaml` avec le `activationCode` et le `activationId` de votre nouvelle activation hybride SSM, puis relancer `nodeadm init`.

```
"msg":"Command failed","error":"SSM activation expired. Please use a valid activation"
```

```
ERROR Registration failed due to error registering the instance with AWS SSM. ActivationExpired
```

 **SSM n’a pas réussi à actualiser les informations d’identification mises en cache** 

Si vous ne parvenez pas à actualiser les informations d’identification mises en cache, le fichier `/root/.aws/credentials` a peut-être été supprimé sur votre hôte. Vérifiez d’abord l’activation hybride SSM et assurez-vous qu’elle est active et que vos nœuds hybrides sont correctement configurés pour utiliser l’activation. Vérifiez les journaux de l’agent SSM à `/var/log/amazon/ssm` et réexécutez la commande `nodeadm init` une fois que vous avez résolu le problème côté SSM.

```
"Command failed","error":"operation error SSM: DescribeInstanceInformation, get identity: get credentials: failed to refresh cached credentials"
```

 **Nettoyez SSM** 

Pour supprimer l’agent SSM de votre hôte, vous pouvez exécuter les commandes suivantes.

```
dnf remove -y amazon-ssm-agent
sudo apt remove --purge amazon-ssm-agent
snap remove amazon-ssm-agent
rm -rf /var/lib/amazon/ssm/Vault/Store/RegistrationKey
```

 **Résolution des problèmes liés à Rôles Anywhere IAM AWS ** 

Si vous utilisez AWS IAM Roles Anywhere pour les informations d'identification de vos nœuds hybrides, tenez compte des répertoires et artefacts suivants qui sont installés sur vos nœuds hybrides par`nodeadm`. Pour plus d'informations sur la résolution des problèmes liés à IAM Roles Anywhere, consultez la section [Résolution des problèmes d'identité et d'accès à AWS IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/security_iam_troubleshoot.html) dans le guide de l'utilisateur d'* AWS IAM Roles Anywhere*.


| Description | Location | 
| --- | --- | 
|  CLI Rôles Anywhere IAM  |   `/usr/local/bin/aws_signing_helper`   | 
|  Emplacement et nom du certificat par défaut  |   `/etc/iam/pki/server.pem`   | 
|  Emplacement et nom de la clé par défaut  |   `/etc/iam/pki/server.key`   | 

 **Rôles Anywhere IAM n’a pas pu actualiser les informations d’identification mises en cache** 

Si vous constatez un échec de l’actualisation des informations d’identification mises en cache, vérifiez le contenu de `/etc/aws/hybrid/config` et assurez-vous que Rôles Anywhere IAM a été correctement configuré dans votre configuration `nodeadm`. Confirmez que `/etc/iam/pki` existe. Chaque nœud doit disposer d’un certificat et d’une clé uniques. Par défaut, lorsque vous utilisez Rôles Anywhere IAM comme fournisseur d’informations d’identification, `nodeadm` utilise `/etc/iam/pki/server.pem` pour l’emplacement et le nom du certificat, et `/etc/iam/pki/server.key` pour la clé privée. Vous devrez peut-être créer les répertoires avant d’y placer les certificats et les clés avec `sudo mkdir -p /etc/iam/pki`. Vous pouvez vérifier le contenu de votre certificat à l’aide de la commande ci-dessous.

```
openssl x509 -text -noout -in server.pem
```

```
open /etc/iam/pki/server.pem: no such file or directory
could not parse PEM data
Command failed {"error": "... get identity: get credentials: failed to refresh cached credentials, process provider error: error in credential_process: exit status 1"}
```

 **Rôles Anywhere IAM n’a pas autorisé à exécuter `sts:AssumeRole`** 

Dans les journaux `kubelet`, si vous constatez un problème d’accès refusé pour l’opération `sts:AssumeRole` lors de l’utilisation de Rôles Anywhere IAM, vérifiez la politique de confiance de votre rôle IAM des nœuds hybrides afin de confirmer que le principal de service Rôles Anywhere IAM est autorisé à assumer le rôle IAM des nœuds hybrides. Vérifiez également que l’ARN de l’ancre d’approbation est correctement configurée dans votre stratégie de confiance du rôle IAM des nœuds hybrides et que votre rôle IAM des nœuds hybrides est ajouté à votre profil Rôles Anywhere IAM.

```
could not get token: AccessDenied: User: ... is not authorized to perform: sts:AssumeRole on resource: ...
```

 **Rôles Anywhere IAM n’est pas autorisé à définir `roleSessionName`** 

Dans les journaux `kubelet`, si vous constatez un problème d’accès refusé pour la configuration du paramètre `roleSessionName`, vérifiez que vous avez défini la valeur `acceptRoleSessionName` sur true pour votre profil Rôles Anywhere IAM.

```
AccessDeniedException: Not authorized to set roleSessionName
```

## Résolution des problèmes de système d’exploitation
<a name="hybrid-nodes-troubleshooting-os"></a>

### RHEL
<a name="_rhel"></a>

 **Échec de l’enregistrement du gestionnaire d’autorisations ou d’abonnements** 

Lorsque vous exécutez `nodeadm install`, si vous rencontrez un problème lors de l’installation des dépendances des nœuds hybrides en raison d’un problème d’enregistrement des droits, assurez-vous d’avoir correctement défini votre nom d’utilisateur et votre mot de passe Red Hat sur votre hôte.

```
This system is not registered with an entitlement server
```

### Ubuntu
<a name="_ubuntu"></a>

 **GLIBC introuvable** 

Si vous utilisez Ubuntu comme système d’exploitation et Rôles Anywhere IAM comme fournisseur d’informations d’identification avec des nœuds hybrides et que vous rencontrez un problème lié à l’absence de GLIBC, vous pouvez installer cette dépendance manuellement pour résoudre le problème.

```
GLIBC_2.32 not found (required by /usr/local/bin/aws_signing_helper)
```

Exécutez les commandes suivantes pour installer la dépendance :

```
ldd --version
sudo apt update && apt install libc6
sudo apt install glibc-source
```

### Flacon Rocket
<a name="_bottlerocket"></a>

Si vous avez activé le conteneur d’administration Bottlerocket, vous pouvez y accéder via SSH pour effectuer un débogage avancé et un dépannage avec des privilèges élevés. Les sections suivantes contiennent des commandes qui doivent être exécutées dans le contexte de l’hôte Bottlerocket. Une fois que vous êtes dans le conteneur d’administration, vous pouvez exécuter `sheltie` pour obtenir un shell root complet dans l’hôte Bottlerocket.

```
sheltie
```

Vous pouvez également exécuter les commandes des sections suivantes à partir du shell du conteneur admin en préfixant chaque commande avec `sudo chroot /.bottlerocket/rootfs`.

```
sudo chroot /.bottlerocket/rootfs <command>
```

 **Utilisation de logdog pour la collecte de logs** 

Bottlerocket fournit l’utilitaire `logdog` permettant de collecter efficacement les journaux et les informations système à des fins de dépannage.

```
logdog
```

L’utilitaire `logdog` rassemble les journaux provenant de divers emplacements sur un hôte Bottlerocket et les combine dans un fichier tar. Par défaut, l’archive tar sera créée à l’emplacement `/var/log/support/bottlerocket-logs.tar.gz` et sera accessible depuis les conteneurs hôtes à l’emplacement `/.bottlerocket/support/bottlerocket-logs.tar.gz`.

 **Accès aux journaux du système avec journalctl** 

Vous pouvez vérifier l’état des différents services système tels que `kubelet`, `containerd`, etc., et consulter leurs journaux à l’aide des commandes suivantes. La balise `-f` suivra les bûches en temps réel.

Pour vérifier l’état du service `kubelet` et récupérer les journaux `kubelet`, vous pouvez exécuter :

```
systemctl status kubelet
journalctl -u kubelet -f
```

Pour vérifier l’état du service `containerd` et récupérer les journaux `containerd` de l’instance orchestrée, vous pouvez exécuter :

```
systemctl status containerd
journalctl -u containerd -f
```

Pour vérifier l’état du service `host-containerd` et récupérer les journaux `containerd` de l’instance hôte, vous pouvez exécuter :

```
systemctl status host-containerd
journalctl -u host-containerd -f
```

Pour récupérer les journaux des conteneurs bootstrap et des conteneurs hôtes, vous pouvez exécuter :

```
journalctl _COMM=host-ctr -f
```