Mettre à jour un cluster existant vers une nouvelle version de Kubernetes - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Mettre à jour un cluster existant vers une nouvelle version de Kubernetes

Dès qu'une nouvelle version Kubernetes est disponible dans Amazon EKS, vous pouvez mettre à jour votre cluster Amazon EKS.

Important

Une fois que vous avez mis à niveau un cluster, vous ne pouvez pas revenir à une version antérieure. Avant de mettre à jour vers une nouvelle version de Kubernetes, nous vous recommandons de consulter les informations dans Comprendre le cycle de vie des versions de Kubernetes sur EKS et les étapes de mise à niveau dans cette rubrique.

Les nouvelles versions de Kubernetes introduisent parfois des modifications importantes. Nous vous recommandons donc de comparer la version actuelle de vos applications à la toute nouvelle version Kubernetes avant de procéder à la mise à jour sur vos clusters de production. Pour ce faire, créez un flux d'intégration continue afin de tester le comportement de votre application avant de passer à une nouvelle version Kubernetes.

Dans le processus de mise à jour, Amazon EKS lance de nouveaux nœuds de serveur d'API avec la version de Kubernetes mise à jour pour remplacer les versions existantes. Amazon EKS effectue la surveillance de l’état standard de l’infrastructure et de la disponibilité pour le trafic réseau sur ces nouveaux nœuds afin de vérifier qu’ils fonctionnent comme prévu. Cependant, une fois que vous avez lancé la mise à niveau du cluster, vous ne pouvez plus la suspendre ni l’arrêter. Si l'une de ces vérifications échoue, Amazon EKS annule le déploiement d'infrastructure, et votre cluster reste dans la version Kubernetes précédente. Les applications en cours d’exécution ne sont pas affectées et votre cluster ne se retrouve jamais dans un état non déterministe ou irrécupérable. Amazon EKS sauvegarde régulièrement tous les clusters gérés, et des mécanismes existent pour récupérer des clusters si nécessaire. Nous évaluons et améliorons constamment nos processus de gestion de l’infrastructure Kubernetes.

Pour mettre à jour le cluster, Amazon EKS requiert jusqu'à cinq adresses IP disponibles correspondant aux sous-réseaux que vous avez spécifiés lors de la création de votre cluster. Amazon EKS crée de nouvelles interfaces réseau élastiques de cluster (interfaces réseau) dans l'un des sous-réseaux que vous avez spécifiés. Les interfaces réseau peuvent être créées dans des sous-réseaux différents de ceux dans lesquels se trouvent vos interfaces réseau existantes. Assurez-vous donc que les règles de votre groupe de sécurité autorisent la communication de cluster requise pour tous les sous-réseaux que vous avez spécifiés lors de la création de votre cluster. Si l’un des sous-réseaux que vous avez spécifiés lors de la création du cluster n’existe pas, ne dispose pas d’adresses IP disponibles en nombre suffisant ou ne dispose pas de règles de groupe de sécurité permettant la communication nécessaire au cluster, la mise à jour peut échouer.

Pour garantir que le point de terminaison du serveur API de votre cluster soit toujours accessible, Amazon EKS fournit un plan de contrôle Kubernetes hautement disponible et effectue des mises à jour propagées des instances du serveur API pendant les opérations de mise à jour. Afin de tenir compte des changements d’adresses IP des instances du serveur API prenant en charge votre point de terminaison du serveur API Kubernetes, vous devez vous assurer que vos clients du serveur API gèrent efficacement les reconnexions. Les versions récentes de kubectl et des bibliothèques clientes Kubernetes officiellement prises en charge effectuent ce processus de reconnexion de manière transparente.

Note

Pour en savoir plus sur le contenu d’une mise à jour de cluster, consultez Bonnes pratiques pour les mises à niveau de cluster dans le Guide des bonnes pratiques EKS. Cette ressource vous aide à planifier une mise à niveau et à comprendre la stratégie de mise à niveau d’un cluster.

Considérations relatives au mode automatique Amazon EKS

  • La capacité de calcul du mode automatique Amazon EKS contrôle la version Kubernetes des nœuds. Après avoir mis à niveau le plan de contrôle, le mode automatique EKS commencera à mettre à jour progressivement les nœuds gérés. Le mode automatique EKS respecte les budgets de perturbation des pods.

  • Vous n’avez pas besoin de mettre à niveau manuellement les capacités du mode automatique Amazon EKS, notamment les capacités d’autoscaling de calcul, de stockage en bloc et d’équilibrage de charge.

