From e64d70856579a3d5ce77fed142ed594efbe9cefd Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Tue, 15 Sep 2026 11:45:24 +0200 Subject: [PATCH] =?UTF-8?q?Prometheus=20quitte=20pi1=20pour=20pi3=20:=20so?= =?UTF-8?q?n=20volume=20y=20avait=20perdu=20son=20journal=20ext4=20le=20m?= =?UTF-8?q?=C3=AAme=20jour=20que=20MinIO=20(#51)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affinité requise `NotIn [pi2]` et préférence forte pour pi3 : recréé sur un autre nœud, le volume `prometheus-server` (en lecture seule depuis le 14/09 05:16Z) est détaché puis rattaché, et ext4 rejoue son journal. Refs arcodange-org/tools#49 Co-Authored-By: Claude Opus 5 Co-authored-by: Gabriel Radureau --- prometheus/values.yaml | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/prometheus/values.yaml b/prometheus/values.yaml index 0f85ba7..3d2f28e 100644 --- a/prometheus/values.yaml +++ b/prometheus/values.yaml @@ -493,7 +493,37 @@ prometheus: &prometheus_config ## Pod affinity ## - affinity: {} + # --------------------------------------------------------------- + # ⚠⚠ JAMAIS SUR pi2, ET LE RECRÉER AILLEURS QUE SUR LE NŒUD DU MONTAGE MORT + # (incident arcodange-org/tools#49, 2026-09-14 → 15). + # + # Le 14/09 à 05:16Z, le volume `prometheus-server` (moteur sur pi1, une + # réplique sur pi2 à ~110 % de mémoire) a vu son journal ext4 ABANDONNÉ : + # système de fichiers remonté en lecture seule, `write to WAL: input/output + # error` pendant 27 h, puis `panic: Unable to create mmap-ed active query + # log` en boucle. Un redémarrage de conteneur ne démonte PAS le volume. + # + # Même mécanisme que MinIO (#50). La préférence pour pi3 n'est pas + # décorative : avec `Recreate`, un pod recréé sur le MÊME nœud peut + # réutiliser le montage de staging encore en place (le nouveau pod arrive + # dès que l'ancien est terminal, avant le démontage) — et donc le montage + # mort. Un autre nœud force détachement, rattachement et rejeu du journal. + # --------------------------------------------------------------- + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: NotIn + values: [pi2] + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + preference: + matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: [pi3] ## Pod anti-affinity can prevent the scheduler from placing Prometheus server replicas on the same node. ## The value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.