Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Mettre à niveau un pool de nœuds

Dernière mise à jour :Sep 12, 2026

Lors de la mise à niveau de la version Kubernetes du cluster, mettez à niveau le pool de nœuds rapidement après celle du plan de contrôle, de préférence pendant les heures creuses. La mise à niveau d'un pool de nœuds inclut la mise à niveau de kubelet et du runtime de conteneur. Avant l'opération, ACK exécute une vérification préalable pour identifier les facteurs de risque et garantir le bon déroulement de la mise à niveau.

Considérations

  • Vérifications préalables à la mise à niveau

    • Les mises à niveau de cluster utilisent yum pour télécharger les packages logiciels requis. Si vous avez modifié manuellement les configurations réseau des nœuds ou utilisé une image de système d'exploitation (OS) personnalisée, assurez-vous que yum fonctionne correctement sur vos nœuds. Exécutez yum makecache pour le vérifier.

    • ACK ne valide pas strictement les images OS personnalisées. Par conséquent, nous ne pouvons pas garantir le succès de la mise à niveau.

    • Si vous avez apporté des modifications de configuration au cluster, telles que l'activation de la partition SWAP ou la modification des configurations de kubelet ou du runtime via des opérations en ligne de commande, la mise à niveau du cluster peut échouer ou vos configurations personnalisées peuvent être écrasées.

    • Après la mise à niveau d'un cluster vers la version 1.18, ACK configure par défaut la politique de réservation des ressources des nœuds. Si aucune réservation de ressources n'est configurée et que l'utilisation des ressources des nœuds est élevée, les pods risquent de ne pas être ordonnancés rapidement après leur éviction. Réservez des ressources pour vos nœuds. Maintenez l'utilisation du CPU à 50 % ou moins et celle de la mémoire à 70 % ou moins.

    • Dans les clusters exécutant la version 1.24 ou antérieure, si les pods d'une charge de travail sont configurés uniquement avec une sonde de démarrage (Startup Probe), les pods passent brièvement à l'état NotReady après le redémarrage de kubelet. Déployez les charges de travail avec plusieurs réplicas sur différents nœuds. Cela garantit qu'un nombre suffisant de pods reste disponible si un nœud redémarre.

    • Gardez au moins 20 % d'espace disque libre. Cela permet d'éviter l'éviction des pods due à une capacité disque insuffisante pendant une mise à niveau.

  • Contraintes de mise à niveau du pool de nœuds

    • Les mises à niveau des pools de nœuds prennent uniquement en charge les opérations de scale-out. Les opérations de scale-in ne sont pas prises en charge.

    • Si vous disposez de nœuds de calcul non gérés qui n'appartiennent à aucun pool de nœuds, migrez-les. Pour plus d'informations, consultez Migrer des nœuds non gérés vers un pool de nœuds.

    • La mise à niveau des pools de nœuds Lingjun n'est pas prise en charge lors de la mise à niveau d'un cluster ACK.

    • Lorsque vous mettez à niveau les nœuds en remplaçant leurs disques, ACK les réinitialise en fonction de la configuration actuelle du pool de nœuds. Cela inclut la méthode de connexion, les libellés, les taints, l'image OS et la version du runtime. Pour mettre à jour les configurations du pool de nœuds, consultez Modifier un pool de nœuds. Si vous avez modifié les nœuds d'une autre manière, la mise à niveau écrasera vos modifications.

    • Si un pod sur un nœud référence un HostPath pointant vers le disque système, les données du répertoire HostPath seront perdues après une mise à niveau par remplacement de disque.

    • Lors de la mise à niveau d'un pool de nœuds dans un cluster de version 1.31 ou antérieure, le processus met également à niveau le plug-in NVIDIA Device et réinitialise toutes ses configurations non standard.

  • mise à l'échelle des nœuds et ordonnancement

    • Si la fonctionnalité de mise à l'échelle des nœuds est activée sur le cluster, cluster-autoscaler est automatiquement mis à jour vers la dernière version après une mise à niveau réussie afin de garantir que la fonctionnalité de mise à l'échelle automatique ne soit pas affectée. Après la mise à niveau du cluster, confirmez que la version de cluster-autoscaler est correcte. Pour plus d'informations, consultez Activer la mise à l'échelle automatique des nœuds.

    • Lors d'une mise à niveau de cluster, les nœuds dont le Scaling Mode est défini sur Swift peuvent échouer à la mise à niveau car ils sont arrêtés. Si des nœuds ne sont pas mis à niveau en raison du mode Swift une fois la mise à niveau terminée, nous vous recommandons de les supprimer manuellement.

  • Réseau et disponibilité des services

    • Si un pod utilise l'adresse SLB d'un service LoadBalancer pour accéder à un autre pod sur le même nœud, et que la propriété externalTrafficPolicy du service est définie sur Local, les deux pods peuvent ne plus se trouver sur le même nœud après la rotation des nœuds. Cela peut entraîner l'échec de la connexion réseau.

    • Lorsque vous mettez à niveau les nœuds en remplaçant leurs disques, ACK draine les nœuds. Ce processus évince les pods vers d'autres nœuds actifs tout en respectant le Pod Disruption Budget (PDB). Pour garantir une haute disponibilité, déployez les charges de travail avec plusieurs réplicas sur différents nœuds. Configurez également un PDB pour les services critiques afin de contrôler le nombre de pods pouvant être perturbés simultanément.

      Le délai d'attente par défaut pour le drainage d'un nœud est de 30 minutes. Si la migration des pods n'est pas terminée dans ce délai, ACK interrompt la mise à niveau pour assurer la stabilité du service.

