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

Documentação Kubernetes

Referencia de campos do PersistentVolume

Persistent Volumes

Documentação PersistentVolume

Change the Reclaim Policy of a PersistentVolume

Documentação Why change reclaim policy of a PersistentVolume

Persistent Volumes

Persistent Volumes