Pourquoi etcd est-il critique pour un cluster Kubernetes ?

Questions d’entrevue Kubernetes

Senioretcdcontrol-planedisponibilite

Parce que tout l’état du cluster y vit. Deployments, Secrets, endpoints, leases des nœuds : le apiserver n’est qu’une façade. Si etcd ment, ou s’arrête d’accepter les écritures, Kubernetes n’a plus de mémoire partagée. Les contrôleurs ne réconcilient plus. Les kubectl apply échouent. Les Pods déjà en piste, eux, peuvent continuer — vous n’avez plus le volant.

Quorum, pas « le serveur etcd »

etcd est un ensemble Raft. 3 ou 5 membres, jamais un nombre pair en production. La majorité doit être là pour un commit. Deux membres sur trois vivants : le cluster écrit encore. Un seul survivant sur trois : lecture éventuellement, plus d’écriture. Ajouter un quatrième nœud « pour aider » sans comprendre le quorum aggrave le risque.

C’est pour cela qu’on sépare etcd (ou le control plane) des nœuds de charge, qu’on soigne le disque (latence, pas seulement le Go), et qu’on refuse de le traiter comme une base applicative de plus.

Ce qu’un SRE doit pouvoir dire

Sauvegarde. etcdctl snapshot save, hors du cluster, testée par un restore sur un bac à sable — pas seulement un cron qui écrit à côté. Une sauvegarde jamais restaurée n’existe pas.

Chiffrement. etcd voit les Secrets en clair sauf si le apiserver a un encryption provider. Perdre un snapshot etcd, c’est perdre les Secrets.

Dégradation. Un etcd lent (fsync, I/O steal, défrag trop rare) se manifeste par un apiserver lent, des leases qui expirent, des nœuds qui basculent NotReady. On regarde les métriques etcd avant de « restart les kubelets ».

Ce que l’intervieweur vérifie

Que vous ne dites pas « si etcd tombe, tout s’arrête ». C’est faux pour le dataplane déjà programmé, et trop vague pour le control plane. La phrase juste : sans quorum d’écriture, le cluster n’est plus administrable ; les charges en cours ne sont pas forcément mortes ; le restore est un exercice que l’on a déjà fait.

La relance probable

« Peut-on tourner etcd sur les mêmes machines que les applis ? »

On peut. On le regrette le jour où un Job batch remplit le disque, ou où un voisin vole les IOPS du WAL. Les clusters gérés (EKS, GKE, AKS) vous cachent etcd précisément pour que cette question ait une réponse ennuyeuse : vous n’y touchez pas, vous vérifiez que le contrat de backup du fournisseur vous suffit.

Toutes les questions Kubernetes