Fonctionnalités

Une mise à niveau de pool de nœuds inclut la mise à niveau de kubelet et du runtime de conteneur.

  • Mise à niveau de kubelet : le kubelet sur chaque nœud du pool est mis à niveau pour correspondre à la version du plan de contrôle. Méthode par défaut : mise à niveau sur place.

  • Mise à niveau du runtime de conteneur : mettez à niveau le runtime de conteneur sur les nœuds lorsqu'une nouvelle version est disponible.

    • La migration de Docker vers containerd remplace le disque système des nœuds du pool, effaçant toutes les données du disque système. Sauvegardez les données critiques avant la mise à niveau. Consultez Migrer le runtime de conteneur des nœuds de Docker vers containerd.

    • À l'exception des nœuds ContainerOS, la mise à niveau d'une version de containerd vers une version plus récente effectue par défaut une mise à niveau sur place. Le fichier /etc/containerd/config.toml sur le nœud est remplacé par la nouvelle version fournie par ACK.

      Important
    • Dans les clusters exécutant Kubernetes 1.24 ou une version antérieure, la mise à niveau de Docker remplace par défaut le disque système des nœuds du pool, effaçant toutes les données du disque système. Sauvegardez les données critiques avant la mise à niveau.

Procédure

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Nodes > Node Pools.

  3. Sur la page Node Pools, localisez le pool de nœuds cible, cliquez sur l'icône image dans la colonne Actions, puis sélectionnez Kubelet Update. Configurez les paramètres suivants.

    Paramètre

    Description

    Kubelet Update Information

    Affichez la version actuelle de kubelet et sélectionnez la version cible.

    Runtime Update Information

    Affichez la version actuelle du runtime de conteneur et sélectionnez la version cible.

    Update Nodes

    Sélectionnez les nœuds à mettre à niveau : tous ou des nœuds spécifiques.

    Méthode de mise à niveau

    Sélectionnez In-place Upgrade ou Upgrade by Replacing System Disk. Consultez Référence : Mise à niveau sur place et mise à niveau par remplacement du disque système.

    • In-place Upgrade : ACK met à jour les composants directement sur les nœuds existants. Une mise à niveau sur place ne remplace pas le disque système ni ne réinitialise le nœud, et les données ne sont pas affectées.

    • Upgrade by Replacing System Disk : ACK réinitialise les nœuds en remplaçant leur disque système. Les attributs de l'instance tels que le nom, l'ID et l'adresse IP restent inchangés, mais les données du disque système sont supprimées. Les disques de données attachés ne sont pas affectés.

    Ignore Warnings

    Indique s'il faut poursuivre si la vérification préalable signale des avertissements. Par exemple, si un pod utilise un hostPath pointant vers le disque système.

    Batch Update Policy

    Maximum Number of Nodes per Batch

    Les nœuds sont mis à niveau par lots jusqu'à ce maximum. Consultez Référence : Mise à niveau sur place et mise à niveau par remplacement du disque système.

    Automatic Pause Policy

    La politique de pause pour le processus de mise à niveau.

    Interval Between Batches

    Intervalle entre les lots lorsqu'aucune pause automatique n'est configurée. Valeurs valides : 5 à 120 minutes.

    Auto Snapshot

    Si le disque système d'un nœud contient des données importantes, créez des snapshots avant de mettre à niveau le pool de nœuds. Les snapshots entraînent des frais (voir Facturation des snapshots) et la progression de la création change dynamiquement. Après la mise à niveau, supprimez les snapshots inutiles.

    Remarque

    Si vous sélectionnez Upgrade by replacing system disk, activez la création automatique de snapshots. Les snapshots engendrent des coûts. Consultez Facturation des snapshots.

  4. Cliquez sur Precheck. Une fois la vérification préalable réussie, suivez les instructions à l'écran pour démarrer la mise à niveau.

    Remarque

    Si la vérification préalable échoue ou renvoie des avertissements, consultez Correctifs pour les éléments de vérification ayant échoué ou affichez le Check Report pour résoudre les problèmes.

    Pendant la mise à niveau, vous pouvez :

    • Pause : place le pool de nœuds dans un état intermédiaire. Évitez d'autres opérations sur le cluster et terminez la mise à niveau rapidement. Les mises à niveau en pause depuis plus de sept jours sont automatiquement interrompues, et les événements et journaux associés sont effacés.

      Vous ne pouvez pas revenir aux versions précédentes de kubelet ou du runtime de conteneur sur les nœuds déjà mis à niveau.

    • Cancel : annule la mise à niveau. Après avoir cliqué sur Cancel, vous ne pouvez pas revenir aux versions précédentes de kubelet ou du runtime de conteneur sur les nœuds déjà mis à niveau.

    Pour vérifier, accédez à la page Nodes, cliquez sur le nom d'un nœud et vérifiez les versions de kubelet et du runtime de conteneur dans l'onglet Basic Information.

