You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Direkt aus dem Ausfall vom 16.–18.08. MatrixCtrl hat vier Komponenten als down
gemeldet — korrekt, binnen Sekunden, 37 Stunden lang — und nie gesagt, warum. Der
Scheduler hat den Grund die ganze Zeit in einem FailedScheduling-Event
veröffentlicht.
„Ist es kaputt" beantwortet kubectl get pods schon. Wofür ein Admin-Werkzeug da
ist, ist der Satz „es kann nicht platziert werden, weil es 8500m auf einem
6000m-Node anfordert". Zwischen diesen beiden Sätzen liegen die 37 Stunden.
Der Teil, der mehr ist als eine Event-Meldung auszugeben, ist die Rechnung — und
die hat zwei Fallen, die dieses Projekt auf die harte Tour kennengelernt hat. Der
Request eines Pods ist nicht die Summe seiner Container, sondern
max(Summe(Container), Maximum(Init-Container)): Synapses render-config und db-wait
hatten je 4000m geerbt, während der synapse-Container 1000m anforderte — Synapse
reservierte also 4000m, während es nur auf die Datenbank wartete. Und ein
resources-Block kann mehrere Container abdecken, weshalb aus 4000m bei postgres
8000m wurden.
Zwei bewusste Grenzen: „größer als jeder Node" wird von „Cluster gerade voll"
getrennt, weil nur Letzteres sich von selbst lösen kann. Und es wird kein Wert
vorgeschlagen — was eine Komponente anfordern sollte, hängt davon ab, was sonst
noch laufen soll.
Nicht enthalten ist die vorbeugende Hälfte (Warnung beim Speichern der Config).
Dafür müsste die Chart gerendert werden, weil die Container-Topologie eine
Eigenschaft der Chart ist und nicht der bearbeiteten YAML. Als P1-16b vermerkt
statt geraten.
Ende-zu-Ende gegen einen absichtlich nicht planbaren Pod geprüft, dessen 40000m in
einem Init-Container hinter einem 100m-Container steckten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/ROADMAP.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -59,6 +59,7 @@ Etappes 1–10 are **reconstructed from `git log`** (39 commits, 2026-05-27 →
59
59
| 19 | Calling — the ports that must be forwarded, and an explicit "this half is not checkable from here" | ✅ 2026-08-01 · `v0.1.19` · [plan](plans/etappe-19-calling-reachability.md)|
60
60
| 32 | Release Notes auf der Upgrade-Seite + Version aus der Liste übernommen — die andere Hälfte der Pin-Warnung | ✅ 2026-08-05 · `v0.1.33` · [plan](plans/etappe-32-release-notes.md)|
61
61
| 33 | OIDC-Init wiederholen statt einmalig aufgeben — ein Neustart vor MAS sperrte den Operator 11 h aus dem eigenen Panel aus | ✅ 2026-08-06 · `v0.1.34` · [plan](plans/etappe-33-oidc-retry.md)|
62
+
| 54 | „down" ist ein Status, keine Diagnose — warum ein Pod nicht eingeplant werden kann, mit der Rechnung dahinter | 🔄 gebaut 2026-08-30 · `v0.1.52` · [plan](plans/etappe-54-why-it-cannot-be-placed.md)|
62
63
| 53 | Das lauteste Element der Seite war doppelt falsch — „postgres in Restart-Schleife", obwohl postgres nie neu gestartet ist | ✅ 2026-08-17 · `v0.1.51` · [plan](plans/etappe-53-restart-banner.md)|
63
64
| 52 | Einmal verbinden, und da landen wo man war — der Rücksprung hing am State, der Auto-Reconnect an seiner Schleifenbremse | ✅ 2026-08-17 · `v0.1.50` · [plan](plans/etappe-52-silent-reconnect.md)|
64
65
| 51 | Der UDP-Puffer, den die SFU anfordert und nicht bekommt — und der Zähler, der aus dem falschen Namespace gelesen worden wäre | ✅ 2026-08-17 · `v0.1.49` · [plan](plans/etappe-51-udp-buffer-preflight.md)|
0 commit comments