Einführung
In diesem Lab lernen Sie, wie Sie Anwendungsdaten in Kubernetes mithilfe von PersistentVolumes speichern.
PersistentVolumes (PVs) sind Kubernetes-Ressourcen, die einen netzwerkbasierten Speicher innerhalb eines Clusters repräsentieren. Sie ermöglichen es, Anwendungsdaten unabhängig vom Lebenszyklus eines Containers zu speichern. Das bedeutet, dass Daten erhalten bleiben, selbst wenn der Container beendet oder auf einen anderen Knoten verschoben wird.
In diesem Lab erstellen Sie ein PersistentVolume und verwenden es, um Daten einer einfachen Webanwendung zu speichern. Anschließend passen Sie die Anwendung so an, dass sie ein PersistentVolumeClaim (PVC) nutzt, um auf das PersistentVolume zuzugreifen. Abschließend modifizieren Sie das PVC, 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 Rechner 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.
- Je nach Leistung Ihres Systems kann der Start von Minikube einige Minuten in Anspruch nehmen.
Überprüfen Sie, ob Minikube läuft:
Prüfen Sie den Status des Minikube-Clusters:
minikube status- Achten Sie darauf, dass Komponenten wie
kubeletundapiserveralsRunningaufgeführt sind. - Falls der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Achten Sie darauf, dass Komponenten wie
Sollten beim Starten von Minikube Probleme auftreten, verwenden Sie minikube delete, um die Umgebung bei Bedarf zurückzusetzen.
Erstellen eines PersistentVolume
In diesem Schritt erstellen Sie ein PersistentVolume, das zur Datenspeicherung verwendet werden kann. Erstellen Sie 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 legt fest, dass die Daten auf dem Host-Rechner unter dem Pfad /mnt/data gespeichert werden. Die persistentVolumeReclaimPolicy ist auf Retain gesetzt, was bedeutet, dass die Daten erhalten bleiben, auch 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. Erstellen Sie 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 Replikat 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 Speicher vom PersistentVolume anzufordern, das Sie in Schritt 1 erstellt haben. Erstellen Sie 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 Datenpersistenz
In diesem Schritt überprüfen Sie, ob die Daten auf dem PersistentVolume dauerhaft gespeichert werden. Sie greifen auf die im Container laufende Webanwendung zu und schreiben einige Daten auf das PersistentVolume.
Ermitteln Sie zunächst den Namen des Pods, auf dem Ihre Anwendung läuft, indem Sie den folgenden Befehl ausführen:
kubectl get pods -l app=web-app
Sie sollten einen einzelnen Pod sehen, der Ihre Anwendung ausführt. 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 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 dem folgenden Befehl, ob die Datei, die Sie im Datenverzeichnis erstellt haben, weiterhin 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 notiert haben.
Ändern der PVC-Speicherressourcen
In diesem Schritt ändern Sie das PVC, um spezifische Speicherressourcen vom PersistentVolume anzufordern. Sie modifizieren die Datei pvc.yaml, um 1Gi Speicher anstelle von 500Mi anzufordern.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Fügen Sie in der letzten Zeile das Feld allowVolumeExpansion: true zur StorageClass 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 in Kubernetes mit PersistentVolumes speichern. Sie haben ein PersistentVolume erstellt, eine einfache Webanwendung bereitgestellt, die das PersistentVolume nutzt, ein PersistentVolumeClaim erstellt, um Speicher vom PersistentVolume anzufordern, und das PersistentVolumeClaim angepasst, um spezifische Speicherressourcen anzufordern. Sie haben zudem überprüft, dass die Daten auf dem PersistentVolume erhalten bleiben, selbst wenn der Container beendet oder auf einen anderen Knoten verschoben wurde.


