Saltar al contenido principal

💾 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érminoQué esAnalogía
StorageClassEl tipo de disco disponible (por ejemplo, SSD)El catálogo de discos
PVC (PersistentVolumeClaim)La solicitud de un disco, con tamañoEl pedido de compra
PV (PersistentVolume)El disco en sí, creado automáticamente a partir de la solicitudEl disco entregado

En la práctica, usted solo crea el PVC. El clúster crea el disco solo.

info

El PVC se crea con kubectl. El disco creado también puede consultarse en el Panel Nuvion (paso 6).


🚀 Antes de comenzar​

🚀 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
tip

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​

Acceda a Computar > Volúmenes y busque un volumen nuevo de 1 GiB, creado automáticamente por el clúster.

Volumen creado por el PVC en el panel

✅ Cómo saber si funcionó​

El archivo /dados/historico.txt acumula una línea nueva cada vez que el pod se recrea.

aviso

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íntomaCausaSolución
PVC Pending y el pod tambiénNinguna StorageClass predeterminadaAgregue storageClassName en el PVC (paso 2)
Pod detenido en ContainerCreatingEl disco aún se está preparandoEspere y vea la sección Events en kubectl describe pod pod-storage
Error Multi-AttachDisco ReadWriteOnce en uso por un pod en otro nodeUse solo un pod con ese disco, o garantice que queden en el mismo node
Solicitud de tamaño mayor al permitidoLímite de volumen o cuotaSolicite 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!