Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:kubernetes:longhorn_dbs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
it-wiki:kubernetes:longhorn_dbs [2025/10/11 06:26] – angelegt markoit-wiki:kubernetes:longhorn_dbs [2025/10/15 06:40] (aktuell) – [Konfiguration] marko
Zeile 7: Zeile 7:
 Mit Longhorn lassen sich Anwendungen in Kubernetes-Clustern mit skalierbarem und dauerhaftem Speicher ausstatten. Die Software läuft auf Standard-Hardware und ist komplett quelloffen. Sie wird unter der Apache-2.0-Lizenz veröffentlicht. Mit Longhorn lassen sich Anwendungen in Kubernetes-Clustern mit skalierbarem und dauerhaftem Speicher ausstatten. Die Software läuft auf Standard-Hardware und ist komplett quelloffen. Sie wird unter der Apache-2.0-Lizenz veröffentlicht.
  
-==== Funktionsweise und Features von Longhorn ====+==== Funktionsweise und Features ==== 
 +{{ :it-wiki:kubernetes:suse-how-longhorn-works.jpg?nolink |}} 
 Longhorn basiert auf einem containerorientierten Ansatz und realisiert verteilten Blockspeicher unter Verwendung der Prinzipien von Containerisierung und Microservices. Für jedes Blockspeichervolume wird ein separater Storage-Controller bereitgestellt. Die Volumes werden über mehrere Knoten hinweg synchron repliziert. Longhorn wird von Kubernetes mittels eines CSI-Treibers (Container Storage Interface Driver) als Speicheranbieter angesprochen. Longhorn basiert auf einem containerorientierten Ansatz und realisiert verteilten Blockspeicher unter Verwendung der Prinzipien von Containerisierung und Microservices. Für jedes Blockspeichervolume wird ein separater Storage-Controller bereitgestellt. Die Volumes werden über mehrere Knoten hinweg synchron repliziert. Longhorn wird von Kubernetes mittels eines CSI-Treibers (Container Storage Interface Driver) als Speicheranbieter angesprochen.
  
Zeile 19: Zeile 21:
   * Unterbrechungsfreie Aktualisierungen des Longhorn-Stacks.   * Unterbrechungsfreie Aktualisierungen des Longhorn-Stacks.
  
-==== Anwendungsmöglichkeiten der verteilten Block-Storage-Lösung Longhorn ====+==== Anwendungsmöglichkeiten der verteilten Block-Storage-Lösung ====
 Die verteilte Open-Source-Block-Storage-Lösung für Kubernetes eröffnet vielfältige Einsatzmöglichkeiten. Longhorn eignet sich besonders für container-native, auf Microservices basierende Anwendungen. Durch die Bereitstellung von persistentem Speicher können zustandsbehaftete Anwendungen auch in vergänglichen, containerisierten Umgebungen umgesetzt werden. Typische mit Longhorn als persistentem Storage realisierbare Anwendungsfälle sind verteilte Datenbanken, Analyseplattformen, Webanwendungen, KI- und Machine-Learning-Workloads sowie Content-Management-Systeme. Die verteilte Open-Source-Block-Storage-Lösung für Kubernetes eröffnet vielfältige Einsatzmöglichkeiten. Longhorn eignet sich besonders für container-native, auf Microservices basierende Anwendungen. Durch die Bereitstellung von persistentem Speicher können zustandsbehaftete Anwendungen auch in vergänglichen, containerisierten Umgebungen umgesetzt werden. Typische mit Longhorn als persistentem Storage realisierbare Anwendungsfälle sind verteilte Datenbanken, Analyseplattformen, Webanwendungen, KI- und Machine-Learning-Workloads sowie Content-Management-Systeme.
  
