L’issue s’ouvre déjà remplie avec le titre et l’adresse de cette page.
Votre API server Kubernetes répond lentement ? Les pods mettent du temps à démarrer ? Le problème vient peut-être d'etcd, la base de données qui stocke l'intégralité de l'état de votre cluster. Ce guide vous apprend à diagnostiquer, sauvegarder et maintenir etcd pour éviter les pannes et garantir la résilience de votre infrastructure.
Expliquer ce que Kubernetes attend d'etcd : cohérence, latence, sécurité
Vérifier la santé d'un cluster etcd en deux minutes, et diagnostiquer un etcd lent ou instable
Créer et restaurer des snapshots, avec la procédure complète et testée
Assurer la maintenance day-2 : compaction, défragmentation, quota, alarmes NOSPACE
Surveiller etcd avec Prometheus et interpréter les signaux
Ce guide s'adresse aux administrateurs de clusters et aux SRE, en
production comme en préparation de la CKA ou de la CKS. Les concepts
valent pour kubeadm, k3s, RKE et toute distribution qui s'appuie sur etcd.
Les sorties publiées viennent d'un cluster Kubernetes 1.37, dont l'image
embarquée est etcd 3.7.0. Deux conséquences pratiques structurent tout le
reste de cette page. D'abord, la répartition des outils a changé :
etcdctl snapshot n'offre plus que save, tandis que la vérification et la
restauration d'un instantané sont passées à etcdutl. Ensuite, l'image est
distroless : elle ne contient ni sh ni tar, seulement les deux binaires.
Toutes les commandes de ce guide en tiennent compte.
Kubernetes n'a aucune autre mémoire qu'etcd : ni fichier de configuration persistant, ni base secondaire. L'API server est un service sans état qui traduit vos requêtes en lectures et en écritures dans cette base clé/valeur. Comprendre ce couplage explique la plupart des incidents de control plane, et c'est le point de départ de tous les diagnostics de cette page.
etcd est la source de vérité unique de votre cluster Kubernetes. Tout ce que l'API server connaît, pods, services, secrets, configmaps, RBAC, est stocké dans etcd.
Conséquence directe : si etcd est lent, l'API server est lent. Si etcd est down, l'API server ne peut plus persister l'état : les workloads existants continuent de tourner, mais aucune modification n'est possible (créations, suppressions, mises à jour). Selon la durée de l'indisponibilité, même la lecture via API peut se dégrader.
La redondance ne protège que de ce qu'elle couvre, et c'est le contresens le
plus commun sur etcd. Trois membres protègent d'une panne de machine, pas
d'un disque lent, d'un réseau instable ou d'un quota atteint : ces
trois-là frappent les trois membres en même temps et rendent le cluster
inutilisable malgré le quorum. D'où deux exigences matérielles non négociables,
des SSD et une latence inférieure à 10 ms entre membres.
Ce n'est pas une page "historique" d'etcd. L'objectif est 100% opérationnel : des commandes à copier-coller et des runbooks pour résoudre les problèmes courants.
Trois mécanismes suffisent à expliquer presque tous les incidents etcd : le consensus Raft, qui décide qui a le droit d'écrire ; le MVCC, qui conserve l'historique des modifications et fait grossir la base ; et les primitives transactions, watches et leases, dont Kubernetes dépend en permanence. Les connaître évite de traiter les symptômes sans comprendre la cause.
Règle d'or : sans quorum (majorité des membres disponibles), aucune écriture n'est possible.
Nombre de membres
Quorum requis
Tolérance aux pannes
1
1
0 (aucune)
3
2
1 membre
5
3
2 membres
7
4
3 membres
Glissez pour voir
Cette tolérance se vérifie en une manipulation sur le lab décrit plus bas.
Arrêtez un des trois nœuds, puis demandez une écriture : elle passe.
Fenêtre de terminal
dockerstopetcd-lab-control-plane3
kubectlcreatenamespacelab-quorum
Sortie
namespace/lab-quorum created
Deux membres sur trois forment bien la majorité, le cluster continue donc
d'accepter les écritures. Ce qui change, c'est le diagnostic : la commande
d'état signale explicitement le membre injoignable et sort en code 1, ce qui
fera échouer votre supervision, à raison.
Sortie de endpoint status --cluster
Failed to get the status of endpoint https://172.26.0.5:2379 (context deadline exceeded)
Arrêtez un deuxième nœud et la majorité est perdue : plus aucune écriture
n'aboutit, tandis que les charges déjà démarrées continuent de tourner, puisque
ce sont les kubelets qui les maintiennent, pas etcd.
Le nombre de membres se choisit donc dans une fourchette étroite. Trois est
le standard et convient à la quasi-totalité des clusters, il tolère la perte
d'une machine. Cinq se justifie quand l'indisponibilité coûte très cher, il
en tolère deux. Au-delà de cinq, le gain devient théorique alors que le coût
est bien réel : chaque écriture doit être confirmée par la majorité, et plus la
majorité est grande, plus l'écriture est lente. Un nombre pair n'apporte
rien non plus, quatre membres tolérant la même panne unique que trois.
MVCC, révisions, compaction : pourquoi la base grossit
etcd utilise MVCC (Multi-Version Concurrency Control) : chaque modification crée une nouvelle révision sans supprimer l'ancienne. C'est ce qui permet les watches (notifications en temps réel).
Problème : sans maintenance, l'historique s'accumule indéfiniment.
Révision 1: pod-a créé
Révision 2: pod-a modifié (labels)
Révision 3: pod-a modifié (replicas)
Révision 4: pod-a supprimé
↓
Toutes ces révisions sont conservées !
Solutions :
Compaction : supprime les anciennes révisions (garde la plus récente)
Défragmentation : récupère l'espace disque après compaction
Deux façons d'installer etcd coexistent : sur les nœuds du control plane, ou sur des machines dédiées. Le choix change la manière de sauvegarder, de renouveler les certificats et de mettre à jour le cluster. Identifier votre topologie est le préalable à toute intervention, car les chemins de fichiers et les commandes de maintenance en dépendent.
C'est la topologie par défaut avec kubeadm et RKE2, et celle de la plupart des distributions qui embarquent etcd. k3s fait exception : sa documentation annonce SQLite comme datastore par défaut, et il ne bascule sur etcd embarqué que si on le lui demande, ou si des fichiers etcd existent déjà sur le disque. Chaque nœud du control plane héberge un membre etcd, et le nombre de membres suit donc mécaniquement le nombre de control planes : ajouter un troisième control plane ajoute un troisième membre etcd.
kind (Kubernetes in Docker) crée un cluster complet dans des conteneurs, en quelques minutes et sans machine virtuelle. Avec trois nœuds de control plane, vous obtenez un vrai cluster etcd à trois membres, donc un quorum réel à observer. Toutes les commandes de ce guide sont exécutables sur ce lab.
L'intérêt est d'acquérir les gestes sans risquer un cluster de production, et
ils se transposent : seuls les chemins de certificats changent d'une
distribution à l'autre, les commandes etcdctl sont les mêmes partout.
Le nombre de lignes role: control-plane détermine directement le nombre de membres etcd. Trois est le minimum pour tolérer la perte d'un membre sans perdre le quorum.
Comptez une minute environ. La ligne « Configuring the external load
balancer » n'apparaît qu'à partir de deux control planes : kind place un
répartiteur devant les trois API servers, ce qu'un cluster à un seul nœud
n'a pas.
etcdctl est appelé directement, sans passer par un shell. C'est une
obligation, pas une préférence : l'image etcd livrée avec Kubernetes,
registry.k8s.io/etcd:3.7.0-0 en 1.37, est distroless. Elle ne contient ni
sh ni tar, seulement les binaires etcdctl et etcdutl. Un
kubectl exec ... -- sh -c '...' y répond :
exec: "sh": executable file not found in $PATH
Deux conséquences pratiques. Les options passent par des drapeaux, jamais
par des variables d'environnement exportées. Et ETCDCTL_API=3 n'a plus lieu
d'être : l'API v3 est le défaut depuis etcd 3.4.
Enfin, --endpoints=https://127.0.0.1:2379 vaut mieux que l'adresse du nœud :
la commande s'exécute dans le conteneur etcd, la boucle locale y est donc
toujours juste.
Répéter ces cinq lignes à chaque commande devient vite pénible. Une fonction
définie sur votre poste, pas dans le conteneur, règle le problème pour toute
la session :
La suite du guide écrit les commandes en entier, pour qu'elles restent
copiables telles quelles, mais etcdctl-lab endpoint health fait le même
travail.
Trois commandes se complètent et ne répondent pas à la même question. endpoint health dit si un membre accepte une écriture, endpoint status détaille son état interne, member list donne la composition déclarée. Un membre peut figurer dans member list tout en étant injoignable : c'est cet écart entre les deux vues qui révèle la panne.
Le test n'est pas une simple ouverture de connexion : etcd soumet réellement une proposition Raft et mesure le temps qu'elle met à être validée. Un endpointhealthy prouve donc que le quorum fonctionne à cet instant.
Sortie attendue, relevée sur le lab en etcd 3.7.0. Le tableau est large,
seize colonnes, et se lit en diagonale : cinq d'entre elles portent tout ce qui
sert au diagnostic.
Cinq colonnes ont été retirées de l'extrait ci-dessus pour qu'il tienne à
l'écran, STORAGE VERSION, IS LEARNER, RAFT APPLIED INDEX,
DOWNGRADE TARGET VERSION et DOWNGRADE ENABLED : elles apparaissent bien
dans la vraie sortie, ne vous étonnez pas de les y trouver en plus.
Ce qu'il faut vérifier :
Colonne
Ce que ça signifie
Valeur attendue
IS LEADER
Un seul membre doit être leader
Exactement 1 true
DB SIZE
Taille du fichier de base
Similaire sur tous les membres
IN USE
Part réellement utilisée de ce fichier
Proche de DB SIZE
PERCENTAGE NOT IN USE
Espace à récupérer par défragmentation
Quelques pour cent
QUOTA
Plafond au-delà duquel l'alarme se déclenche
2.1 GB par défaut
RAFT INDEX
Index de réplication
Identique sur tous les membres
ERRORS
Alarmes actives
Vide
Glissez pour voir
Deux de ces colonnes n'existaient pas dans les versions plus anciennes et
changent la façon de travailler. QUOTA affiche le plafond noir sur blanc,
il n'y a plus à le supposer : 2.1 GB, soit les 2 Gio par défaut d'etcd, sur un
cluster où aucun --quota-backend-bytes n'est posé. Et PERCENTAGE NOT IN USE mesure directement ce que la défragmentation récupérerait, ce qui
transforme une opération jusque-là décidée au jugé en une décision chiffrée.
Cette liste reflète la composition déclarée du cluster, telle qu'etcd la connaît, pas l'état réel des machines. C'est la référence à consulter avant d'ajouter ou de retirer un membre, et la colonne ID fournit l'identifiant attendu par member remove.
En incident, l'erreur classique consiste à redémarrer un membre avant d'avoir compris, au risque de faire basculer le cluster sous le quorum. La méthode inverse tient en quatre vérifications sans effet de bord, puis une lecture ciblée des journaux. Les sections qui suivent donnent cette séquence, puis les symptômes fréquents et leurs causes.
Résultat attendu : un seul membre a IS LEADER = true
Vérifier la cohérence des index
Dans la sortie précédente, RAFT INDEX et RAFT APPLIED INDEX doivent être identiques sur tous les membres. Un décalage indique un problème de réplication.
Les symptômes remontés concernent presque toujours Kubernetes, jamais etcd directement : kubectl qui traîne, Pods bloqués en Pending, déploiements qui expirent. Le lien avec etcd se confirme ou s'écarte en quelques commandes.
Trois causes dominent, et chacune a sa commande de diagnostic. Traitez-les dans l'ordre du tableau : une alarme active bloque tout le reste et rend les autres mesures ininterprétables.
Chaque élection interrompt les écritures : quelques changements de leader par heure suffisent à rendre l'API server erratique. Le compteur ci-dessous n'a de sens que rapporté à l'âge du Pod, un cluster ancien ayant forcément accumulé des élections légitimes.
Les journaux d'etcd sont volumineux et sans intérêt en exploitation courante. Quatre motifs concentrent l'information utile, et le filtre ci-dessous les isole en une commande.
Un snapshot etcd est une copie cohérente de toute la base à un instant donné : il contient l'intégralité des objets Kubernetes, secrets compris. C'est le seul artefact qui permette de reconstruire un cluster dont le control plane a été perdu, et il doit donc être traité comme une donnée sensible, chiffrée et stockée hors du cluster.
La fréquence des snapshots fixe votre perte de données maximale acceptable : avec une sauvegarde horaire, une restauration ramène le cluster à l'état d'il y a une heure au pire. Les autres lignes du tableau protègent le snapshot lui-même, qui ne vaut rien s'il est stocké sur le nœud qui vient de brûler ou s'il n'a jamais été relu.
Élément
Recommandation
Fréquence
Toutes les heures minimum, toutes les 15 min pour clusters critiques
Le snapshot est pris sur un seul membre et suffit à reconstruire tout le cluster, puisque Raft garantit que les membres détiennent les mêmes données. L'opération n'interrompt pas le service, mais elle écrit un fichier de la taille de la base dans le conteneur etcd : prévoyez la place et copiez-le à l'extérieur sans attendre.
Le fichier est d'abord écrit en .partpuis renommé : un snapshot.db.part
qui traîne signale une sauvegarde interrompue, à ne surtout pas prendre
pour une sauvegarde valide.
Le snapshot est écrit dans /var/lib/etcd et non dans /tmp : ce
répertoire est le volume de données d'etcd, monté depuis le nœud. Le
fichier est donc immédiatement lisible sur la machine, ce qui est le seul
moyen de le sortir du conteneur.
Vérifier l'intégrité du snapshot (utilisez etcdutl, compatible 3.5/3.6)
Ce point mérite un avertissement, parce que l'erreur est silencieuse.etcdctl snapshot status a été supprimé : en 3.7.0, etcdctl snapshot
n'offre plus que save. Mais appeler la commande disparue ne produit
aucune erreur ; etcdctl affiche l'aide de snapshot et sort en 0 :
Fenêtre de terminal
# ❌ démonstration du piège : cette commande n'existe plus et rend pourtant 0
Un script de sauvegarde qui vérifie son instantané avec etcdctlcroit
l'avoir vérifié, signale un succès, et ne contrôle rien du tout.
C'est etcdutl qu'il faut appeler, et c'est ce que fait le script plus
bas.
Sortir le snapshot du cluster
kubectl cpne fonctionne pas ici : il a besoin de tar dans le
conteneur, et l'image distroless n'en contient pas. Le fichier ayant été
écrit dans le volume de données, il est déjà sur le nœud :
Restaurer ne consiste pas à réinjecter des données dans un cluster vivant : l'opération recrée un répertoire de données neuf à partir du snapshot, sur chaque membre, etcd arrêté. Tout ce qui a été écrit après le snapshot est perdu, et le cluster repart avec un nouveau journal Raft. C'est une manœuvre de dernier recours, à répéter au moins une fois par trimestre sur un cluster de test pour ne pas la découvrir en incident.
Une idée reçue à écarter : l'identité du cluster ne change pas forcément. On
lit souvent qu'une restauration réécrit le member ID et le cluster ID.
C'est possible, ce n'est pas automatique. etcd calcule le member ID, par un
SHA-1 des URL de pair triées et du jeton de cluster
(--initial-cluster-token, etcd-cluster par défaut) : à paramètres
identiques, l'identité obtenue est identique.
Mesuré le 2026-09-15 sur kubeadm 1.37, etcd 3.7.0. Avant restauration,
endpoint status donne le member ID2e830b06b400c72b. Après un
etcdutl snapshot restore reprenant les valeurs du manifeste kubeadm, le
même --name, le même --initial-cluster et les mêmes
--initial-advertise-peer-urls, le member ID est le même, et le cluster ID
aussi. Seul l'index Raft trahit le nouveau journal, 19103 avant, 57 après.
La conséquence pratique est celle qui compte : ne contrôlez pas une
restauration à un changement d'identité, il ne se produira pas. Vérifiez
plutôt la date de création du répertoire member en service, ou l'index Raft
qui repart de zéro.
La procédure complète de restauration dépend de votre distribution :
systemctl stop kubelet n'arrête pas etcd, et c'est le piège central de
cette procédure. Mesuré le 2026-09-15 sur un cluster kubeadm 1.37, etcd 3.7.0 :
le kubelet arrêté, crictl ps --name etcd montre toujours le conteneur en
CONTAINER_RUNNING, et /readyz de l'API répond ok. Le kubelet crée les
Pods statiques, il ne les tient pas : arrêté, il cesse simplement de les
surveiller. etcd garde donc ses descripteurs ouverts sur /var/lib/etcd, même
déplacé, et continue d'y écrire. Au redémarrage, le manifeste n'ayant pas
changé, le Pod n'est pas recréé et le cluster repart sur l'ancien état : la
restauration n'a rien restauré, sans le moindre message d'erreur.
Ce qui détruit réellement le conteneur, c'est de retirer son manifeste du
répertoire surveillé.
Sortir les manifestes du répertoire surveillé
Sur chaque control plane. Le manifeste de l'API server part avec celui
d'etcd, pour qu'aucune écriture n'arrive pendant l'opération :
Répétez sur chaque nœud en adaptant --name et --initial-advertise-peer-urls.
Le répertoire visé doit être neuf : restaurer par-dessus un répertoire
existant mélangerait l'ancien et le nouveau contenu, d'où l'étape précédente.
Une variante existe, et le lab cka-etcd-backup-restore l'emploie : restaurer
vers un répertoire différent, puis faire pointer le hostPath du manifeste
etcd.yaml vers lui. Elle évite de déplacer l'ancien répertoire et rend le
retour en arrière immédiat, au prix d'une modification du manifeste. Dans les
deux cas, le principe est le même : etcd doit être réellement arrêté, ce
qu'aucune action sur le kubelet seul n'obtient.
Pour un lab kind, le plus simple est de recréer le cluster :
Ce script enchaîne les trois gestes qui font une sauvegarde exploitable : créer le snapshot, vérifier son intégrité juste après, puis purger les archives au-delà de la rétention. Le set -euo pipefail en tête est indispensable, il fait échouer le script au premier problème au lieu de laisser une tâche planifiée signaler un succès sur un fichier vide. Adaptez les chemins de certificats à votre distribution, ceux indiqués sont ceux de kubeadm.
Sans intervention, une base etcd ne fait que grossir jusqu'à heurter son quota et bloquer le cluster. Deux opérations distinctes l'en empêchent, et l'ordre compte : la compaction supprime l'historique devenu inutile, la défragmentation rend au système de fichiers l'espace ainsi libéré. Le quota est le garde-fou qui déclenche l'alarme quand ces deux gestes ont été négligés.
La compaction supprime les anciennes révisions pour limiter la croissance de la base. Elle est irréversible : après compaction à la révision N, plus aucune lecture historique antérieure à N n'est possible, ce qui interrompt les watches encore accrochées à ces révisions. En pratique, cela ne gêne pas Kubernetes, dont les controllers se resynchronisent automatiquement.
Finished defragmenting etcd member[https://127.0.0.1:2379]. took 25.969208ms
Pour défragmenter un etcd arrêté (maintenance offline) :
Fenêtre de terminal
# Arrêter etcd, puis :
etcdutldefrag--data-dir/var/lib/etcd
La variante hors ligne sert dans deux cas : récupérer beaucoup d'espace
d'un coup avant de redémarrer un membre, et profiter d'une fenêtre de
maintenance déjà planifiée. Sur un cluster qui tourne, préférez la forme en
ligne, membre par membre.
L'intérêt de l'opération se chiffre, et la colonne PERCENTAGE NOT IN USE le
donne directement. Voici l'état de deux membres du lab après une compaction,
mais avec la défragmentation exécutée sur un seul d'entre eux :
│ ENDPOINT │ DB SIZE │ IN USE │ PERCENTAGE NOT IN USE │ IS LEADER │
Les deux membres contiennent exactement les mêmes données, Raft s'en charge.
Le membre défragmenté occupe pourtant 684 ko contre 2,1 Mo pour l'autre,
dont 65 % d'espace mort. Deux enseignements. La compaction seule ne rend rien au
disque, elle marque simplement des révisions comme inutiles. Et la
défragmentation agit membre par membre : un cluster où un seul membre a été
traité reste déséquilibré jusqu'à ce que vous passiez sur les autres.
C'est aussi la mesure qui permet de décider. En dessous de quelques pour
cent, défragmenter ne rapporte rien et coûte une interruption d'écriture.
Au-delà de plusieurs dizaines, l'opération se justifie.
etcd ne connaît ni namespaces, ni ServiceAccounts, ni RBAC Kubernetes : qui accède à la base accède à tout le cluster, y compris aux secrets stockés en clair si le chiffrement au repos n'est pas activé. La priorité est donc de fermer l'accès réseau et d'imposer l'authentification par certificat, avant même de parler de droits fins.
Pour les clusters etcd externes ou partagés, vous pouvez activer l'authentification. Ce mécanisme d'utilisateurs et de rôles internes à etcd n'a aucun rapport avec le RBAC de Kubernetes : il découpe les droits par préfixe de clés, pas par ressource ou par namespace. Sur un etcd dédié à un seul cluster Kubernetes, il n'apporte rien de plus que le mTLS et complique le renouvellement des accès :
Les incidents etcd sont presque toujours annoncés : la latence disque dérive, la base approche du quota, le leader change plus souvent. Surveiller les bonnes métriques transforme une panne de control plane en simple opération de maintenance planifiée. Encore faut-il alerter sur les bons signaux et avec des seuils calibrés sur votre matériel.
etcd expose ses métriques sur /metrics (port 2379 avec TLS). Les métriques clés à surveiller :
Ces valeurs sont des points de départ, pas des vérités. Un seuil d'alerte
recopié d'un guide produit soit du bruit, soit du silence. Observez les
tendances de votre propre cluster sur sept à trente jours, puis calez les
seuils sur ce que vous voyez et sur l'engagement de service que vous devez
tenir.
Ces trois alertes couvrent les urgences réelles : absence de leader, disque trop lent, quota bientôt atteint. Le champ for évite les faux positifs en exigeant que la condition dure, et il est volontairement court sur l'absence de leader, qui ne doit jamais persister au-delà d'une minute. L'objet PrometheusRule suppose l'opérateur Prometheus installé.
Ce récapitulatif rassemble les commandes du guide sous une forme copiable. Les variables ETCDCTL_CACERT, ETCDCTL_CERT et ETCDCTL_KEYremplacent les options --cacert, --cert et --key : les exporter une fois raccourcit toutes les commandes suivantes.
Ces commandes s'exécutent sur le nœud, avec un etcdctl installé sur la
machine, et non dans le conteneur distroless. Dans ce contexte, les variables
d'environnement redeviennent utilisables et évitent de répéter les chemins :
Ces quatre commandes ne modifient rien et sont sûres en production. L'option --clusterélargit la question à tous les membres à partir d'un seul endpoint joignable.
Notez la répartition des rôles : etcdctlparle au serveur pour créer le snapshot, etcdutltravaille hors ligne sur le fichier et le répertoire de données. La restauration exige un etcd arrêté et un répertoire cible inexistant.
La défragmentation vise un endpoint précis, jamais le cluster entier : c'est la seule commande de cette page qu'il faut lancer membre par membre, en terminant par le leader.
Lire directement les clés d'etcd court-circuite l'API server, donc tous les contrôles d'accès et d'audit de Kubernetes ; les valeurs sont sérialisées en protobuf et peu lisibles. Réservez ces commandes au diagnostic, sur un cluster de test, et n'écrivez jamais dans etcd à la main.
Fenêtre de terminal
# Lister toutes les clés (ATTENTION : beaucoup de sortie)
Ces quatre procédures se suivent en incident, sans réflexion préalable. Chacune part d'un symptôme observable, confirme l'hypothèse par une commande, puis applique la correction dans un ordre qui ne dégrade pas la situation. Gardez-les accessibles hors du cluster : un control plane indisponible rend souvent la documentation interne inaccessible avec lui.
Les commandes de cette section supposent un etcdctl installé sur le nœud
et les certificats déjà configurés, comme indiqué juste au-dessus.
Le cluster n'accepte plus aucune écriture tant que l'alarme est armée, et elle ne se lève pas toute seule : le désarmement de l'étape 4 est obligatoire, même après avoir libéré de l'espace.
etcdctl --endpoints=https://127.0.0.1:2379 alarm list → confirme NOSPACE
Sous le quorum, etcd refuse toute écriture : le cluster ne peut plus changer d'état, et l'API peut devenir franchement indisponible, sans mode « lecture seule » sur lequel compter (mesuré dans la leçon sur le plan de contrôle haute disponibilité). La bascule est brutale : sur trois membres, la perte du deuxième fait passer d'un cluster dégradé mais fonctionnel à un cluster inutilisable.
Identifier les membres down : etcdctl --endpoints=https://127.0.0.1:2379 member list --write-out=table
Si 1 seul membre down sur 3 : attendre son retour ou le remplacer
Si 2+ membres down : le quorum est perdu. Tentez d'abord de les relancer (machine, disque, réseau) : si leurs données sont intactes, ils rejoignent le cluster et le quorum revient, sans restauration. Si leurs données sont perdues, la restauration depuis snapshot avec etcdutl snapshot restore devient la seule issue
Toute écriture etcd attend une écriture disque synchronisée sur la majorité des membres : la latence du stockage se répercute donc directement sur celle de l'API server. Ce runbook sert à distinguer un problème de disque d'un problème de réseau.
etcdctl --endpoints=https://127.0.0.1:2379 endpoint status --cluster --write-out=table → vérifier latence
Les certificats etcd générés par kubeadm ont une validité d'un an. Sur un cluster jamais mis à jour, ils expirent en silence et le control plane tombe d'un coup, sans le moindre changement de configuration apparent.
Ces huit points sont ceux dont l'absence transforme un incident ordinaire en perte de cluster. Les deux premiers priment sur tous les autres : sans sauvegarde restaurée au moins une fois et sans alerte sur la présence d'un leader, le reste ne vous sauvera pas.
Backups automatisés et testés (restauration réussie)
Monitoring : alertes sur leader, latence, espace disque
Ce quiz reprend les questions etcd du programme de la certification CKA, où la sauvegarde et la restauration d'etcd sont un exercice classique. Un score inférieur à 80 % signale les sections à relire.
etcd = SPOF logique : même avec 3 nœuds, une mauvaise config bloque le cluster
Toujours 3 ou 5 membres : jamais 2, jamais plus de 7
SSD obligatoire : la latence disque tue etcd
Backup = snapshot + test de restauration : un backup non testé ne vaut rien
Compaction + defrag : maintenance obligatoire pour éviter NOSPACE
TLS everywhere : etcd exposé = cluster compromis
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
7 questions
5 min.
80% requis
Informations
Le chronomètre démarre au clic sur Démarrer
Questions à choix multiples, vrai/faux et réponses courtes
Vous pouvez naviguer entre les questions
Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
⏱️--:--
0 / 7
Vérification
(0/0)
--:--
0%
0Correctes
0À revoir
0:00Temps
-Niveau
Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Une restauration etcd ne se répète pas sur un cluster en conteneurs : il faut un control plane réel, que ce lab fournit en machine virtuelle. Vous prenez une sauvegarde fraîche, restaurez depuis l'instantané de la veille, et la validation vérifie qu'etcd tourne sur un répertoire produit pendant le lab, que les objets reviennent avec leur UID d'origine, et que ce qui a été écrit après la sauvegarde a disparu.
Ces quatre références font autorité sur les points que ce guide résume. La documentation Kubernetes couvre l'intégration au control plane, celle du projet etcd détaille la maintenance, la restauration et la supervision.