From 31b2b16ad85e29bb86219a828a9febdb17cd9832 Mon Sep 17 00:00:00 2001 From: baschno Date: Thu, 16 Jan 2025 21:24:52 +0100 Subject: [PATCH] adding volume test and demo files --- 11_storage_tests/longhorn-pv.yaml | 17 ++++ 11_storage_tests/longhorn-pvc.yaml | 13 +++ 11_storage_tests/longhorn-with-nginx.yaml | 16 +++ 11_storage_tests/pv-nfs.yaml | 12 +++ 11_storage_tests/pv.yaml | 12 +++ longhorn/README.md | 117 ++++++++++++++++++++++ 6 files changed, 187 insertions(+) create mode 100644 11_storage_tests/longhorn-pv.yaml create mode 100644 11_storage_tests/longhorn-pvc.yaml create mode 100644 11_storage_tests/longhorn-with-nginx.yaml create mode 100644 11_storage_tests/pv-nfs.yaml create mode 100644 11_storage_tests/pv.yaml diff --git a/11_storage_tests/longhorn-pv.yaml b/11_storage_tests/longhorn-pv.yaml new file mode 100644 index 0000000..49b6d02 --- /dev/null +++ b/11_storage_tests/longhorn-pv.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: longhorn-test-pv + namespace: default +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-test-pv # Ein eindeutiger Bezeichner für das Volume + fsType: ext4 # Dateisystemtyp diff --git a/11_storage_tests/longhorn-pvc.yaml b/11_storage_tests/longhorn-pvc.yaml new file mode 100644 index 0000000..8d35be7 --- /dev/null +++ b/11_storage_tests/longhorn-pvc.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: longhorn-test-pvc + namespace: default +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-test-pv # Der Name des PV, das für diesen PVC verwendet werden soll \ No newline at end of file diff --git a/11_storage_tests/longhorn-with-nginx.yaml b/11_storage_tests/longhorn-with-nginx.yaml new file mode 100644 index 0000000..ae48ee6 --- /dev/null +++ b/11_storage_tests/longhorn-with-nginx.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: longhorn-demo + namespace: default +spec: + containers: + - name: demo-container + image: nginx:latest + volumeMounts: + - mountPath: /usr/share/nginx/html + name: longhorn-volume + volumes: + - name: longhorn-volume + persistentVolumeClaim: + claimName: longhorn-test-pvc diff --git a/11_storage_tests/pv-nfs.yaml b/11_storage_tests/pv-nfs.yaml new file mode 100644 index 0000000..d34d490 --- /dev/null +++ b/11_storage_tests/pv-nfs.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: demo-pv +spec: + accessModes: + - ReadWriteOnce + capacity: + storage: 1Gi + storageClassName: standard + hostPath: + path: /tmp/demo-pv \ No newline at end of file diff --git a/11_storage_tests/pv.yaml b/11_storage_tests/pv.yaml new file mode 100644 index 0000000..d34d490 --- /dev/null +++ b/11_storage_tests/pv.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: demo-pv +spec: + accessModes: + - ReadWriteOnce + capacity: + storage: 1Gi + storageClassName: standard + hostPath: + path: /tmp/demo-pv \ No newline at end of file diff --git a/longhorn/README.md b/longhorn/README.md index 230c1d5..242d495 100644 --- a/longhorn/README.md +++ b/longhorn/README.md @@ -1,3 +1,120 @@ +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: +```bash +helm repo add longhorn https://charts.longhorn.io +helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace +``` + +#### Mit kubectl: +```bash +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: + +```yaml +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: + +```yaml +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: + +```bash +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: + +```bash +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: + +```yaml +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: + +```bash +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