Base de données distribué clé/valeur qui stocke tout l’état du cluster (objets, configurations, secrets…).

Rôle d’etcd dans Kubernetes

Kubernetes est un système distribué et nécessite une base de données distribuée efficace telle que etcd pour répondre à sa nature. etcd fait à la fois office de service de découverte backend et de base de données : c’est le “cerveau” du cluster Kubernetes.

Fonctionnalités clés d’etcd

FonctionnalitéDescription
Cohérence forteLorsqu’une mise à jour est effectuée sur un nœud, elle est immédiatement répliquée à tous les autres nœuds du cluster. Selon le théorème CAP, il est impossible d’atteindre à la fois 100% de disponibilité, cohérence forte, et tolérance au partitionnement.
Distribuéetcd fonctionne sous forme de cluster multi-nœuds sans compromis sur la cohérence.
Key Value StoreStocke les données sous forme de paires clé-valeur. Il propose une API clé-valeur et repose sur BboltDB (un fork de BoltDB).
Algorithme RaftUtilise l’algorithme consensus Raft pour garantir la cohérence et la disponibilité, avec une organisation leader-membres pour la haute disponibilité et la tolérance aux pannes.

etcd et Kubernetes : Fonctionnement

  • Toute opération réalisée avec kubectl (lecture ou écriture d’objets Kubernetes) se traduit par une lecture ou une écriture dans etcd.
  • Quand vous déployez un objet (ex. pod), une entrée est créée dans etcd.

Points essentiels à retenir sur etcd

ÉlémentDétail
StockageStocke toutes les configurations, états et métadonnées des objets Kubernetes : pods, secrets, daemonsets, déploiements, configmaps, statefulsets, etc.
Surveillance (Watch)Permet à un client de s’abonner aux événements via l’API Watch(). Le kube-apiserver utilise cette fonctionnalité pour suivre les changements d’état des objets.
API gRPCExpose une API clé-valeur via gRPC. Le gRPC gateway permet aussi un accès REST, ce qui en fait une base idéale pour Kubernetes.
Hiérarchie de stockageTous les objets sont enregistrés sous le préfixe /registry (ex: /registry/pods/default/nginx pour un pod “nginx” du namespace “default”).
Composant Statefulsetetcd est le seul composant Statefulset du plan de contrôle Kubernetes.

5953b85f-06a3-4cd4-84d6-c19af56edf88.png

Tolérance aux pannes d’un cluster etcd

Nombre de nœudsNombre de pannes toléréesQuorum requis
312
523
734

Formule générale de tolérance aux pannes :

où n est le nombre total de nœuds du cluster.

Dans un déploiement Nginx

  • Mémorise chaque objet créé (pod, service, replica), sa configuration et ses métadonnées.
  • Sert de source de vérité : toutes les décisions des autres composants passent par les lectures/écritures sur etcd.