Erstelle eine Datei pv.yaml
:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
persistentVolumeReclaimPolicy: Retain
Hinweis:
hostPath
funktioniert nur in lokalen Clustern (z.B. Minikube, kind). In Cloud-Umgebungen nutzt du meist andere Storage Klassen.
Erstelle eine Datei pvc.yaml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
Erstelle eine Datei pod-with-pvc.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-pvc
spec:
containers:
- name: busybox
image: busybox
command: ["sleep", "3600"]
volumeMounts:
- mountPath: /data
name: storage
volumes:
- name: storage
persistentVolumeClaim:
claimName: my-pvc
kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml
kubectl apply -f pod-with-pvc.yaml
Prüfe Status:
kubectl get pv
kubectl get pvc
kubectl get pod pod-with-pvc
kubectl exec -it pod-with-pvc -- sh
Im Container:
cd /data
echo "Hallo PV!" > testfile.txt
cat testfile.txt
exit
kubectl delete pod pod-with-pvc
kubectl delete pvc my-pvc
kubectl delete pv my-pv
Begriff | Bedeutung |
---|---|
PersistentVolume (PV) | Speicher-Ressource im Cluster, z.B. ein Datenträger |
PersistentVolumeClaim (PVC) | Anfrage eines Pods nach Speicher mit bestimmten Eigenschaften |
accessModes | Wie das Volume verwendet werden darf (z.B. ReadWriteOnce) |
hostPath | Lokaler Pfad auf dem Node (nur Test/Dev!) |
persistentVolumeReclaimPolicy | Verhalten bei Löschung des PVC (Retain, Delete, Recycle) |