Bereitstellen eines Volumes
Erstellen Sie ein PersistentVolume (PV) und ein PersistentVolumeClaim (PVC), das die konfigurierte Kubernetes StorageClass verwendet, um Zugriff auf das PV anzufordern. Anschließend können Sie das PV an einem Pod montieren.
Überblick
Ein "PersistentVolume" (PV) ist eine physische Speicherressource, die vom Clusteradministrator auf einem Kubernetes-Cluster bereitgestellt wird. Die "PersistentVolumeClaim" (PVC) ist eine Anforderung für den Zugriff auf das PersistentVolume auf dem Cluster.
Die PVC kann so konfiguriert werden, dass eine Speicherung einer bestimmten Größe oder eines bestimmten Zugriffsmodus angefordert wird. Mithilfe der zugehörigen StorageClass kann der Clusteradministrator mehr als die Größe des PersistentVolume und den Zugriffsmodus steuern, z. B. die Performance oder das Service-Level.
Nachdem Sie das PV und die PVC erstellt haben, können Sie das Volume in einem Pod einbinden.
Beispielmanifeste
PersistentVolume-Beispielmanifest
Dieses Beispielmanifest zeigt ein Basis-PV von 10Gi, das mit StorageClass verknüpft ist basic-csi
.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-storage labels: type: local spec: storageClassName: basic-csi capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/my/host/path"
PersistentVolumeClaim-Beispielmanifeste
Diese Beispiele zeigen grundlegende PVC-Konfigurationsoptionen.
Dieses Beispiel zeigt ein einfaches PVC mit RWO-Zugriff, das mit einer StorageClass namens verknüpft ist basic-csi
.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: basic-csi
Dieses Beispiel zeigt eine grundlegende PVC für NVMe/TCP mit RWO-Zugriff, die einer StorageClass namens zugeordnet ist protection-gold
.
--- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-san-nvme spec: accessModes: - ReadWriteOnce resources: requests: storage: 300Mi storageClassName: protection-gold
Pod-Manifest-Proben
Diese Beispiele zeigen grundlegende Konfigurationen zum Anschließen der PVC an einen Pod.
kind: Pod apiVersion: v1 metadata: name: pv-pod spec: volumes: - name: pv-storage persistentVolumeClaim: claimName: basic containers: - name: pv-container image: nginx ports: - containerPort: 80 name: "http-server" volumeMounts: - mountPath: "/my/mount/path" name: pv-storage
--- apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: {} volumeMounts: - mountPath: "/usr/share/nginx/html" name: task-pv-storage dnsPolicy: ClusterFirst restartPolicy: Always volumes: - name: task-pv-storage persistentVolumeClaim: claimName: pvc-san-nvme
Erstellen Sie das PV und die PVC
-
Erstellen Sie das PV.
kubectl create -f pv.yaml
-
Überprüfen Sie den PV-Status.
kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv-storage 4Gi RWO Retain Available 7s
-
Erstellen Sie das PVC.
kubectl create -f pvc.yaml
-
Überprüfen Sie den PVC-Status.
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-storage Bound pv-name 2Gi RWO 5m
-
Mounten Sie das Volume in einem Pod.
kubectl create -f pv-pod.yaml
Sie können den Fortschritt mit überwachen kubectl get pod --watch
. -
Vergewissern Sie sich, dass das Volume auf gemountet ist
/my/mount/path
.kubectl exec -it task-pv-pod -- df -h /my/mount/path
-
Sie können den Pod jetzt löschen. Die Pod Applikation wird nicht mehr existieren, aber das Volume bleibt erhalten.
kubectl delete pod task-pv-pod
Einzelheiten zur Interaktion von Storage-Klassen mit den PersistentVolumeClaim
Parametern und zur Steuerung, wie Astra Trident Volumes provisioniert, finden Sie unter"Kubernetes und Trident Objekte".