Résumé
- Impact utilisateurice : Les services sont innacessibles. Une erreur 502 s’affiche.
- Cause : Services du control plane Kubernetes en erreur.
- Résolution : Libération d’espace et redémarrage des VMs du control plan.
Il y a un glossaire en bas du post pour expliquer les termes techniques.
Durées
| Start Time | Incident Detected By(User-reported/ Ad-hoc monitoring/ Alerting system) |
|---|---|
| Durée de détection : | inconnue (> 1h) |
| Durée d’investigation : | 20min (10min + 10min) |
| Durée du retour à un service fonctionnel : | 40min (20min + 20min) |
| Durée de résolution : | 18h |
Chronologie
| Date | Quoi |
|---|---|
| 2025/10/01 14h Fr | Appel d’un contributeur pour signaler une erreur 502 sur son nuage. |
| 2025/10/01 14h02 | Confirme l’incident et prévient le reste de l’équipe via les canneaux de communication dédiés aux incidents |
| 2025/10/01 14h13 | Redémarrage le control plane Kubernetes. L’ensemble des services reviennent à la normale progressivement |
| 2025/10/01 14h16 | Récupération d’un document spécifique directement depuis MinIO pour dépaner une contributrice qui m’en a fait la demande. |
| — | — |
| 2025/10/02 07h18 | Un contributeur nous prévient de services en erreurs par mail. |
| 2025/10/02 08h | Un autre contributeur nous appelle pour nous prévenir que ses services sont KO |
| 2025/10/02 08h10 | Redémarrage d’un serveur du control plane échoue à cause du disque plein. Vidage des fichiers non nécessaires sur le disque. Retour du serveur à l’état nominal. |
| 2025/10/02 08h20 | Tous les services sont rétablis |
Impact
Impact sur les utilisateurices
Les services (web) fournis par IndieHosters sont innaccessibles pendant la durée de l’incident.
Impact sur l’infrastructure
Accès à l’infrastructure perturbé.
Redémarrage de plusieurs pods en erreur.
Cause de l’incident
L’espace disque sur le ‹ / › d’une des 3 VMs du control plane. Ce qui a entrainé un echec du service etcd et donc un impact sur tout le cluster.
Mitigation & Résolution
Le redémarrage de la VM du control plane en erreur l’a sortie du cluster du control plane ce qui a permis de rétablir le service.
Leçons apprises
Ce qui s’est bien passé
Agent d’IndieHosters disponible et réactif sur l’investigation et la mitigation de l’incident.
Communication de « crise » efficace au sein du collectif.
Ce qui s’est mal passé
- Monitoring des applications KO depuis plusieurs semaines à cause d’un problème sur la machine qui héberge ce service.
- Pas de monitoring sur l’espace disque des VMs du control plane.
- PullAlways des images ralenti le retablissement du service.
Là où on a eu de la chance
- L’infrastructure est robuste et au redémarrage d’une VM du control plane les services reviennent rapidement.
Actions
Actions à mettre en place
- Monitoring services control plane
- Raise alerte si service down ailleurs que dans karma : SMS ou chat ou signal ou autre.
- Issue726: Monitoring - Improve monitoring on VMs
- Ajouter clé SSH de tous les admins sur les VMs de control plane.
- Agrandir le disque des VMs du control plane
- Rétablir le monitoring des applications.
- Retirer le pullAlways.
Glossaire des termes techniques
- Kubernetes (=k8s) : Kubernetes est un logiciel qui permet de faire l’abstraction de la partie matérielle. Il peut être vu comme un hyperviseur permettant d’ordonnancer des containeurs.
- Pod : Pod est un élement de Kubernetes. C’est un ensemble cohérent de containeurs pour une application. Dans notre infrastructure, pour une application comme Nextcloud, nous avons plusieurs pods (2 pour la base de données, 2 pour le redis, 2 à 10 pour l’application).
- Control plane : Ensemble de services qui gère le cluster kubernetes et vérifie son état de fonctionnement. Chez IndieHosters, le control plane est géré par 3 VMs dédiées, isolées du reste du cluster sur des machines physiques dédiées.
- MinIO : Logiciel d’exploitation de notre cluster de stockage. Implémentation libre du « standard de fait » Amazon Object Store S3, qui stocke les données sous forme d’objets. Contrairement aux technologies classiques de systèmes de fichiers qui stocke les données sous forme de dossiers et de fichiers. Permet une meilleure efficacité de stockage et un versionnage plus fin.