# 03 — Longhorn Distributed Storage **Datum:** 2026-03-17 **Version:** Longhorn v1.11.1 (Helm Chart 1.11.1) **Namespace:** longhorn-system --- ## Übersicht Longhorn ist ein cloud-natives, verteiltes Block-Storage-System für Kubernetes. Es repliziert Volumes über mehrere Nodes und bietet Snapshots, Backups und eine Web-UI. --- ## Voraussetzungen ### Helm installieren Helm war nicht vorhanden und wurde installiert: ```bash curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # → helm installed into /usr/local/bin/helm # Version: v3.20.1 ``` ### Kubeconfig einrichten ```bash mkdir -p ~/.kube cp /etc/rancher/k3s/k3s.yaml ~/.kube/config chmod 600 ~/.kube/config ``` --- ## Installation ### 1. Helm Repository hinzufügen ```bash helm repo add longhorn https://charts.longhorn.io helm repo update ``` Ausgabe: ``` "longhorn" has been added to your repositories ...Successfully got an update from the "longhorn" chart repository ``` ### 2. Namespace erstellen ```bash kubectl create namespace longhorn-system ``` ### 3. Longhorn per Helm installieren ```bash helm install longhorn longhorn/longhorn \ --namespace longhorn-system \ --set defaultSettings.defaultReplicaCount=2 \ --wait \ --timeout 10m ``` Parameter: - `defaultReplicaCount=2`: Jedes Volume wird auf 2 von 3 Nodes repliziert (ausreichend für 3-Node-Cluster) Ausgabe: ``` NAME: longhorn LAST DEPLOYED: Tue Mar 17 08:42:26 2026 NAMESPACE: longhorn-system STATUS: deployed REVISION: 1 APP VERSION: v1.11.1 ``` --- ## Pod-Status nach Installation ```bash kubectl get pods -n longhorn-system -o wide ``` Alle 27 Pods im Status `Running`: | Pod-Gruppe | Anzahl | Nodes | |---|---|---| | longhorn-manager | 3 | cp01, wrk01, wrk02 | | engine-image | 3 | cp01, wrk01, wrk02 | | instance-manager | 3 | cp01, wrk01, wrk02 | | longhorn-csi-plugin | 3 | cp01, wrk01, wrk02 | | csi-attacher | 3 | cp01, wrk01, wrk02 | | csi-provisioner | 3 | cp01, wrk01, wrk02 | | csi-resizer | 3 | cp01, wrk01, wrk02 | | csi-snapshotter | 3 | cp01, wrk01, wrk02 | | longhorn-ui | 2 | wrk01, wrk02 | | longhorn-driver-deployer | 1 | wrk02 | > **Hinweis:** `longhorn-manager` auf `rnk-wrk01` zeigte initial einen CrashLoopBackOff (2 Restarts). Ursache war ein transientes Startproblem beim Instance Manager. Nach dessen Initialisierung lief der Pod stabil. --- ## StorageClass Longhorn registriert sich automatisch als **Standard-StorageClass**: ```bash kubectl get storageclass ``` ``` NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false longhorn (default) driver.longhorn.io Delete Immediate true longhorn-static driver.longhorn.io Delete Immediate true ``` > Da nun zwei Default-StorageClasses existieren, sollte `local-path` ggf. als nicht-default markiert werden: > ```bash > kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}' > ``` --- ## Services ``` longhorn-admission-webhook ClusterIP 10.43.89.97 9502/TCP longhorn-backend ClusterIP 10.43.67.94 9500/TCP longhorn-frontend ClusterIP 10.43.107.228 80/TCP longhorn-recovery-backend ClusterIP 10.43.69.95 9503/TCP ``` ### Web-UI erreichbar machen (Port-Forward) ```bash kubectl port-forward -n longhorn-system svc/longhorn-frontend 8080:80 # UI dann unter http://localhost:8080 ``` --- ## Helm Release Info ``` NAME NAMESPACE REVISION STATUS CHART APP VERSION longhorn longhorn-system 1 deployed longhorn-1.11.1 v1.11.1 ``` --- ## Nächste Schritte - [x] `local-path` als nicht-default StorageClass demarkieren → bereits korrekt (longhorn ist default) - [x] Longhorn-UI via Ingress dauerhaft exposieren → erledigt 2026-03-19 - [ ] Backup-Target konfigurieren (z.B. NFS oder S3-kompatibel) - [ ] PVC-Test: Test-Deployment mit Longhorn-Volume erstellen --- ## Longhorn-UI Ingress (2026-03-19) Ingress für dauerhaften Zugriff auf die Longhorn-UI angelegt: ```bash kubectl apply -f - <