Aller au contenu principal

Chapitre 2.3 - etcd

Objectifs d'Apprentissage

À la fin de ce chapitre, vous serez capable de:

  • Comprendre le rôle d'etcd dans Kubernetes
  • Expliquer comment etcd stocke l'état du cluster
  • Comprendre la réplication et la haute disponibilité
  • Identifier les bonnes pratiques de sauvegarde

Qu'est-ce qu'etcd?

etcd est une base de données clé-valeur distribuée, cohérente et hautement disponible utilisée comme source de vérité unique pour Kubernetes. Toute la configuration et l'état du cluster sont stockés dans etcd.


Rôle dans Kubernetes

Source de Vérité Unique

etcd stocke:

  • Toutes les ressources (Pods, Services, Deployments, etc.)
  • Configuration du cluster
  • État actuel de toutes les ressources
  • Métadonnées et annotations

Pas d'Accès Direct

Important: Les utilisateurs et composants n'accèdent JAMAIS directement à etcd. Toutes les interactions passent par l'API Server.


Structure des Données

Format Clé-Valeur

Les données sont organisées hiérarchiquement:

/registry/pods/default/my-pod
/registry/services/default/my-service
/registry/deployments/default/my-deployment

Exemple de Données Stockées

{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "my-pod",
"namespace": "default",
"uid": "123-456-789"
},
"spec": {
"containers": [...]
},
"status": {
"phase": "Running"
}
}

Haute Disponibilité

Réplication

Pour la production, etcd doit être répliqué (généralement 3 ou 5 nodes):

Avantages:

  • Tolérance aux pannes (1 node peut tomber)
  • Performance améliorée (lectures distribuées)
  • Cohérence garantie

Consensus: Raft

etcd utilise l'algorithme de consensus Raft:

Caractéristiques:

  • Un leader élu
  • Réplication vers les followers
  • Consensus par majorité
  • Cohérence forte garantie

Sauvegarde et Restauration

Importance Critique

⚠️ etcd contient TOUT l'état du cluster. Sa perte = perte du cluster!

Sauvegarde Régulière

# Sauvegarder etcd
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key

# Restaurer depuis une sauvegarde
ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db

Bonnes Pratiques

  • Sauvegardes automatiques quotidiennes
  • Stockage hors-site
  • Tests de restauration réguliers
  • Documentation du processus

Performance

Facteurs Impactant les Performances

  1. Taille du cluster: Plus de ressources = plus de données
  2. Fréquence des changements: Mises à jour fréquentes
  3. Taille des objets: Grands ConfigMaps/Secrets
  4. Compaction: Nettoyage des anciennes versions

Optimisations

  • Compaction régulière des données
  • Défragmentation du disque
  • SSD pour de meilleures performances
  • Monitoring des métriques

Sécurité

Chiffrement

  • En transit: TLS entre API Server et etcd
  • Au repos: Chiffrement optionnel des données

Accès Restreint

  • Seul l'API Server accède à etcd
  • Certificats client requis
  • Pas d'accès réseau public

Monitoring

Métriques Importantes

  • Taille de la base de données
  • Latence des opérations
  • Taux d'erreurs
  • État du leader
  • Espace disque disponible

Commandes Utiles

# Vérifier l'état d'etcd
kubectl get componentstatuses

# Voir les métriques (si monitoring configuré)
# Via Prometheus ou outils similaires

Résumé

Dans ce chapitre, vous avez appris:

etcd: Base de données distribuée, source de vérité unique
Stockage: Toutes les ressources et configuration du cluster
Haute Disponibilité: Réplication avec consensus Raft
Sauvegarde: Critique pour la continuité du cluster
Sécurité: Accès restreint, chiffrement en transit


Prochaines Étapes

Maintenant que vous comprenez etcd:

Chapitre 2.4: Controller Manager - Maintien de l'État Désiré
Chapitre 2.5: Scheduler - Planification des Pods


Chapitre créé le: Décembre 2024