Mettre à jour etcd de la version v3.5 à la version v3.6
Dans le cas général, la mise à niveau de 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é.
Drapeaux équivalents des fonctionnalités v3.5
drapeau équivalent pour la fonctionnalité etcd --experimental-compact-hash-check-enabled=true
drapeau équivalent pour la fonctionnalité etcd --experimental-initial-corrupt-check=true
drapeau équivalent pour la fonctionnalité etcd --experimental-enable-lease-checkpoint=true
drapeau équivalent pour la fonctionnalité etcd --experimental-enable-lease-checkpoint-persist=true
drapeau équivalent pour la fonctionnalité etcd --experimental-stop-grpc-service-on-defrag=true
drapeau équivalent pour la fonctionnalité etcd --experimental-txn-mode-write-with-shared-buffer=false
Drapeaux avec de nouvelles valeurs par défaut
Drapeau par défaut par défaut etcd --snapshot-count=100000
Drapeau par défaut etcd --v2-deprecation='not-yet'
Drapeau par défaut 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 de etcd. Veuillez noter que la snapshot commande 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. Internement, 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.
Annuler
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 la récupération à l’aide des binaires n’est plus possible. Dans ce cas, la seule option de récupération consiste à restaurer à partir de l’instantané pris avant la mise à jour. Si les utilisateurs souhaitent revenir à la version d’origine après une mise à jour complète, ils doivent suivre le guide officiel de rétrogradation afin d’assurer la cohérence et éviter 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 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 est garanti pour avoir 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 la nouvelle 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"}