Cluster Rebuild

Wiederherstellung eines Kubernetes-Clusters nach vollständigem Verlust aller Nodes oder nach einer Neuinstallation.

Dieses Runbook beschreibt die Wiederherstellung eines Clusters auf Basis von Talos Linux, FluxCD und GitOps.

Voraussetzungen

  • Zugriff auf das Git Repository

  • Zugriff auf die Domainverwaltung

  • Zugriff auf Hetzner Object Storage

  • Zugriff auf Talos-Konfigurationen

  • Zugriff auf SOPS-Schlüssel

  • Zugriff auf Netcup oder Home-Hardware

Wiederherstellungsreihenfolge

Die Reihenfolge muss eingehalten werden.

Talos
    ↓
Kubernetes
    ↓
Cilium
    ↓
Storage
    ↓
FluxCD
    ↓
Infrastructure
    ↓
Applications
    ↓
Backups

Cluster löschen

Falls ein beschädigter Cluster noch existiert:

talosctl reset --graceful=false --reboot

auf allen Nodes ausführen.

Talos installieren

Talos Image erstellen

Talos Factory Image erzeugen.

Erforderliche Extensions:

  • DRBD

  • ZFS

  • i915

  • Intel Microcode

  • Realtek Firmware

  • iSCSI Tools

Talos starten

Nodes von ISO oder PXE booten.

Konfiguration anwenden

talosctl apply-config \
  --insecure \
  --nodes <node-ip> \
  --file controlplane.yaml

Bootstrap

Ersten Control-Plane-Node bootstrappen.

talosctl bootstrap \
  --nodes <node-ip>

Kubeconfig abrufen

talosctl kubeconfig .

Kubernetes prüfen

Alle Nodes müssen verfügbar sein.

kubectl get nodes

Kontrollieren:

  • Nodes Ready

  • etcd Healthy

  • API erreichbar

Cilium installieren

Cilium wird vor allen weiteren Komponenten installiert.

kubectl get pods -A

Prüfen:

  • cilium

  • cilium-operator

  • hubble

müssen fehlerfrei laufen.

Storage bereitstellen

Piraeus Operator

Installation über Flux.

Prüfen:

kubectl get pods -n piraeus-datastore

LINSTOR

kubectl get nodes.storage.linbit.com

Alle Storage-Nodes müssen verfügbar sein.

Storage Classes

kubectl get storageclass

Kontrollieren:

  • replizierter Storage

  • nicht replizierter Storage

FluxCD bereitstellen

Flux Operator

Installation durchführen.

Prüfen:

kubectl get pods -n flux-system

FluxInstance

FluxInstance anwenden.

kubectl apply -f fluxinstance.yaml

Synchronisierung prüfen

flux get all

Alle Komponenten müssen den Status Ready besitzen.

Infrastruktur prüfen

Folgende Komponenten müssen erfolgreich synchronisiert werden:

  • Cert Manager

  • ExternalDNS

  • External Secrets

  • Piraeus

  • Victoria Metrics

  • Victoria Logs

  • Velero

Prüfen:

kubectl get pods -A

Keine Komponenten dürfen sich im Status:

  • CrashLoopBackOff

  • Pending

  • ImagePullBackOff

befinden.

DNS prüfen

Intern

Pi-hole muss erreichbar sein.

Prüfen:

nslookup immich.home.tamay.cloud

Extern

Prüfen:

dig vaultwarden.tamay.cloud

ExternalDNS muss alle Records korrekt angelegt haben.

Backups prüfen

Velero

velero backup get

CloudNativePG

kubectl get backups -A

Talos Backup

Prüfen:

  • Bucket erreichbar

  • Backups vorhanden

Daten wiederherstellen

Anwendungen nur wiederherstellen, wenn Daten fehlen.

Typische Reihenfolge:

  1. Datenbanken

  2. Objektstorage

  3. Benutzerdaten

  4. Anwendungen

Velero Restore

velero restore create \
  --from-backup <backup>

Anwendungen prüfen

Kontrollieren:

kubectl get pods -A

Zusätzlich prüfen:

  • Immich

  • Paperless

  • Jellyfin

  • Home Assistant

  • Vaultwarden

  • Matrix

  • Mail

Abschlusskontrolle

Cluster

kubectl get nodes

Alle Nodes müssen Ready sein.

Flux

flux get all

Alle Ressourcen müssen Ready sein.

Storage

kubectl get pvc -A

Keine Volumes dürfen fehlerhaft sein.

Monitoring

Kontrollieren:

  • Victoria Metrics

  • Victoria Logs

  • Dashboards

  • Alerts

Backups

Kontrollieren:

  • Velero

  • Talos Backup

  • CloudNativePG

Erfolgreiche Wiederherstellung

Der Cluster gilt als wiederhergestellt, wenn:

  • Alle Nodes verfügbar sind

  • Flux fehlerfrei synchronisiert

  • Anwendungen erreichbar sind

  • Daten erfolgreich wiederhergestellt wurden

  • Backups wieder ausgeführt werden