Speicherverwaltung
Lernziele
In diesem Tutorial erfahren Sie, wie Sie den persistenten Speicher in Ihrem Managed Kubernetes-Cluster verwalten. Kubernetes verwendet das Konzept der StorageClass, um die verschiedenen verfügbaren Speichertypen zu definieren.
Am Ende dieses Leitfadens werden Sie in der Lage sein:
- Die verschiedenen angebotenen
StorageClassesverstehen. - Einen
PersistentVolumeClaim(PVC) erstellen, um Speicher anzufordern. - Diesen Speicher in Ihren Pods mounten.
Verfügbare StorageClasses
Cloud Temple bietet mehrere StorageClasses an, um Ihren unterschiedlichen Anforderungen in Bezug auf Leistung und Anwendungsfälle gerecht zu werden:
-
ceph-block(Standard)- Zugriffstyp : Block (
ReadWriteOnce). - Replikationsfaktor : X3 (hohe Verfügbarkeit).
- Anwendungsfall : Dies ist die Standardklasse, ideal für Datenbanken und Anwendungen, die einen exklusiven und leistungsstarken Festplattenzugriff mit hoher Ausfallsicherheit erfordern.
- Zugriffstyp : Block (
-
ceph-filesystem- Zugriffstyp : Dateisystem (
ReadWriteMany). - Anwendungsfall : Nützlich, wenn mehrere Pods (verteilt auf verschiedenen Knoten) gleichzeitig auf denselben Volume lesen und schreiben müssen (z. B. Dateifreigabe, CMS, statische Assets).
- Zugriffstyp : Dateisystem (
-
ceph-block-norepl- Zugriffstyp : Block (
ReadWriteOnce). - Replikationsfaktor : X1 (ohne zusätzliche Replikation).
- Anwendungsfall : Geeignet für Daten, bei denen die Replikation bereits auf Anwendungsebene verwaltet wird oder die keine hohe Ausfallsicherheit auf Speicherebene erfordern (Caches, ephemere Daten).
- Zugriffstyp : Block (
-
topolvm-ssd(optional)- Zugriffstyp : Lokal (
ReadWriteOnce). - Anwendungsfall : Lokaler Knotenspeicher mit sehr hoher Leistung (geringe Latenz). Achtung: Dieser Speicher ist an den physischen Knoten gebunden. Wird der Knoten gelöscht, gehen auch die Daten verloren.
- Zugriffstyp : Lokal (
Schritt 1: Einen PersistentVolumeClaim (PVC) erstellen
Ein PVC ist eine Speicheranforderung. Hier erfahren Sie, wie Sie einen PVC für jeden Speichertyp erstellen.
Beispiel 1: Volume ceph-block (Standard)
Wenn Sie keine storageClassName angeben, wird die Klasse ceph-block standardmäßig verwendet.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-ceph-block
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: ceph-block
Beispiel 2: Geteiltes Volume ceph-filesystem
Für ein Volume, das gleichzeitig von mehreren Pods gemountet werden kann, verwenden Sie ceph-filesystem mit dem Zugriffsmodus ReadWriteMany.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-ceph-fs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
storageClassName: ceph-filesystem
Beispiel 3: Volume ceph-block-norepl
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-ceph-block-norepl
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: ceph-block-norepl
Beispiel 4: Lokales Volume mit topolvm
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-topolvm
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: topolvm-ssd
Wenden Sie das Manifest Ihrer Wahl mit dem folgenden Befehl an:
kubectl apply -f mon-pvc.yaml
Sie können den Status Ihres PVC überprüfen:
kubectl get pvc
Der Status wechselt zu Bound, sobald das Volume bereitgestellt wurde.
Schritt 2: Speicher in einem Pod verwenden
Sobald der PVC erstellt wurde, können Sie ihn in einem Pod mounten, indem Sie ihn in den Abschnitten volumes und volumeMounts hinzufügen.
Hier ist ein Beispiel für einen Pod, der den zuvor erstellten PVC pvc-ceph-block verwendet:
apiVersion: v1
kind: Pod
metadata:
name: app-storage-demo
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: "/usr/share/nginx/html/data"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: pvc-ceph-block
Wenden Sie das Manifest an:
kubectl apply -f pod.yaml
Überprüfen Sie, ob der Pod ausgeführt wird:
kubectl get pods
Bereinigung
Um Speicherressourcen freizugeben, löschen Sie zuerst den Pod und dann den PVC:
kubectl delete pod app-storage-demo
kubectl delete pvc pvc-ceph-block
Achtung : Das Löschen des PVC führt standardmäßig zum Löschen des zugrunde liegenden Volumes und der darin enthaltenen Daten (gemäß der
ReclaimPolicyder StorageClass, die standardmäßigDeleteist).