Mettre à jour etcd de la version v3.5 à la version v3.6
Dans le cas général, la mise à niveau d’etcd v3.5 vers v3.6 peut être une mise à niveau progressive sans interruption de service :
- un à un, arrêtez les processus etcd v3.5 et remplacez-les par des processus etcd v3.6
- après avoir lancé tous les processus v3.6, les nouvelles fonctionnalités de la version v3.6 sont disponibles pour le cluster
Avant de lancer la mise à jour , lisez le reste du présent guide afin de vous préparer.
Listes de vérification pour la mise à jour
Mise à jour 3.5
Avant de mettre à jour vers la version 3.6, assurez-vous que tous vos membres 3.5 sont mis à jour vers la version 3.5.32 ou ultérieure
. Les correctifs 3.5.24 à 3.5.26 corrigent plusieurs blocages potentiels liés à la mise à jour ; 3.5.32
ajoute --v2-deprecation=write-only-skip-check et étend etcdutl check v2store afin d’inspecter les enregistrements WAL ainsi que l’instantané v2.
Magasin V2
Si le drapeau --enable-v2 n’est pas configuré ou est défini à false, aucune action supplémentaire n’est requise.
Si --enable-v2 est configuré, exécutez la commande etcdutl check v2store pour vérifier si le v2store contient des données non liées aux membres (données personnalisées). Si aucune donnée personnalisée n’est présente, le drapeau peut être supprimé en toute sécurité. Sinon, consultez le guide de migration v2
pour plus de détails.
Drapeaux ajoutés
Drapeaux supprimés
Drapeaux obsolètes
Le drapeau etcd --experimental-bootstrap-defrag-threshold-megabytes a été déprécié.
Le drapeau etcd --experimental-compaction-batch-limit a été déprécié.
Le drapeau etcd --experimental-compact-hash-check-time a été déprécié.
Le drapeau etcd --experimental-compaction-sleep-interval a été déprécié.
Le drapeau etcd --experimental-corrupt-check-time a été déprécié.
Le drapeau etcd --experimental-enable-distributed-tracing a été déprécié.
Le drapeau etcd --experimental-distributed-tracing-address a été déprécié.
Le drapeau etcd --experimental-distributed-tracing-instance-id a été déprécié.
Le drapeau etcd --experimental-distributed-tracing-sampling-rate a été déprécié.
Le drapeau etcd --experimental-distributed-tracing-service-name a été déprécié.
Le drapeau etcd --experimental-downgrade-check-time a été déprécié.
Le drapeau etcd --experimental-max-learners a été déprécié.
Le drapeau etcd --experimental-memory-mlock a été déprécié.
Le drapeau etcd --experimental-peer-skip-client-san-verification a été déprécié.
Le drapeau etcd --experimental-snapshot-catchup-entries a été déprécié.
Le drapeau etcd --experimental-warning-apply-duration a été déprécié.
Le drapeau etcd --experimental-warning-unary-request-duration a été déprécié.
Le drapeau etcd --experimental-watch-progress-notify-interval a été déprécié.
Migration des options expérimentales de v3.5 vers les portes fonctionnelles
Porte fonctionnelle correspondant à etcd --experimental-compact-hash-check-enabled=true
Porte fonctionnelle correspondant à etcd --experimental-initial-corrupt-check=true
Porte fonctionnelle correspondant à etcd --experimental-enable-lease-checkpoint=true
Porte fonctionnelle correspondant à etcd --experimental-enable-lease-checkpoint-persist=true
Porte fonctionnelle correspondant à etcd --experimental-stop-grpc-service-on-defrag=true
Porte fonctionnelle correspondant à etcd --experimental-txn-mode-write-with-shared-buffer=false
Drapeaux avec de nouvelles valeurs par défaut
Valeur par défaut d’origine du drapeau etcd --snapshot-count=100000
Valeur par défaut d’origine du drapeau etcd --v2-deprecation='not-yet'
Valeur par défaut d’origine du drapeau etcd --discovery-fallback='proxy'
Différence entre les métriques Prometheus
Liste de vérification pour la mise à jour du serveur
Exigences de mise à jour
Pour mettre à jour un déploiement etcd existant vers la version 3.6, le cluster en cours d’exécution doit être la version 3.5 ou ultérieure. Si la version est antérieure à 3.5, veuillez mettre à jour vers la version 3.5 avant de procéder à la mise à jour vers la version 3.6.
En outre, pour garantir une mise à niveau progressive sans incident, le cluster en cours d’exécution doit être sain. Vérifiez l’état de santé du cluster à l’aide de la commande etcdctl endpoint health avant de poursuivre.
Préparation
Avant de mettre à jour etcd, testez toujours les services dépendants d’etcd dans un environnement de préproduction avant de déployer la mise à jour dans l’environnement de production.
Avant de commencer, téléchargez la sauvegarde d’instantané
. Si une erreur survient lors de la mise à jour, il sera possible d’utiliser cette sauvegarde pour annuler
la mise à jour et revenir à la version existante d’etcd. Veuillez noter que la commande snapshot ne sauvegarde que les données v3.
Versions mixtes
Lors d’une mise à jour, un cluster etcd prend en charge des versions mixtes de membres et fonctionne selon le protocole de la version commune la plus basse. Le cluster n’est considéré comme mis à jour qu’une fois que tous ses membres ont été mis à jour vers la version v3.6. En interne, les membres etcd négocient entre eux afin de déterminer la version globale du cluster, qui contrôle la version signalée et les fonctionnalités prises en charge.
Retour arrière
Avant de mettre à jour votre cluster etcd, créez et téléchargez une sauvegarde sous forme d’instantané de votre cluster etcd. Cet instantané peut être utilisé pour restaurer le cluster dans son état antérieur à la mise à jour si nécessaire. Si les utilisateurs rencontrent des problèmes pendant la mise à jour, ils doivent d’abord identifier et résoudre la cause racine. Si le cluster est toujours dans un état mixte — où au moins un membre reste sur la version v3.5 —, il est possible de remplacer le binaire ou l’image par la version v3.5 antérieure, ou de restaurer directement le cluster à l’aide de l’instantané. Dans cet état mixte, le cluster continue de fonctionner en tant que cluster v3.5, permettant ainsi un retour arrière sans suivre un processus formel de rétrogradation.
Toutefois, une fois que tous les membres ont été mis à jour vers la version v3.6, le cluster est considéré comme entièrement mis à jour et le simple remplacement des binaires n’est plus un retour arrière valide. Les options de récupération consistent à restaurer depuis l’instantané pris avant la mise à jour ou à suivre le guide officiel de rétrogradation pour revenir à la version d’origine en assurant la cohérence et en évitant toute corruption des données.
Procédure de mise à jour
Cet exemple montre comment mettre à jour un cluster etcd v3.5 composé de 3 membres, en cours d’exécution sur une machine locale.
Étape 1 : vérifier les exigences de mise à jour
Le cluster est-il sain et en cours d’exécution sous la version 3.5.x ?
Étape 2 : télécharger la sauvegarde d’instantané depuis le leader
Téléchargez l’instantané de sauvegarde afin de disposer d’une voie de retour en cas de problème.
Le leader etcd possède toujours les données d’application les plus récentes ; récupérez donc l’instantané depuis le leader :
Étape 3 : arrêter un serveur etcd existant
Lorsque chaque processus etcd est arrêté, les autres membres du cluster enregistrent des erreurs attendues. Cela est normal, car la connexion avec un membre du cluster a été (temporairement) interrompue :
Étape 4 : redémarrer le serveur etcd avec la même configuration
Redémarrez le serveur etcd avec la même configuration, mais avec le binaire etcd mis à jour.
Le nouvel etcd v3.6 publiera ses informations dans le cluster. À ce stade, le cluster continue de fonctionner selon le protocole v3.5, qui constitue la version la plus basse commune.
{"level":"info","ts":"2025-03-01T04:40:36.828+0530","caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.5"}
{"level":"info","ts":"2025-03-01T04:40:36.889+0530","caller":"membership/cluster.go:539","msg":"updated cluster version","cluster-id":"59a05384c9b79ee","local-member-id":"bf9071f4639c75cc","from":"3.0","to":"3.5"}
{"level":"info","ts":"2025-03-01T04:40:36.828+0530","caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.5"}
{"level":"info","ts":"2025-03-01T04:40:36.894+0530","caller":"etcdserver/server.go:1686","msg":"published local member to cluster through raft","local-member-id":"bf9071f4639c75cc","local-member-attributes":"{Name:node1 ClientURLs:[http://127.0.0.1:2379]}","cluster-id":"59a05384c9b79ee","publish-timeout":"7s"}
Vérifiez que chaque membre, puis l’ensemble du cluster, devient sain avec le nouveau binaire etcd v3.6 :
Les membres non mis à jour afficheront des avertissements tels que les suivants jusqu’à ce que tout le cluster soit mis à jour.
Cela est attendu et cessera une fois que tous les membres du cluster etcd auront été mis à jour vers la version 3.6 :
Étape 5 : répéter l’étape 3 et l’étape 4 pour les membres restants
Lorsque tous les membres sont mis à jour, le cluster signalera avec succès la mise à jour vers la version v3.6 :
Membre 1 :
{"level":"info","ts":"2025-03-01T04:58:32.375+0530","caller":"etcdserver/server.go:2149","msg":"updating cluster version using v3 API","from":"3.5","to":"3.6"}{"level":"info","ts":"2025-03-01T04:58:32.377+0530","caller":"etcdserver/server.go:2164","msg":"cluster version is updated","cluster-version":"3.6"}
Membre 2 :
{"level":"info","ts":"2025-03-01T04:58:32.377+0530","caller":"membership/cluster.go:539","msg":"updated cluster version","cluster-id":"59a05384c9b79ee","local-member-id":"91bc3c398fb3c146","from":"3.5","to":"3.6"}
Membre 3 :
{"level":"info","ts":"2025-03-01T04:58:32.377+0530","caller":"membership/cluster.go:539","msg":"updated cluster version","cluster-id":"59a05384c9b79ee","local-member-id":"fd422379fda50e48","from":"3.5","to":"3.6"}