Provisionar um volume
Crie um Persistentvolume (PV) e um PersistentVolumeClaim (PVC) que use o Kubernetes StorageClass configurado para solicitar acesso ao PV. Em seguida, pode montar o PV num pod.
Visão geral
A "Persistentvolume" (PV) é um recurso de armazenamento físico provisionado pelo administrador de cluster em um cluster do Kubernetes. O "PersistentVolumeClaim" (PVC) é um pedido de acesso ao Persistentvolume no cluster.
O PVC pode ser configurado para solicitar o armazenamento de um determinado tamanho ou modo de acesso. Usando o StorageClass associado, o administrador do cluster pode controlar mais do que o Persistentvolume e o modo de acesso, como desempenho ou nível de serviço.
Depois de criar o PV e o PVC, você pode montar o volume em um pod.
Manifestos de amostra
Persistentvolume Sample MANIFEST
Este manifesto de exemplo mostra um PV básico de 10Gi que está associado ao 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"
PersistentVolumeClaim amostra manifestos
Estes exemplos mostram opções básicas de configuração de PVC.
Este exemplo mostra um PVC básico com acesso RWO associado a um StorageClass basic-csi chamado .
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: basic-csi
Este exemplo mostra um PVC básico para NVMe/TCP com acesso RWO associado a um StorageClass protection-gold chamado .
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-san-nvme
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 300Mi
storageClassName: protection-gold
Amostras de manifesto POD
Estes exemplos mostram configurações básicas para anexar o PVC a um 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
Crie o PV e o PVC
-
Crie o PV.
kubectl create -f pv.yaml
-
Verifique o estado do PV.
kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv-storage 4Gi RWO Retain Available 7s
-
Crie o PVC.
kubectl create -f pvc.yaml
-
Verifique o estado do PVC.
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-storage Bound pv-name 2Gi RWO 5m
-
Monte o volume num pod.
kubectl create -f pv-pod.yaml
Pode monitorizar o progresso utilizando `kubectl get pod --watch`o . -
Verifique se o volume está montado no
/my/mount/path.kubectl exec -it task-pv-pod -- df -h /my/mount/path
-
Agora você pode excluir o Pod. O aplicativo Pod não existirá mais, mas o volume permanecerá.
kubectl delete pod pv-pod
"Objetos Kubernetes e Trident"Consulte para obter detalhes sobre como as classes de armazenamento interagem com os PersistentVolumeClaim parâmetros e para controlar como o Trident provisiona volumes.