Skip to content

Almacenamiento ​

El sistema de archivos local de un contenedor es efímero: los datos pueden desaparecer cuando se reemplaza el Pod. Para persistir información, Kubernetes separa la solicitud de almacenamiento de la implementación física mediante volúmenes persistentes.

PersistentVolumeClaim ​

Una aplicación solicita almacenamiento mediante un PersistentVolumeClaim (PVC):

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: datos-app
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

El clúster debe disponer de una StorageClass adecuada o de un PersistentVolume compatible. Si existe aprovisionamiento dinámico, Kubernetes puede crear el volumen solicitado automáticamente.

Monta el PVC en el Pod:

yaml
spec:
  containers:
    - name: app
      image: mi-usuario/mi-app:1.0.0
      volumeMounts:
        - name: datos
          mountPath: /var/lib/app
  volumes:
    - name: datos
      persistentVolumeClaim:
        claimName: datos-app

El fragmento corresponde a spec.template.spec de un Pod o Deployment. El acceso disponible (ReadWriteOnce, ReadOnlyMany, ReadWriteMany, entre otros) depende del driver y del proveedor. ReadWriteOnce no significa necesariamente que el volumen solo pueda usarse desde un único Pod en cualquier situación; consulta las garantías del CSI y del almacenamiento utilizado.

StatefulSet ​

Para workloads con identidad y almacenamiento por réplica, un StatefulSet puede declarar volumeClaimTemplates. Kubernetes crea un PVC por Pod, pero no sustituye las tareas de replicación, copias de seguridad y recuperación que requiera la aplicación.

Antes de eliminar un PVC o un volumen, revisa su política de retención y el comportamiento de la StorageClass: una eliminación puede provocar pérdida de datos.