Récapitulatif

Voici un résumé général du processus de mise à niveau du cluster Amazon EKS :Le résumé général du processus de mise à niveau du cluster Amazon EKS est le suivant :

  1. Assurez-vous que votre cluster est dans un état permettant la mise à niveau. Cela implique de vérifier les API Kubernetes utilisées par les ressources déployées dans le cluster, afin de s’assurer que le cluster ne présente aucun problème de santé. Nous vous recommandons d’utiliser les informations de mise à niveau Amazon EKS pour évaluer l’état de préparation de votre cluster à la mise à niveau.

  2. Mettez à niveau le plan de contrôle vers la version mineure suivante (par exemple, de 1.32 à 1.33).

  3. Mettez à niveau les nœuds du plan de données pour qu’ils correspondent à ceux du plan de contrôle.

  4. Mettez à niveau toutes les applications supplémentaires qui s’exécutent sur le cluster (par exemple, cluster-autoscaler).

  5. Mettez à niveau les modules complémentaires fournis par Amazon EKS, tels que ceux inclus par défaut :

  6. Mettez à niveau tous les clients qui communiquent avec le cluster (par exemple, kubectl).

Étape 1 : préparer la mise à niveau

Comparez la version Kubernetes de votre plan de contrôle de cluster à celle de vos nœuds.

  • Obtenez la version Kubernetes du plan de contrôle de votre cluster.

    kubectl version
  • Obtenez la version Kubernetes de vos nœuds. Cette commande renvoie tous les nœuds Amazon EC2, Fargate et hybrides autogérés et gérés. Chaque pod Fargate est répertorié comme son propre nœud.

    kubectl get nodes

Avant de mettre à jour votre plan de contrôle vers une nouvelle version de Kubernetes, assurez-vous que la version mineure de Kubernetes des nœuds gérés et des nœuds Fargate de votre cluster est identique à celle de votre plan de contrôle. Par exemple, si votre plan de contrôle exécute la version 1.29 et que l’un de vos nœuds exécute la version 1.28, vous devez mettre à jour vos nœuds vers la version 1.29 avant de mettre à jour votre plan de contrôle vers la version 1.30. Nous vous recommandons également de mettre à jour vos nœuds autogérés et hybrides vers la même version que votre plan de contrôle avant de mettre à jour ce dernier. Pour plus d’informations, consultez Mettre à jour un groupe de nœuds gérés pour votre cluster, Mettez à jour les nœuds autogérés de votre cluster et Mettre à niveau les nœuds hybrides pour votre cluster. Si vous disposez de nœuds Fargate dont la version mineure est inférieure à celle du plan de contrôle, veuillez d’abord supprimer le pod représenté par le nœud. Mettez ensuite à jour votre plan de contrôle. Les pods restants seront mis à niveau vers la nouvelle version après leur redéploiement.

Étape 2 : examiner les considérations relatives à la mise à niveau

Amazon EKS Cluster Insights analyse automatiquement les clusters par rapport à une liste de problèmes potentiels liés à la mise à niveau de la version Kubernetes, tels que l’utilisation d’API Kubernetes obsolètes. Amazon EKS met régulièrement à jour la liste des vérifications à effectuer en fonction des évaluations des modifications apportées au projet Kubernetes. Amazon EKS met également à jour la liste des vérifications à mesure que des modifications sont introduites dans le service Amazon EKS avec les nouvelles versions. Pour de plus amples informations, consultez Préparation aux mises à niveau des versions Kubernetes et résolution des erreurs de configuration grâce aux informations sur les clusters.

Veuillez consulter le Guide de migration des API obsolètes dans la documentation Kubernetes.

Vérifiez les informations relatives à la mise à niveau

Utilisez les informations relatives à la mise à niveau d’Amazon EKS pour identifier les problèmes. Pour de plus amples informations, consultez Afficher les informations de mise à niveau (console).

