💾 Storage
El disco de un contenedor es temporal: cuando el pod se recrea, todo lo que había en él se pierde. Para guardar datos que necesitan sobrevivir (bases de datos, uploads, archivos), Kubernetes usa discos persistentes.
| Término | Qué es | Analogía |
|---|---|---|
| StorageClass | El tipo de disco disponible (por ejemplo, SSD) | El catálogo de discos |
| PVC (PersistentVolumeClaim) | La solicitud de un disco, con tamaño | El pedido de compra |
| PV (PersistentVolume) | El disco en sí, creado automáticamente a partir de la solicitud | El disco entregado |
En la práctica, usted solo crea el PVC. El clúster crea el disco solo.
El PVC se crea con kubectl. El disco creado también puede consultarse en el Panel Nuvion (paso 6).
🚀 Antes de comenzar
- Tener el acceso al clúster configurado (vea Acceso al Clúster).
🚀 1. Ver los tipos de disco disponibles
kubectl get storageclass
Anote el nombre de la clase marcada con (default). Se usa cuando usted no
elige una.
🚀 2. Solicitar un disco (crear el PVC)
Cree el archivo pvc-dados.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-dados
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
kubectl apply -f pvc-dados.yaml
Si la lista del paso 1 no tiene ninguna clase (default), agregue la línea
storageClassName: NOMBRE-DE-LA-CLASE dentro de spec.
ReadWriteOnce significa que el disco puede ser usado por un node a la vez.
🚀 3. Verificar la solicitud
kubectl get pvc pvc-dados
El STATUS debe ser Bound (disco entregado). En algunos clústeres el estado
queda Pending hasta que un pod use el disco, y eso es normal. Siga al paso 4.
🚀 4. Usar el disco en un pod
Cree el archivo pod-storage.yaml. Cada vez que el pod inicia, anota la fecha
y la hora en el archivo /dados/historico.txt:
apiVersion: v1
kind: Pod
metadata:
name: pod-storage
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "date >> /dados/historico.txt; sleep 3600"]
volumeMounts:
- name: dados
mountPath: /dados
volumes:
- name: dados
persistentVolumeClaim:
claimName: pvc-dados
kubectl apply -f pod-storage.yaml
kubectl get pvc pvc-dados
kubectl exec pod-storage -- cat /dados/historico.txt
El PVC pasa a Bound y el archivo muestra una línea con la fecha.
🚀 5. Comprobar que los datos sobreviven
Elimine el pod y créelo de nuevo:
kubectl delete pod pod-storage
kubectl apply -f pod-storage.yaml
kubectl exec pod-storage -- cat /dados/historico.txt
Ahora el archivo muestra dos líneas: la de antes y la nueva. El pod fue recreado, pero el disco mantuvo los datos.
🚀 6. Ver el disco creado
- 🖥️ Panel Nuvion
- ⌨️ kubectl (CLI)
Acceda a Computar > Volúmenes y busque un volumen nuevo de 1 GiB, creado automáticamente por el clúster.

kubectl get pv
La columna CLAIM muestra default/pvc-dados.
✅ Cómo saber si funcionó
El archivo /dados/historico.txt acumula una línea nueva cada vez que el pod se recrea.
Al eliminar el PVC, el disco y todos los datos se borran (en la configuración estándar). Eliminar solo el pod no borra nada.
❗ Problemas comunes
| Síntoma | Causa | Solución |
|---|---|---|
PVC Pending y el pod también | Ninguna StorageClass predeterminada | Agregue storageClassName en el PVC (paso 2) |
Pod detenido en ContainerCreating | El disco aún se está preparando | Espere y vea la sección Events en kubectl describe pod pod-storage |
Error Multi-Attach | Disco ReadWriteOnce en uso por un pod en otro node | Use solo un pod con ese disco, o garantice que queden en el mismo node |
| Solicitud de tamaño mayor al permitido | Límite de volumen o cuota | Solicite un tamaño menor o hable con soporte |
🧹 Limpieza
kubectl delete pod pod-storage
kubectl delete pvc pvc-dados
El segundo comando borra el disco y los datos.
➡️ Próximo paso: Networking
🧠 ¿Dudas?
¡Hable con nuestro equipo de soporte técnico de SaveinCloud!