-==== Vorteile von Longhorn ====+==== Vorteile ====
 Longhorn wird unter der Apache-2.0-Lizenz angeboten und steht als Open-Source-Software kostenlos zur Verfügung. Es existiert eine aktive Online-Community, zudem kann professioneller, kostenpflichtiger Support für die Block-Storage-Lösung bezogen werden. Longhorn erleichtert die Bereitstellung und Verwaltung von persistentem Datenspeicher in von Kubernetes gesteuerten Container-Umgebungen. Storage-Volumes lassen sich direkt über Kubernetes verwalten. Longhorn wird unter der Apache-2.0-Lizenz angeboten und steht als Open-Source-Software kostenlos zur Verfügung. Es existiert eine aktive Online-Community, zudem kann professioneller, kostenpflichtiger Support für die Block-Storage-Lösung bezogen werden. Longhorn erleichtert die Bereitstellung und Verwaltung von persistentem Datenspeicher in von Kubernetes gesteuerten Container-Umgebungen. Storage-Volumes lassen sich direkt über Kubernetes verwalten.
  
Zeile 32: Zeile 34:
   * flexible Skalierbarkeit,   * flexible Skalierbarkeit,
   * unterbrechungsfreie Aktualisierungen.   * unterbrechungsfreie Aktualisierungen.
 +
 +===== Installation und Konfiguration =====
 +==== Voraussetzungen ====
 +
 +  * Ein Kubernetes-Cluster ab Version 1.25.
 +  * Helm in Version 3.
 +  * Grundlegende Kenntnisse in Kubernetes.
 +
 +
 +==== Konfiguration ====
 +Legen das Helm Chart Values File ''longhorn-values.yaml'' an, um die [[https://github.com/longhorn/charts/tree/v1.10.x/charts/longhorn|Konfiguration für Longhorn]] zu speichern.
 +
 +Als Erstes passen wir die Einstellung für die Datenlokalität an. Setze diese auf best-effort, damit Longhorn versucht, eine Replik auf demselben Knoten wie das angeschlossene Volume zu halten:
 +<code yaml>
 +defaultSettings:
 +  storageMinimalAvailablePercentage: "10"
 +  defaultDataPath: "/mnt/longhorn-storage"
 +
 +persistence:
 +  defaultClassReplicaCount: 2
 +  defaultDataLocality: "best-effort"
 +
 +longhornUI:
 +  replicas: 1
 +
 +service:
 +  ui:
 +    type: LoadBalancer
 +</code>
 +
 +Hier findet ihr noch [[longhorn_helmchart_values|weitere Helm Chart Values Varianten]] welche ich getestet habe.
 +==== Installation ====
 +Erstelle den Namespace ''longhorn-system'' und richte das Helm-Repository ein.
 +<code bash>
 +kubectl create ns longhorn-system
 +namespace/longhorn-system created
 +
 +helm repo add longhorn https://charts.longhorn.io
 +"longhorn" has been added to your repositories
 +
 +helm repo update
 +Hang tight while we grab the latest from your chart repositories...
 +...Successfully got an update from the "longhorn" chart repository
 +Update Complete. ⎈Happy Helming!⎈
 +</code>
 +
 +Nun kannst Du das Longhorn-System installieren:
 +<code bash>
 +helm install longhorn longhorn/longhorn \
 +  --namespace longhorn-system \
 +  --values longhorn.values.yaml
 +NAME: longhorn
 +LAST DEPLOYED: Wed Jul 24 07:16:08 2024
 +NAMESPACE: longhorn-system
 +STATUS: deployed
 +REVISION: 1
 +TEST SUITE: None
 +NOTES:
 +Longhorn is now installed on the cluster!
 +
 +Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized.
 +
 +Visit our documentation at https://longhorn.io/docs/
 +</code>
 +
 +==== Nacharbeiten / maintenance
 +Prüfe den Status Deiner Installation:
 +<code bash>
 +kubectl get pods -n longhorn-system
 +NAME                                                READY   STATUS    RESTARTS   AGE
 +csi-attacher-5f8b9cbbdc-2dbdg                       1/    Running            45s
 +csi-attacher-5f8b9cbbdc-hq7ps                       1/    Running            45s
 +csi-attacher-5f8b9cbbdc-k2tpq                       1/    Running            45s
 +csi-provisioner-6d85c78995-b4b4r                    1/1     Running            45s
 +csi-provisioner-6d85c78995-lvvwb                    1/1     Running            45s
 +csi-provisioner-6d85c78995-nkm7g                    1/1     Running            45s
 +csi-resizer-677c8b7c75-h9kc7                        1/1     Running            45s
 +csi-resizer-677c8b7c75-qbvxl                        1/1     Running            45s
 +csi-resizer-677c8b7c75-wppts                        1/1     Running            45s
 +csi-snapshotter-868c6c774d-4z57t                    1/1     Running            45s
 +csi-snapshotter-868c6c774d-9t2cd                    1/1     Running            45s
 +csi-snapshotter-868c6c774d-ps5lp                    1/1     Running            45s
 +engine-image-ei-b0369a5d-4jqzf                      1/1     Running            47s
 +instance-manager-84b0d2d8f37aaeabfa5785c886a57710   1/    Running            47s
 +longhorn-csi-plugin-bsv4m                           3/    Running            45s
 +longhorn-driver-deployer-6dff48688b-4497d           1/    Running            62s
 +longhorn-manager-ft96r                              1/1     Running            62s
 +longhorn-ui-966cf4bb4-5shp9                         1/    Running            62s
 +longhorn-ui-966cf4bb4-lx2th                         1/    Running            62s
 +</code>
 +
 +Richte einen wiederkehrenden Auftrag ein, um das Dateisystem regelmäßig zu trimmen und so Speicherplatz zurückzugewinnen. Erstelle dazu die Datei ''trim-filesystem.recurring-job.yaml'':
 +<code yaml>
 +apiVersion: longhorn.io/v1beta2
 +kind: RecurringJob
 +metadata:
 +  name: trim-filesystem
 +  namespace: longhorn-system
 +spec:
 +  concurrency: 1
 +  cron: 0 0 * * *
 +  name: trim-filesystem
 +  task: filesystem-trim
 +  groups:
 +    - default
 +</code>
 +
 +Erstelle einen weiteren wiederkehrenden Auftrag, der entfernbaren Snapshots regelmäßig bereinigt.
 +''snapshot-cleanup.recurring-job.yaml'':
 +<code yaml>
 +apiVersion: longhorn.io/v1beta2
 +kind: RecurringJob
 +metadata:
 +  name: snapshot-cleanup
 +  namespace: longhorn-system
 +spec:
 +  concurrency: 1
 +  cron: 12 0 * * *
 +  groups:
 +    - default
 +  name: snapshot-cleanup
 +  task: snapshot-cleanup
 +</code>
 +
 +Deploy beide wiederkehrenden Aufträge in Deinen Cluster:
 +<code bash>
 +kubectl apply -f trim-filesystem.recurring-job.yaml 
 +recurringjob.longhorn.io/trim-filesystem created
 +
 +kubectl apply -f snapshot-cleanup.recurring-job.yaml 
 +recurringjob.longhorn.io/snapshot-cleanup created
 +</code>
 +
 +Standardmäßig löscht Longhorn verwaiste Ressourcen nicht automatisch. Es gibt jedoch eine Einstellung, mit der wir dies ermöglichen können. Setze dazu orphan-auto-deletion auf true:
 +<code bash>
 +kubectl -n longhorn-system get setting orphan-auto-deletion -o yaml | sed 's/value: "false"/value: "true"/' | kubectl apply -f -
 +setting.longhorn.io/orphan-auto-deletion configured
 +
 +kubectl -n longhorn-system get setting orphan-auto-deletion
 +NAME                   VALUE   AGE
 +orphan-auto-deletion   true    53m
 +</code>
it-wiki/kubernetes/longhorn_dbs.1760163995.txt.gz · Zuletzt geändert: von marko