Appearance
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: 5GiEl 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-appEl 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.