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 forte | Lorsqu’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 Store | Stocke les données sous forme de paires clé-valeur. Il propose une API clé-valeur et repose sur BboltDB (un fork de BoltDB). |
| Algorithme Raft | Utilise 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ément | Détail |
|---|---|
| Stockage | Stocke 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 gRPC | Expose 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 stockage | Tous les objets sont enregistrés sous le préfixe /registry (ex: /registry/pods/default/nginx pour un pod “nginx” du namespace “default”). |
| Composant Statefulset | etcd est le seul composant Statefulset du plan de contrôle Kubernetes. |

Tolérance aux pannes d’un cluster etcd
| Nombre de nœuds | Nombre de pannes tolérées | Quorum requis |
|---|---|---|
| 3 | 1 | 2 |
| 5 | 2 | 3 |
| 7 | 3 | 4 |
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.