Skip to content

Commit add68d7

Browse files
TheMeinerLPclaude
andauthored
blog: cluster-resilience posts (DE/EN, Light + Deep Dive) with draw.io figures (#167)
* feat(blog): cluster-resilience posts (DE/EN, Light + Deep Dive) with draw.io figures Two editions per language on how we hardened the feather-core Kubernetes cluster (resources, PodDisruptionBudgets, 5-tier PriorityClasses, zone & pod (anti-)affinities), written in first-person voice: - Light editions: everyday-object analogies (eggs/baskets, checkout lanes, power strip) for non-technical readers. - Deep Dive editions: config snippets + the pitfalls (silent Helm no-ops, webhook-immutable fields stalling the Flux reconcile, the hard anti-affinity that left a MaxScale pod Pending) and the soft-affinity + CR-recreation fix. Six editable .drawio.svg figures (render as images, draw.io source embedded in the content attribute), shared across both languages. cluster-topology set as headerImage on all four posts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(blog): add 1200x630 PNG social card, use as headerImage/og:image Render cluster-topology.drawio.svg to a 1200x630 PNG (rendered SVG composited on the diagram's dark background) for reliable social sharing previews, since SVG og:images are poorly supported by most platforms. Point headerImage on all four resilience posts at the PNG; the editable .drawio.svg stays in the body. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(blog): add case examples + link official Kubernetes docs for traceability Deep Dive (DE/EN): per-pillar "Fallbeispiel"/"Case in point" callouts tied to real commits (Postgres BestEffort, BlueMap drain, feather-low eviction, fr01 zone pinning), inline links to the official k8s docs (QoS, node-pressure eviction, PDB, priority & preemption, affinity, well-known labels, admission webhooks), and a "Sources & Further Reading" section. Light (DE/EN): one short plain-language real example (BlueMap stays up during a server update), no links. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(blog): force per-article title/description into head for social embeds Social embeds showed an ASCII, slug-cased title ("Wenn Ein Server Ausfaellt …") and the generic site description, because @nuxtjs/seo's route-derived fallback overrode the article's own title/description in the document head (og:image was unaffected). Make the page's useHead authoritatively set title + description + og/twitter title/description from the resolved article, so embeds use the real values with umlauts. Explicit `head` frontmatter still merges on top. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent f1198ec commit add68d7

12 files changed

Lines changed: 1121 additions & 1 deletion

content/blog/de/resilienz-im-detail-priorityclasses-pdb-affinitaeten.md

Lines changed: 236 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
---
2+
title: 'Wenn ein Server ausfällt: Wie wir unser Cluster widerstandsfähig gemacht haben'
3+
alternativeTitle: 'Resilienz für Einsteiger: Unsere Reise zu einem ausfallsicheren Kubernetes-Cluster'
4+
description: 'Ein Server fällt aus – und niemand merkt es. Genau das war mein Ziel. Ich erzähle in Alltagsbildern, wie wir unser Cluster Stück für Stück widerstandsfähiger gemacht haben, welche Höhen und Tiefen die Reise mit sich brachte und was das ganz konkret für OneLiteFeather bedeutet.'
5+
pubDate: '2026-06-13'
6+
headerImage: 'images/blog/cluster-topology-social.png'
7+
headerImageAlt: 'Topologie des feather-core-Clusters: Control-Plane, Ceph-Storage und Worker in Zone fr01'
8+
slug: 'wenn-ein-server-ausfaellt-cluster-resilienz'
9+
translationKey: 'cluster-resilience-light'
10+
tags:
11+
- infrastructure
12+
- kubernetes
13+
- reliability
14+
- hardening
15+
author: phillipp-glanz
16+
canonical: 'https://onelitefeather.net/de/blog/wenn-ein-server-ausfaellt-cluster-resilienz'
17+
sitemap:
18+
loc: '/de/blog/wenn-ein-server-ausfaellt-cluster-resilienz'
19+
lastmod: '2026-06-13'
20+
changefreq: monthly
21+
priority: 0.8
22+
alternates:
23+
- hreflang: 'de'
24+
href: 'https://onelitefeather.net/de/blog/wenn-ein-server-ausfaellt-cluster-resilienz'
25+
- hreflang: 'en'
26+
href: 'https://onelitefeather.net/en/blog/when-a-server-fails-cluster-resilience'
27+
- hreflang: 'x-default'
28+
href: 'https://onelitefeather.net/en/blog/when-a-server-fails-cluster-resilience'
29+
schemaOrg:
30+
- type: 'BlogPosting'
31+
headline: 'Wenn ein Server ausfällt: Wie wir unser Cluster widerstandsfähig gemacht haben'
32+
alternativeHeadline: 'Resilienz für Einsteiger: Unsere Reise zu einem ausfallsicheren Kubernetes-Cluster'
33+
description: 'Ein Server fällt aus – und niemand merkt es. Genau das war mein Ziel. Ich erzähle in Alltagsbildern, wie wir unser Cluster Stück für Stück widerstandsfähiger gemacht haben.'
34+
author:
35+
type: 'Person'
36+
name: 'Phillipp Glanz'
37+
datePublished: '2026-06-13T00:00:00+00:00'
38+
---
39+
Ich verrate euch mein Lieblingsergebnis der letzten Wochen: Ein Server ist ausgefallen – und niemand hat es gemerkt. Kein abgebrochener Login, keine leere Website, kein „Datenbank gerade nicht erreichbar". Klingt nach dem langweiligsten Satz der Welt, ist aber genau das, worauf ich hingearbeitet habe.
40+
<!--more-->
41+
> **Light Edition.** Hier erzähle ich die Geschichte in Alltagsbildern, ganz ohne Vorwissen. Wer die echten Schräubchen sehen will – mit Konfiguration und Diagrammen aus dem Maschinenraum – findet sie in der [Deep-Dive-Ausgabe](https://onelitefeather.net/de/blog/resilienz-im-detail-priorityclasses-pdb-affinitaeten).
42+
43+
Ich bin bei OneLiteFeather für den Backend- und Infrastruktur-Kram zuständig. Unsere Dienste laufen längst nicht mehr auf einem einzelnen Server, sondern auf einem Cluster – einer Gruppe von Maschinen, die sich die Arbeit teilen. Die Idee dahinter ist simpel: Fällt eine Maschine aus, übernehmen die anderen. In der Theorie. In der Praxis musste ich dem Cluster diese „Theorie" erst beibringen – und genau das ist die Reise, von der ich erzählen will. Am einfachsten geht das mit drei Bildern, die ihr garantiert kennt.
44+
45+
## Bild 1: Leg nicht alle Eier in einen Korb
46+
47+
Das erste Problem ist uralt und passt in einen Satz, den schon meine Oma kannte: Leg nicht alle Eier in einen Korb.
48+
49+
![Drei Eier in einem Korb gegenüber je einem Ei in drei Körben](/images/blog/analogy-eggs-baskets.drawio.svg)
50+
*Links: drei Eier, ein Korb – ein Stolpern, und alle drei sind hin. Rechts: drei Körbe – fällt einer um, ist nur ein Ei betroffen.*
51+
52+
Genau so war es anfangs bei uns: Von manchen Diensten lief zwar mehr als eine Kopie, aber alle Kopien lagen zufällig auf demselben Server. Drei Eier, ein Korb. Geht der Server in die Knie, sind alle Kopien gleichzeitig weg – die Redundanz war nur auf dem Papier vorhanden.
53+
54+
Ich habe dem Cluster also beigebracht, die Kopien bewusst auf verschiedene Server zu verteilen. Klingt trivial, ist aber der Unterschied zwischen „drei Eier in einem Korb" und „drei Körbe". Erst dann ist ein zweiter Server wirklich ein Sicherheitsnetz und kein dekoratives Beiwerk.
55+
56+
## Bild 2: Es bleibt immer eine Kasse offen
57+
58+
Ab und zu muss ich einen Server kurz aus dem Verkehr ziehen – für ein Update oder zum Aufräumen. Stell dir das wie einen Supermarkt vor: Manchmal muss eine Kassiererin in die Pause. Völlig okay – solange nicht **alle** gleichzeitig das Schild „geschlossen" rausstellen.
59+
60+
![Vier Supermarktkassen, drei offen, eine im Pause-Modus](/images/blog/analogy-checkout-lanes.drawio.svg)
61+
*Wartung ist erlaubt – aber immer nur an einer Kasse gleichzeitig. Mindestens eine bleibt offen und bedient weiter.*
62+
63+
Früher konnte es passieren, dass bei so einer Wartung aus Versehen alle Kassen gleichzeitig zumachten – und der Dienst war für einen Moment komplett weg. Heute gibt es eine feste Hausregel: Von jedem Dienst darf immer nur eine Kopie gleichzeitig in Pause. Der Rest bedient unbeirrt weiter. Wartung tagsüber, ohne Schweißausbruch – das war vorher undenkbar.
64+
65+
## Bild 3: Wenn der Strom knapp wird, fliegt zuerst die Lichterkette
66+
67+
Das dritte Bild: Stell dir einen Stromausfall zu Hause vor, und du hast nur noch begrenzt Saft. Was bleibt an, was steckst du zuerst aus? Der Kühlschrank bleibt – logisch. Die Heizung bleibt. Die Lichterkette von der letzten Feier? Die kann warten.
68+
69+
![Eine Steckdosenleiste: Kühlschrank und Heizung bleiben, Deko wird zuerst ausgesteckt](/images/blog/analogy-power-strip.drawio.svg)
70+
*Wird es eng, wird das Unwichtigste zuerst ausgesteckt. Das Wesentliche bleibt am Netz.*
71+
72+
Genau diese Rangordnung habe ich dem Cluster gegeben. Wird der Platz knapp, weiß die Maschine von selbst, was sie schützen muss: den Speicher, auf dem alle Daten liegen, und die Datenbanken, von denen alles abhängt. Und was tritt zuerst zurück? Die netten, aber verzichtbaren Dinge – etwa unsere Minecraft-Kartenansicht. Niemand muss nachts aufstehen und entscheiden; die Reihenfolge steht vorher fest.
73+
74+
> **Ein echtes Beispiel aus unserem Cluster.** Als wir neulich einen Server für ein Update kurz herausgenommen haben, blieb unsere Minecraft-Kartenansicht (BlueMap) durchgehend erreichbar – weil immer mindestens zwei Kopien auf anderen Servern weiterliefen. Vor dem Umbau wäre sie in genau diesem Moment kurz verschwunden.
75+
76+
## Die Höhen – und die Tiefen
77+
78+
Ehrlich gesagt lief das nicht in einem Rutsch. Es gab die schönen Momente und die zähen.
79+
80+
Der schönste: Ich habe das erste Mal bewusst einen Server „in Wartung" geschickt und gespannt auf den Bildschirm gestarrt – und es passierte schlicht nichts. Die Dienste zogen ruhig um, die Website blieb erreichbar. Dafür hatte ich die ganze Arbeit gemacht.
81+
82+
Der zäheste: Ich hatte mehrere meiner schönen Regeln aufgeschrieben, sie sahen korrekt aus – und wurden trotzdem ignoriert. Es brauchte etliche Tassen Kaffee und einiges an Detektivarbeit, bis ich verstand, dass eine Regel an exakt der richtigen Stelle stehen muss, damit sie überhaupt zählt. „Aufgeschrieben" ist eben nicht „angewendet" – die Lektion zieht sich durch die ganze Reise.
83+
84+
Und der kniffligste: unsere Datenbank-Vermittlungsstelle, durch die jede Anfrage läuft. Die wollte ich doppelt absichern – aber meine Verteilungsregel war zu streng formuliert. Die zweite Kopie fand keinen freien Platz und blieb in der Warteschleife hängen. Erst als ich die Regel von „muss" auf „möglichst" abgemildert habe, lief beides sauber auf zwei verschiedenen Servern. Eine winzige Formulierung, ein riesiger Unterschied.
85+
86+
## Was das für OneLiteFeather bedeutet
87+
88+
Klingt nach viel Aufwand für etwas, das man im besten Fall nie bemerkt. Genau das ist der Punkt:
89+
90+
- **Weniger Überraschungen.** Ein einzelner ausgefallener Server ist heute ein Schulterzucken, kein Notfall.
91+
- **Ruhigere Wartungen.** Updates laufen tagsüber, ohne dass mir die Hände zittern.
92+
- **Klare Prioritäten.** Wird es eng, schützt sich das System selbst – Wichtiges bleibt, Verzichtbares tritt zurück.
93+
- **Mehr Ruhe im Team.** Weniger nächtliche „Website ist down"-Schrecksekunden, mehr Zeit für die Projekte, die uns wirklich Spaß machen.
94+
95+
Unser Cluster ist dadurch nicht spektakulärer geworden – es ist langweiliger geworden, im allerbesten Sinne. Und ehrlich: Genau diese Sorte Langeweile ist mir am liebsten.
96+
97+
---
98+
99+
## Werde Teil unserer Reise
100+
101+
Bei OneLiteFeather schätzen wir eine entspannte Arbeitsatmosphäre und leben den Flair von kreativer Freiheit gepaart mit strukturierter Organisation. Wir arbeiten nach dem **Kanban-Prinzip**, das uns ermöglicht, in einem stressfreien Umfeld ohne starre Deadlines zu arbeiten. Dabei liegt unser Fokus auf **aktiver Kommunikation** und dem gemeinsamen Fortschritt. Wenn du in den Bereichen **Moderation**, **Community Management**, **Entwicklung** oder **Konzepterstellung** Erfahrung hast und dich in einer Gemeinschaft engagieren möchtest, die Wert auf persönliches Wachstum und Teamarbeit legt, dann bist du bei uns genau richtig. Referenzen sind willkommen und helfen uns, ein besseres Verständnis für deine Fähigkeiten und Erfahrungen zu bekommen.
102+
103+
Wir sind gespannt darauf, von dir zu hören und gemeinsam spannende Projekte zu verwirklichen. Du kannst mich, **themeinerlp**, direkt auf Discord erreichen, oder du kannst über unseren Discord-Server in Kontakt treten, den du unter [1lf.link/discord](https://1lf.link/discord) findest. Dort kannst du ein Ticket eröffnen, um dich zu bewerben. Alternativ kannst du auch **OneLiteFeather** direkt via Discord kontaktieren. Lass uns über deine Ideen plaudern und wie du zur OneLiteFeather-Community beitragen kannst. Zusammen können wir die digitale Welt erkunden, unser Wissen erweitern und eine positive und unterstützende Gemeinschaft aufbauen.
104+
105+
Falls Unklarheiten aufkommen sollten, sei frei uns zu fragen. Wir sind hier, um alle deine Fragen zu beantworten und freuen uns darauf, mehr über dich und deine Interessen zu erfahren!

0 commit comments

Comments
 (0)