Files
kubern-everything/longhorn

Um ein Persistent Volume (PV) für einen Longhorn Storage Provider in einem Kubernetes-Cluster zu erstellen, musst du mehrere Schritte durchführen. Longhorn ist eine verteilte Blockspeicherlösung für Kubernetes, und du kannst damit Persistent Volumes provisionieren.

Hier sind die Schritte, um ein Persistent Volume für Longhorn zu erstellen:

1. Stelle sicher, dass Longhorn installiert ist

Zuerst solltest du sicherstellen, dass Longhorn auf deinem Cluster installiert ist. Falls Longhorn noch nicht installiert ist, kannst du es mit Helm oder direkt aus den YAML-Dateien installieren.

Mit Helm:

helm repo add longhorn https://charts.longhorn.io
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace

Mit kubectl:

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.2.2/deploy/install.yaml

2. Erstelle ein PersistentVolume (PV) und ein PersistentVolumeClaim (PVC)

Nun kannst du ein Persistent Volume (PV) und einen Persistent Volume Claim (PVC) für den Longhorn-Storage erstellen.

PV für Longhorn:

Erstelle eine YAML-Datei (z.B. longhorn-pv.yaml), um ein Persistent Volume zu definieren:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: longhorn-pv
spec:
  capacity:
    storage: 10Gi  # Setze die gewünschte Speichergröße
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain  # Optionally, 'Delete' oder 'Recycle'
  storageClassName: longhorn  # Verwende den Longhorn-StorageClass-Namen
  csi:
    driver: driver.longhorn.io  # Der Longhorn CSI-Treiber
    volumeHandle: longhorn-pv  # Ein eindeutiger Bezeichner für das Volume
    fsType: ext4  # Dateisystemtyp

PVC für Longhorn:

Erstelle eine YAML-Datei für den Persistent Volume Claim (z.B. longhorn-pvc.yaml), um den PV zu beanspruchen:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi  # Die angeforderte Größe sollte mit der des PV übereinstimmen
  storageClassName: longhorn  # Die gleiche StorageClass wie im PV
  volumeName: longhorn-pv  # Der Name des PV, das für diesen PVC verwendet werden soll

3. Anwenden der YAML-Dateien

Nachdem du die YAML-Dateien erstellt hast, kannst du sie auf deinem Kubernetes-Cluster anwenden:

kubectl apply -f longhorn-pv.yaml
kubectl apply -f longhorn-pvc.yaml

4. Überprüfen des Status

Prüfe den Status der Persistent Volumes und Persistent Volume Claims:

kubectl get pv
kubectl get pvc

Das PV sollte nun mit dem PVC verbunden sein, und du kannst den Longhorn-Storage verwenden.

5. Beispiel: Pod mit PVC verwenden

Nun kannst du einen Pod erstellen, der das PVC nutzt:

apiVersion: v1
kind: Pod
metadata:
  name: longhorn-demo
spec:
  containers:
    - name: demo-container
      image: nginx
      volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: longhorn-volume
  volumes:
    - name: longhorn-volume
      persistentVolumeClaim:
        claimName: longhorn-pvc

Erstelle den Pod mit:

kubectl apply -f pod.yaml

Dieser Pod wird nun das Persistent Volume, das du mit Longhorn erstellt hast, als Speicher verwenden.

Fazit:

Mit diesen Schritten hast du ein Persistent Volume (PV) und einen Persistent Volume Claim (PVC) für den Longhorn-Storage Provider erstellt. Du kannst das Volume nun in deinen Pods nutzen.

Disable Localpath as default

kubectl get storageclass

kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'