Considérations détaillées

  • Dans la mesure où Amazon EKS exécute un plan de contrôle hautement disponible, vous devez mettre à jour une seule version mineure à la fois. Pour plus d'informations sur cette exigence, consultez Kubernetes Version and Version Skew Support Policy (Politique de prise en charge des versions et versions asymétriques de Kubernetes). Supposez que la version actuelle de votre cluster soit la version 1.28 et que vous souhaitiez la mettre à jour vers la version 1.30. Vous devez d'abord mettre à jour la version 1.28 de votre cluster vers la version 1.29, puis mettre à jour la version 1.29 de votre cluster vers la version 1.30.

  • Vérifiez le décalage de version entre le kube-apiserver Kubernetes et le kubelet sur vos nœuds.

    • À partir de la version 1.28 de Kubernetes, le kubelet peut être jusqu’à trois versions mineures plus anciennes que le kube-apiserver. Voir la politique d'asymétrie des versions en amont de Kubernetes.

    • Si le kubelet de vos nœuds gérés et Fargate est en version Kubernetes 1.25 ou supérieure, vous pouvez mettre à jour votre cluster jusqu’à trois versions sans mettre à jour la version du kubelet. Par exemple, si la version du kubelet est 1.25, vous pouvez mettre à jour la version de votre cluster Amazon EKS de 1.25 vers 1.26 ou vers 1.27 et vers 1.28 alors que le kubelet reste sur la version 1.25.

  • Avant de commencer une mise à jour, il est recommandé de vous assurer que le kubelet de vos nœuds est à la même version Kubernetes que votre plan de contrôle.

  • Si votre cluster est configuré avec une version du plug-in CNI Amazon VPC pour Kubernetes antérieure à 1.8.0, nous vous recommandons de mettre à jour le plug-in vers la dernière version avant de mettre à jour votre cluster. Pour mettre à jour le plugin, consultez Attribuer des adresses IP aux pods avec Amazon VPC CNI.

Étape 3 : mettre à jour le plan de contrôle du cluster

Important

Amazon EKS a temporairement supprimé une fonctionnalité qui vous obligeait à utiliser un indicateur --force pour mettre à niveau votre cluster en cas de problèmes liés aux informations sur le cluster. Pour plus d’informations, consultez Annulation temporaire de l’application des informations de mise à niveau lors de la mise à jour de la version du cluster sur Github.

Amazon EKS actualise les informations sur le cluster 24 h après la « dernière heure d’actualisation ». Vous pouvez comparer l’heure à laquelle vous avez résolu un problème à la « dernière heure d’actualisation » des informations sur le cluster.

De plus, la mise à jour du statut des informations peut prendre jusqu’à 30 jours après la résolution d’un problème d’utilisation d’une API obsolète. Mettre à niveau les informations recherche toujours les utilisations d’API obsolètes sur une période de 30 jours consécutifs.

Vous pouvez soumettre la demande de mettre à niveau la version de votre plan de contrôle EKS à l’aide de :

Mettre à jour le cluster – eksctl

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

eksctl version

Pour les instructions d'installation et de mise à jour de eksctl, consultez la rubrique Installation dans la documentation eksctl.

Mettez à jour la version Kubernetes de votre plan de contrôle Amazon EKS. Remplacez <cluster-name> par le nom de votre cluster. Remplacez <version-number> par le numéro de version pris en charge par Amazon EKS vers lequel vous voulez mettre à niveau votre cluster. Pour obtenir la liste des numéros de version pris en charge, consultez Versions prises en charge par Amazon EKS.

eksctl upgrade cluster --name <cluster-name> --version <version-number> --approve

Cette mise à jour peut prendre plusieurs minutes.

Passez au Étape 4 : mettre à jour les composants du cluster.

Mettre à jour un cluster – Console AWS

  1. Ouvrez la console Amazon EKS.

  2. Sélectionnez Mettre à niveau maintenant pour le cluster que vous souhaitez mettre à niveau.

  3. Sélectionnez la version vers laquelle vous souhaitez mettre à jour votre cluster, puis choisissez Mettre à niveau.

  4. Cette mise à jour peut prendre plusieurs minutes. Passez au Étape 4 : mettre à jour les composants du cluster.

