Einführung
In diesem Lab lernen Sie, wie Sie Anwendungsdaten mit PersistentVolumes in Kubernetes speichern.
PersistentVolumes (PVs) sind Kubernetes-Ressourcen, die ein Stück netzwerkbasierten Speicher in einem Cluster repräsentieren. Sie können verwendet werden, um Anwendungsdaten unabhängig vom Container-Lebenszyklus zu speichern. Das bedeutet, dass Daten selbst dann erhalten bleiben, wenn der Container beendet oder auf einen anderen Knoten verschoben wird.
In diesem Lab erstellen Sie ein PersistentVolume und verwenden es zum Speichern von Daten aus einer einfachen Webanwendung. Anschließend modifizieren Sie die Anwendung so, dass sie über ein PersistentVolumeClaim (PVC) auf das PersistentVolume zugreift. Schließlich passen Sie das PVC an, um spezifische Speicherressourcen anzufordern.
Starten des Minikube-Clusters
Bevor Sie Ressourcen erstellen können, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichtgewichtige Kubernetes-Umgebung, die auf Ihrem lokalen Computer ausgeführt wird.
Navigieren Sie zu Ihrem Arbeitsverzeichnis:
Öffnen Sie das Terminal und wechseln Sie in den Standard-Projektordner:
cd /home/labex/projectStarten Sie Minikube:
Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:
minikube start- Dieser Befehl richtet einen Single-Node-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
- Abhängig von der Leistung Ihres Systems kann es einige Minuten dauern, bis Minikube gestartet ist.
Überprüfen Sie, ob Minikube läuft:
Überprüfen Sie den Status des Minikube-Clusters:
minikube status- Achten Sie darauf, dass Komponenten wie
kubeletundapiserveralsRunning(Läuft) aufgeführt werden. - Wenn der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Achten Sie darauf, dass Komponenten wie
Sollten beim Starten von Minikube Probleme auftreten, können Sie die Umgebung bei Bedarf mit minikube delete zurücksetzen.
Erstellen eines PersistentVolume
In diesem Schritt erstellen Sie ein PersistentVolume, das zum Speichern von Daten verwendet werden kann. Sie erstellen eine YAML-Datei namens pv.yaml mit folgendem Inhalt:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /mnt/data
Diese Datei erstellt ein PersistentVolume mit einer Kapazität von 1Gi und dem Zugriffsmodus ReadWriteOnce. Das Feld hostPath gibt an, dass die Daten auf dem Host-Computer unter dem Pfad /mnt/data gespeichert werden. Das Feld persistentVolumeReclaimPolicy ist auf Retain (Beibehalten) gesetzt, was bedeutet, dass die Daten erhalten bleiben, selbst wenn das PersistentVolume gelöscht wird.
Wenden Sie das PersistentVolume mit dem folgenden Befehl auf Ihren Cluster an:
kubectl apply -f pv.yaml
Bereitstellen einer einfachen Webanwendung
In diesem Schritt stellen Sie eine einfache Webanwendung bereit, die Daten auf dem in Schritt 1 erstellten PersistentVolume speichert. Sie erstellen eine YAML-Datei namens web-app.yaml mit folgendem Inhalt:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 1
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web-app
image: nginx
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html/data
volumes:
- name: data
persistentVolumeClaim:
claimName: my-pvc
Diese Datei erstellt ein Deployment mit einem Replik und einem Container, der das Nginx-Image ausführt. Das Feld volumeMounts legt fest, dass der Container das PersistentVolume unter dem Pfad /usr/share/nginx/html/data einbinden soll. Das Feld volumes gibt an, dass der Container ein PersistentVolumeClaim namens my-pvc verwenden soll.
Wenden Sie das Deployment mit dem folgenden Befehl auf Ihren Cluster an:
kubectl apply -f web-app.yaml
Erstellen eines PersistentVolumeClaim
In diesem Schritt erstellen Sie ein PersistentVolumeClaim, das verwendet wird, um Speicherplatz von dem in Schritt 1 erstellten PersistentVolume anzufordern. Sie erstellen eine YAML-Datei namens pvc.yaml mit folgendem Inhalt:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
Diese Datei erstellt ein PersistentVolumeClaim mit dem Zugriffsmodus ReadWriteOnce und einer Anforderung von 500Mi Speicherplatz vom PersistentVolume.
Wenden Sie das PersistentVolumeClaim mit dem folgenden Befehl auf Ihren Cluster an:
kubectl apply -f pvc.yaml
Überprüfen der Datendauerhaftigkeit
In diesem Schritt überprüfen Sie, ob die Daten auf dem PersistentVolume persistent gespeichert werden. Sie greifen auf die im Container laufende Webanwendung zu und schreiben einige Daten in das PersistentVolume.
Suchen Sie zunächst den Namen des Pods, auf dem Ihre Anwendung läuft, indem Sie folgenden Befehl ausführen:
kubectl get pods -l app=web-app
Sie sollten einen einzelnen Pod sehen, auf dem Ihre Anwendung ausgeführt wird. Notieren Sie sich den Namen des Pods.
Führen Sie anschließend den folgenden Befehl aus, um eine Shell-Sitzung in dem Container zu öffnen, in dem Ihre Anwendung läuft:
kubectl exec -it pod-name -- /bin/sh
Ersetzen Sie pod-name durch den Namen des Pods, den Sie sich zuvor notiert haben.
Sobald Sie sich in der Shell-Sitzung befinden, führen Sie den folgenden Befehl aus, um eine test.txt-Datei hinzuzufügen:
echo "This is a test file." > /usr/share/nginx/html/data/test.txt
Dieser Befehl erstellt eine Datei namens test.txt mit dem Text "This is a test file." im Datenverzeichnis des PersistentVolume.
Löschen Sie die Webanwendung mit dem folgenden Befehl:
kubectl delete deployment web-app
Erstellen Sie die Webanwendung mit dem folgenden Befehl neu:
kubectl apply -f web-app.yaml
Überprüfen Sie mit den folgenden Befehlen, ob die im Datenverzeichnis erstellte Datei immer noch existiert:
kubectl get pods -l app=web-app
kubectl exec pod-name -- cat /usr/share/nginx/html/data/test.txt
Ersetzen Sie pod-name durch den Namen des Pods, den Sie sich zuvor notiert haben.
Modifizieren der PVC-Speicherressourcen
In diesem Schritt modifizieren Sie das PVC, um spezifische Speicherressourcen vom PersistentVolume anzufordern. Ändern Sie die Datei pvc.yaml so ab, dass 1Gi Speicher statt 500Mi angefordert werden.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Fügen Sie in der letzten Zeile der StorageClass das Feld allowVolumeExpansion: true hinzu.
kubectl edit storageclass standard

Wenden Sie das aktualisierte PersistentVolumeClaim mit dem folgenden Befehl auf Ihren Cluster an:
kubectl delete deployment web-app
kubectl delete pvc my-pvc
kubectl apply -f web-app.yaml
kubectl apply -f pvc.yaml
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Anwendungsdaten mit PersistentVolumes in Kubernetes speichern. Sie haben ein PersistentVolume erstellt, eine einfache Webanwendung bereitgestellt, die dieses PersistentVolume genutzt hat, ein PersistentVolumeClaim erstellt, um Speicher vom PersistentVolume anzufordern, und das PersistentVolumeClaim so angepasst, dass spezifische Speicherressourcen angefordert werden. Sie haben außerdem überprüft, dass die Daten auf dem PersistentVolume selbst dann erhalten bleiben, wenn der Container beendet oder auf einen anderen Knoten verschoben wird.