Mises à niveau sur place et par remplacement

Processus de mise à niveau

La mise à niveau sur place et la mise à niveau par remplacement du disque système suivent ce processus. La mise à niveau du pool de nœuds traite les nœuds par lots, en commençant par 1 et en doublant (1, 2, 4, 8...) jusqu'à atteindre le nombre maximal de traitements simultanés. Par exemple, avec un maximum de 4 : le lot 1 met à niveau 1 nœud, le lot 2 met à niveau 2 nœuds, puis tous les lots suivants mettent à niveau 4 nœuds.

La figure suivante montre l'exécution par lots avec N nœuds simultanés maximum. Les tailles des lots sont 1, 2, 4, 8... jusqu'à atteindre N.

image

Logique de mise à niveau sur place

  1. Effectuez une vérification préalable à la mise à niveau. Si une exception critique est détectée dans un conteneur (par exemple, les requêtes ttrpc ne peuvent pas être traitées ou les processus de conteneur ne répondent pas aux signaux), la mise à niveau est arrêtée.

  2. Enregistrez l'état actuel des conteneurs et des pods dans un répertoire temporaire.

  3. Mettez à niveau containerd, crictl et les fichiers de configuration associés vers les nouvelles versions fournies par ACK, puis redémarrez containerd. Cette action n'affecte pas les conteneurs en cours d'exécution. Si vous avez précédemment modifié le fichier de configuration /etc/containerd/config.toml sur le nœud, vos modifications seront écrasées par cette mise à niveau.

  4. Assurez-vous que kubelet fonctionne correctement et que le nœud est prêt.

Logique de mise à niveau par remplacement

  1. Effectuez le drainage du nœud. Si le nœud est programmable, le système le définit comme non programmable.

  2. Arrêtez l'instance ECS, ce qui arrête le nœud.

  3. Remplacez le disque système. L'ID du disque système change, mais le type de disque cloud, l'adresse IP de l'instance et l'adresse MAC de l'interface réseau élastique restent identiques.

  4. Réinitialisez le nœud.

  5. Redémarrez le nœud. Le nœud devient prêt et est défini comme programmable.

    Si un nœud était non programmable avant la mise à niveau, il reste non programmable par la suite.

