Provisioning di un volume
Creare un PersistentVolume (PV) e un PersistentVolumeClaim (PVC) che utilizza Kubernetes StorageClass configurato per richiedere l'accesso al PV. È quindi possibile montare il PV su un pod.
Panoramica
Un "PersistentVolume" (PV) è una risorsa di storage fisico fornita dall'amministratore del cluster in un cluster Kubernetes. Il "PersistentVolumeClaim" (PVC) è una richiesta di accesso al PersistentVolume sul cluster.
Il PVC può essere configurato per richiedere la memorizzazione di una determinata dimensione o modalità di accesso. Utilizzando StorageClass associato, l'amministratore del cluster può controllare più delle dimensioni di PersistentVolume e della modalità di accesso, ad esempio le prestazioni o il livello di servizio.
Dopo aver creato PV e PVC, è possibile montare il volume in un pod.
Manifesti campione
Manifesto di esempio di PersistentVolume
Questo manifesto di esempio mostra un PV di base di 10Gi associato a StorageClass 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"
Manifesti di campioni PersistentVolumeClaim
Questi esempi mostrano le opzioni di configurazione di base del PVC.
Questo esempio mostra un PVC di base con accesso RWO associato a un StorageClass denominato basic-csi
.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: basic-csi
Questo esempio mostra un PVC di base per NVMe/TCP con accesso RWO associato a una classe StorageClass denominata protection-gold
.
--- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-san-nvme spec: accessModes: - ReadWriteOnce resources: requests: storage: 300Mi storageClassName: protection-gold
Campioni manifesti pod
Questi esempi mostrano le configurazioni di base per collegare il PVC a un 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
Creare PV e PVC
-
Creare il PV.
kubectl create -f pv.yaml
-
Verificare lo stato FV.
kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv-storage 4Gi RWO Retain Available 7s
-
Creare il PVC.
kubectl create -f pvc.yaml
-
Verificare lo stato del PVC.
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-storage Bound pv-name 2Gi RWO 5m
-
Montare il volume in un pod.
kubectl create -f pv-pod.yaml
È possibile monitorare l'avanzamento utilizzando kubectl get pod --watch
. -
Verificare che il volume sia montato su
/my/mount/path
.kubectl exec -it task-pv-pod -- df -h /my/mount/path
-
A questo punto è possibile eliminare il pod. L'applicazione Pod non esisterà più, ma il volume rimarrà.
kubectl delete pod task-pv-pod
Per ulteriori informazioni sull'interazione delle classi di storage con i PersistentVolumeClaim
parametri e per il controllo del provisioning dei volumi da parte di Astra Trident, consulta"Kubernetes e Trident Objects".