3
votes

(Comment) les mises à niveau automatiques des pools de nœuds dans GKE fonctionnent-elles réellement?

Nous avons un déploiement assez important de kubernetes sur GKE et nous voulions nous simplifier la vie en activant les mises à niveau automatiques. La documentation sur le sujet vous explique comment pour l'activer, mais pas comment cela fonctionne .

Nous avons activé la fonctionnalité sur un cluster de test, mais aucun nœud n'a jamais été mis à niveau (bien que l'interface utilisateur ne cesse de nous dire que "des mises à jour sont disponibles").

La documentation indique qu'il serait mis à jour vers la "dernière version stable" et qu'il se produit "à intervalles réguliers à la discrétion de l'équipe GKE" - ce qui n'est pas très utile.

L'interface utilisateur indique toujours: "Prochaine mise à jour automatique: non planifiée"

Quelqu'un a-t-il utilisé cette fonctionnalité en production et peut-il faire la lumière sur ce qu'elle va réellement faire?

Ce que j'ai fait:

  • J'ai activé la fonctionnalité sur les nodepools ( pas sur le cluster lui-même)
  • J'ai configuré une fenêtre de maintenance
  • La version du cluster était 1.11.7-gke.3
  • Nodepools avait la version 1.11.5-gke.X
  • La dernière version disponible était 1.11.7-gke.6

Ce à quoi je m'attendais:

  • Le nodepool serait mis à jour vers 1.11.7-gke.3 (la version de cluster par défaut) ou 1.11.7-gke.6 (la version la plus récente )
  • La mise à jour se produirait dans la prochaine fenêtre de maintenance
  • La mise à jour fonctionnerait autrement comme une mise à jour "manuelle"

Ce qui s'est réellement passé:

  • Rien
  • Les nodepools sont restés sur 1.11.5-gke.X pendant plus d'une semaine

Ma question

  • La version nodepool est-elle censée être mise à jour?
  • Si oui, à quelle heure?
  • Si oui, vers quelle version?

0 commentaires

3 Réponses :


-2
votes

Cette fonctionnalité remplace les VM (nœuds Kubernetes) de votre pool de nœuds exécutant «l'ancienne» version de Kubernetes par des VM exécutant la «nouvelle» version.

L'opération de «mise à niveau» du pool de nœuds est effectuée de manière continue: c'est not like GKE supprime toutes vos VM et les recrée simultanément (sauf lorsque vous n'avez qu'un seul nœud dans votre cluster). Par défaut, les nœuds sont remplacés par des nœuds plus récents un par un (bien que cela puisse changer).

GKE utilise principalement en interne les fonctionnalités des groupes d'instances gérés a> pour gérer les opérations sur les pools de nœuds.

Vous pouvez trouver la documentation sur comment planifier les mises à jour des nœuds en spécifiant certaines "fenêtres de maintenance" afin que vous soyez le moins touché. (Cet article donne également un peu plus d'informations sur la façon dont les mises à niveau se produisent.)

Cela dit, vous pouvez désactiver les mises à niveau automatiques et mettre à jour votre cluster manuellement (bien que ce ne soit pas recommandé). Certains utilisateurs de GKE ont des milliers de nœuds. Par conséquent, pour eux, il n'est pas possible de mettre à niveau les VM une par une.

Pour cela, GKE propose une option qui vous permet de choisir "combien de nœuds sont mis à jour à la fois" :

gcloud container clusters upgrade \
    --concurrent-node-count=CONCURRENT_NODE_COUNT

La documentation de ce drapeau dit:

Le nombre de nœuds à mettre à niveau simultanément. Les valeurs valides sont [1, 20]. Il est recommandé de définir cette valeur à 3% au maximum de la taille de votre cluster. "


2 commentaires

J'ai fourni des informations supplémentaires dans la question, pour clarifier ce que je dois savoir. Ma question porte moins sur le fonctionnement de la fonctionnalité lorsqu'elle fonctionne, mais sur la raison pour laquelle elle n'a aucun effet lorsque je l'active dans GKE.


Ouais, vous auriez probablement dû ajouter cela plus tôt, non. :)



4
votes

Je vais enfin répondre moi-même. La mise à jour automatique fonctionne , même s’il a fallu plusieurs jours à une semaine pour que la version soit mise à jour.

Il n'y a aucune indication de la date de mise à jour prévue, ni aucun commentaire autre que la mise à jour de la version.

Il passera à la version principale actuelle du cluster.

Ajout: Cela ne fonctionne toujours pas de manière fiable, et toujours aucun moyen de déboguer si ce n'est pas le cas. Une information que j'ai obtenue est que le mécanisme ne fonctionne pas si vous avez initialement fourni une version spécifique pour le pool de nœuds. Comme il n'est pas possible de déduire le fonctionnement interne des mises à jour automatiques, nous avons dû recourir à une nouvelle vérification manuelle du statut.


3 commentaires

c'est arrivé sur la «fenêtre de maintenance» que vous avez définie


La fenêtre a été définie, mais je ne peux pas être sûr si les mises à jour se sont déroulées pendant la fenêtre ...


J'attends plus de 10 jours ... et toujours rien: (Je pense que nous n'utiliserons plus la mise à jour automatique. Nous devrons le faire manuellement.



0
votes

Je voulais partager deux autres possibilités pour expliquer pourquoi un pool de nœuds ne pouvait pas être mis à niveau automatiquement ou programmé pour être mis à niveau.

L'un de nos projets avait le même problème où la version principale avait été mise à niveau automatiquement vers

code> 1.14.10-gke.27 mais notre pool de nœuds est resté bloqué à 1.14.10-gke.24 pendant plus d'un mois.

Atteindre un nœud quota

La mise à niveau du pool de nœuds peut échouer en raison d'un quota de nœuds (bien que je ne sois pas sûr que la console Web indique Prochaine mise à jour automatique: non planifiée ). Dans la documentation sur les mises à niveau des nœuds , il suggère nous pouvons exécuter ce qui suit pour afficher les opérations de mise à niveau qui ont échoué:

gcloud container operations list --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/[PROJECT_ID]/zones/[ZONE]/clusters/[CLUSTER_NAME]"

Les mises à niveau automatiques des nœuds concernent uniquement les versions mineures +

Après avoir épuisé mes étapes de dépannage, j'ai atteint à l'assistance GCP et a ouvert un dossier ( Case 23113272 pour toute personne travaillant chez Google). Ils m'ont dit ce qui suit:

Mise à niveau automatique des nœuds: La version du nœud n'a pas pu être mise à jour automatiquement, laissez-moi vous expliquer, il existe trois mises à niveau dans un nœud: les versions mineures (1.X), les versions de correctif (1.XY) et les mises à jour de sécurité et les corrections de bogues (1.XY-gke.N) , veuillez consulter cette documentation [2] la mise à niveau automatique des nœuds fonctionne à partir d'une version mineure et dans votre cas, la mise à niveau était une mise à jour de sécurité qui ne peut pas être mise à niveau automatiquement.

J'ai répondu et ils ont confirmé que les mises à jour automatiques des nœuds ne se produiront que pour les versions mineures et supérieures. J'ai demandé à ce qu'ils soumettent une demande de mise à jour de leur documentation car (au moment de cette réponse ), il n'est décrit nulle part dans leur nœud auto- mettre à jour la documentation .


0 commentaires