Mettre à jour un cluster – AWS CLI

  1. Vérifiez que l’interface AWS CLI est installée et que vous êtes connecté. Pour plus d’informations, consultez Installation ou mise à jour vers la dernière version de l’interface AWS CLI.

  2. Mettez à jour votre cluster Amazon EKS à l’aide de la commande AWS CLI suivante. Remplacez <cluster-name> et <region-code> par le nom et le code de région du cluster que vous voulez mettre à niveau. Remplacez <version-number> par le numéro de version pris en charge par Amazon EKS vers lequel vous voulez mettre à niveau votre cluster. Pour obtenir la liste des numéros de version pris en charge, consultez Versions prises en charge par Amazon EKS.

    aws eks update-cluster-version --name <cluster-name> \ --kubernetes-version <verion-number> --region <region-code>

    L'exemple qui suit illustre un résultat.

    { "update": { "id": "<update-id>", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "<version-number>" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] }
  3. Cette mise à jour peut prendre plusieurs minutes. Contrôlez l'état de mise à jour de votre cluster avec la commande suivante. En plus d’utiliser le même <cluster-name> et <region-code>, utilisez l’<update-id> renvoyé par la commande précédente.

    aws eks describe-update --name <cluster-name> \ --region <region-code> --update-id <update-id>

    Lorsqu'un état Successful s'affiche, la mise à jour est terminée.

  4. Passez au Étape 4 : mettre à jour les composants du cluster.

Étape 4 : mettre à jour les composants du cluster

  1. Une fois la mise à jour de votre cluster terminée, mettez à jour vos nœuds vers la même version Kubernetes que celle de votre cluster mis à jour. Pour plus d’informations, consultez Mettez à jour les nœuds autogérés de votre cluster, Mettre à jour un groupe de nœuds gérés pour votre cluster et Mettre à niveau les nœuds hybrides pour votre cluster. Tous les nouveaux pods lancés sur Fargate ont une version kubelet qui correspond à la version de votre cluster. Les pods Fargate existants ne sont pas modifiés.

  2. (Facultatif) Si vous avez déployé le composant Kubernetes Cluster Autoscaler sur votre cluster avant de mettre à jour le cluster, mettez ce composant à jour vers la version la plus récente correspondant à la version majeure et mineure de Kubernetes vers laquelle vous avez effectué la mise à jour.

    1. Ouvrez la page versions de Cluster Autoscaler dans un navigateur Web et recherchez la dernière version de Cluster Autoscaler qui correspond à la version majeure et mineure de Kubernetes de votre cluster. Par exemple, si la version Kubernetes de votre cluster est 1.30, recherchez la dernière version publiée de Cluster Autoscaler qui commence par 1.30. Enregistrez le numéro de version sémantique (1.30.n, par exemple) de cette version à utiliser à l'étape suivante.

    2. Identifiez l'image Cluster Autoscaler sur la version que vous avez enregistrée à l'étape précédente avec la commande suivante. Si nécessaire, remplacez X.XX.X par votre propre valeur.

      kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:vX.XX.X
  3. (Clusters avec nœuds GPU uniquement) Si votre cluster comporte des groupes de nœuds prenant en charge les GPU (par exemple, p3.2xlarge), vous devez mettre à jour le plug-in de dispositif NVIDIA pour KubernetesDaemonSet sur votre cluster. Remplacez <vX.X.X> par la version NVIDIA/k8s-device-plugin souhaitée 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
  4. Mettez à jour le plug-in CNI Amazon VPC pour Kubernetes, CoreDNS et les modules complémentaires kube-proxy. Nous vous recommandons de mettre à jour les modules complémentaires avec les versions minimales répertoriées dans les jetons de compte de service.

    • Si vous utilisez des modules complémentaires Amazon EKS, dans la console Amazon EKS, sélectionnez Clusters, puis le nom du cluster que vous avez mis à jour dans le volet gauche. Les notifications s'affichent dans la console. Elles vous informent qu'une nouvelle version est disponible pour chaque module complémentaire disposant d'une mise à jour disponible. Pour mettre à jour un module complémentaire, sélectionnez l'onglet Add-ons (Modules complémentaires). Dans l'une des zones d'un module complémentaire dont une mise à jour est disponible, sélectionnez Update now (Mettre à jour maintenant), sélectionnez une version disponible, puis cliquez sur Update (Mise à jour).

    • Vous pouvez également utiliser l’interface AWS CLI ou eksctl pour mettre à jour les modules complémentaires. Pour de plus amples informations, consultez Mettre à jour un module complémentaire Amazon EKS.

  5. Si nécessaire, mettez à jour votre version de kubectl. Vous devez utiliser une version kubectl qui se situe à une différence de version mineure près du plan de contrôle de votre cluster Amazon EKS.

Réduire la version Kubernetes d’un cluster Amazon EKS

Il n’est pas possible de réduire la version Kubernetes d’un cluster Amazon EKS. À la place, créez un nouveau cluster sur une version Amazon EKS précédente et migrer les charges de travail.