View a markdown version of this page

Mise à niveau d’Amazon Linux 2 vers Amazon Linux 2023 - Amazon EKS

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

Mise à niveau d’Amazon Linux 2 vers Amazon Linux 2023

Avertissement

Amazon EKS a cessé de publier des AMI EKS-optimized Amazon Linux 2 (AL2) le 26 novembre 2025. Les AMI basées sur AL2023 et Bottlerocket pour 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 Linux-based d'exploitation 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 apporte plusieurs améliorations par rapport à AL2. Pour une comparaison complète, consultez la section Comparaison entre AL2 et Amazon Linux 2023 dans le Guide de l’utilisateur Amazon Linux 2023. Plusieurs packages ont été ajoutés, mis à niveau ou supprimés par rapport à AL2. Il est fortement recommandé de tester vos applications avec AL2023 avant de procéder à la mise à niveau. Pour obtenir la liste de tous les changements de packages dans AL2023, consultez la section Modifications apportées aux packages dans Amazon Linux 2023 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 nodeadm d’initialisation de nœud qui utilise un schéma de configuration YAML. Si vous utilisez des groupes de nœuds autogérés ou un modèle de lancement qui spécifie un ID AMI personnalisé, vous devez désormais fournir explicitement des métadonnées de cluster supplémentaires. Vous devez fournir ces métadonnées lors de la création d'un nouveau groupe de nœuds. Voici un exemple de paramètres minimaux requis pour nodeadm, où apiServerEndpointcertificateAuthority, et le service cidr sont désormais requis :

    --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16

    Avec AL2, les métadonnées issues de ces paramètres étaient détectées via l’appel d’API DescribeCluster d’Amazon EKS. Avec AL2023, ce comportement a changé, car l’appel d’API supplémentaire risque d’entraîner une limitation lors des augmentations verticales du nombre de nœuds. 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 en savoir plus sur certificateAuthority et le service cidr, consultez DescribeCluster dans la Référence API Amazon EKS.

  • Pour AL2023, nodeadm modifie également le format pour appliquer les paramètres au service kubelet sur chaque nœud utilisant NodeConfigSpec. Dans AL2, cela se faisait au moyen du paramètre --kubelet-extra-args. 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 1.16.2 ou ultérieure de Amazon VPC CNI est requise pour AL2023.

  • AL2023 impose par défaut l’utilisation d’IMDSv2. IMDSv2 présente plusieurs avantages qui améliorent 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 façon de passer de IMDSv1 àIMDSv2, consultez Transition vers l'utilisation du service de métadonnées d'instance version 2 et Profitez de tous les avantages de l'IMDSv2 et désactivez IMDSv1 sur l'ensemble de votre infrastructure. AWS 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 avec 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é.

    • 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 pour fournir des informations d’identification, plutôt que d’utiliser IMDSv2.

  • AL2023 utilise la nouvelle génération de hiérarchie unifiée des groupes de contrôle (cgroupv2). cgroupv2 est utilisé par défaut pour mettre en œuvre l’exécution de conteneur, et par systemd. Bien qu’AL2023 inclue encore le code permettant d’exécuter le système en cgroupv1, cette configuration n’est plus recommandée ni prise en charge. Cette configuration sera complètement supprimée dans une prochaine version majeure d’Amazon Linux.

  • La version 0.176.0 ou ultérieure d’eksctl est requise pour eksctl pour que AL2023 soit pris en charge.

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. Assurez-vous d’abord que vos applications et vos données utilisateur fonctionnent correctement avec AL2023 avant de mettre à niveau cette stratégie.

  • 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 spécifie pas l'ID AMI, vous devez effectuer la 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 comme type d'AMI. Le nouveau groupe de nœuds doit ensuite être configuré avec soin pour garantir que toutes les données personnalisées du groupe de nœuds AL2 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 souhaitez utiliser AL2023, vous devez modifier le champ EC2NodeClass amiFamily pour y indiquer 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

Lorsque vous utilisez une AMI EKS-optimized Amazon Linux 2023 ou que vous créez une AMI EKS Amazon Linux 2023 personnalisée via les scripts Packer fournis dans le GitHub référentiel officiel amazon-eks-ami, 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 de la 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 démarré plus tard 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

Les AMI EKS-optimized Amazon Linux 2023 exécutent 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 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 des données utilisateur ou une AMI personnalisée, elle peut annuler les hypothèses concernant l'ordre d'exécution, entraînant des résultats inattendus, notamment des ENI mal configurés.