Todo manifesto de um objeto PersistentVolume deve definir sua capacidade de armazenamento com o atributo spec.capacity
e o modo de acesso com spec.accessModes
. A tabela abaixo mostra uma visão de alto nível dos modos de acesso(Access Modes) disponíveis.
type | Description |
---|---|
ReadWriteOnce | the volume can be mounted as read-write by a single node. ReadWriteOnce access mode still can allow multiple pods to access the volume when the pods are running on the same node. |
ReadOnlyMany | the volume can be mounted as read-only by many nodes. |
ReadWriteMany | the volume can be mounted as read-write by many nodes. |
ReadWriteOncePod | the volume can be mounted as read-write by a single Pod. Use ReadWriteOncePod access mode if you want to ensure that only one pod across whole cluster can read that PVC or write to it. This is only supported for CSI volumes and Kubernetes version 1.22+. |
O manifesto abaixo cria um PersistentVolume chamado db-pv
com uma capacidade de 1Gi e com acesso de leitura e escrita para um único node(RWO). Neste exemplo o PersistentVolume é do tipo hostPath e monta o diretório /data/db
no sistema de arquivos do Node. O hostPath usa o sistema de arquivos do Node para simular um dispositivo de armazenamento em rede e deve ser utilizado apenas em desenvolvimento. Em ambientes de produção você não usará hostPath, ao invés disso o administrador do cluster provisionará recursos como o amazon EBS utilizando StorageClasses para permitir o dynamic provisioning.
apiVersion: v1
kind: PersistentVolume
metadata:
name: db-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/db
Ao inspecionar o PersistentVolume criado você encontrará a maioria das informações fornecidas no manifesto. A Reclaim Policy determina o que deve acontecer com o PersistentVolume depois de ter sido liberado do seu claim. Por padrão, o objeto é retido e os dados não são perdidos.
$ kubectl create -f db-pv.yaml
persistentvolume/db-pv created
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
db-pv 1Gi RWO Retain Available 3s
ReclaimPolicy
Phase/Status
Available – recurso disponível, não esta vinculado a nenhum PVC
a free resource that is not yet bound to a claim
Bound – o volume esta vinculado a um PVC
the volume is bound to a claim
Released – o PVC foi deletado mas o recurso ainda não foi reivindicado pelo cluster
the claim has been deleted, but the resource is not yet reclaimed by the cluster
Failed – o volume falhou em sua ?recuperação? automática
the volume has failed its automatic reclamation
Referencia de campos do PersistentVolume
Documentação PersistentVolume
Change the Reclaim Policy of a PersistentVolume
Documentação Why change reclaim policy of a PersistentVolume