FAQ

Retour arrière après mise à niveau

Vous ne pouvez pas revenir aux versions précédentes de kubelet et du runtime de conteneur après une mise à niveau. Vous pouvez revenir à la version précédente de l'OS, mais uniquement si le pool de nœuds prend toujours en charge l'image d'origine.

Impact sur les services pendant la mise à niveau

Mise à niveau sur place : les pods ne sont pas redémarrés, donc les services ne sont pas affectés.

Mise à niveau par remplacement du disque système : cette méthode effectue le drainage des nœuds. Les services continuent sans interruption si les pods implémentent un arrêt gracieux (voir Arrêt gracieux et déploiements sans temps d'arrêt dans Kubernetes) et disposent de plusieurs réplicas sur différents nœuds. Définissez le nombre de mises à niveau simultanées en dessous de votre nombre de réplicas pour éviter de mettre à niveau plusieurs réplicas simultanément.

Durée d'un lot de mise à niveau

Mise à niveau sur place : moins de 5 minutes.

Mise à niveau par remplacement du disque système : généralement moins de 8 minutes sans snapshots. Avec des snapshots, la mise à niveau commence après la fin de la création des snapshots, et le temps total dépend du temps de création des snapshots. Le pool de nœuds autorise jusqu'à 40 minutes pour la création des snapshots. Si la création des snapshots dépasse 40 minutes, la mise à niveau expire et échoue. Ignorez la création de snapshots si aucune donnée métier ne se trouve sur le disque système.

Perte de données pendant la mise à niveau

Lors de la mise à niveau du runtime de conteneur par remplacement du disque système, sauvegardez toutes les données importantes du disque système au préalable. Les disques de données ne sont pas affectés.

Changements d'adresse IP après remplacement

Lorsque le disque système est remplacé, son ID change, mais le type de disque cloud, l'adresse IP de l'instance et l'adresse MAC de l'interface réseau élastique restent identiques. Consultez Remplacer le disque système (changer l'OS).

Mise à niveau des nœuds non gérés

Les clusters créés avant l'introduction de la fonctionnalité de pool de nœuds peuvent contenir des nœuds non gérés. Vous pouvez migrer ces nœuds non gérés vers un pool de nœuds, puis mettre à niveau le pool de nœuds. Consultez Migrer des nœuds non gérés vers un pool de nœuds.

Répertoire Docker persistant après migration

Le répertoire Docker contient des fichiers gérés par Kubernetes (conteneurs, images, journaux) et tous les chemins personnalisés que vous avez créés. Supprimez-le du disque de données après avoir changé de runtime s'il n'est plus nécessaire.

Restauration des données à partir de snapshots

Lors de la mise à niveau d'un pool de nœuds, vous pouvez créer des snapshots pour les nœuds. Les snapshots sont conservés par défaut pendant sept jours, mais peuvent être supprimés plus tôt. Dans des cas extrêmes tels qu'une perte de données, restaurez les données en utilisant les méthodes suivantes.

  • Pour une mise à niveau sur place, telle que la mise à niveau de la version de kubelet uniquement, vous pouvez restaurer les données en revenant directement au snapshot. Consultez Revenir à un disque cloud à l'aide d'un snapshot.

  • Pour une mise à niveau par remplacement du disque système, telle que la mise à niveau du système d'exploitation ou du runtime de conteneur, vous pouvez restaurer les données en créant un nouveau disque cloud à partir du snapshot. Consultez Créer un disque de données à partir d'un snapshot.

Résolution du problème d'entrées négatives (negative dentry)

L'exécution des mises à niveau de kubelet et de containerd déclenche systemctl daemon-reload. Le service systemd surveille les répertoires associés aux unités .path unit et à leurs parents (par défaut /, /run et /run/systemd). Un grand nombre d'inodes dans ces répertoires peut provoquer un soft lockup du noyau, affectant le fonctionnement du nœud.

Étant donné que le nombre d'inodes ne peut pas être obtenu directement, effacez les dentries pendant les heures creuses :

echo 2 > /proc/sys/vm/drop_caches
Si les répertoires associés à l'unité .path unit et à leurs parents ne contiennent pas beaucoup d'inodes, ignorez cette vérification.

Références