Menú

Esta página se ha traducido automáticamente. Algunos contenidos pueden no ser perfectos.

Comparte tu opinión

Reclamaciones de volumen persistente de Kubernetes explicadas

Tabla de contenido

Compartir esta página

Yifat Perry
Yifat Perry

¿Qué son los volúmenes persistentes de Kubernetes y las persistent volume claims?

Un volumen persistente de Kubernetes (PV)  es un objeto que permite a los pods acceder a almacenamiento persistente en un dispositivo de almacenamiento, definido a través de un Kubernetes StorageClass. A diferencia de los volúmenes regulares, que son transitorios por naturaleza, los PV son persistentes, soportando casos de uso de aplicaciones con estado. Un PV es un objeto de recurso en un clúster de Kubernetes que sigue existiendo incluso después de que los pods que lo usan hayan sido destruidos.

Los PV deben solicitarse a través de reclamaciones de volumen persistente (PVC), que son solicitudes de almacenamiento. Un PVC es básicamente una solicitud para montar un PV que cumpla ciertos requisitos en un pod. Los PVC no especifican un PV concreto, sino que especifican qué StorageClass necesita el pod. Los administradores pueden definir StorageClasses que indican propiedades de los dispositivos de almacenamiento, como el rendimiento, los niveles de servicio y las políticas de back-end.

Una de las principales ventajas del patrón PVC en Kubernetes es que permite a los desarrolladores solicitar recursos de almacenamiento de forma dinámica, sin ser conscientes de la implementación de los dispositivos de almacenamiento subyacentes.

Contenido relacionado: lee nuestra guía sobre Kubernetes StorageClass

En este artículo:

Persistent Volume Claims: aprovisionamiento estático vs. dinámico

Para vincular un pod a un PV, el pod debe contener un volumen de montaje y un PVC. Estas declaraciones permiten a los usuarios montar PVs en pods sin conocer los detalles del almacenamiento subyacente.

Hay dos opciones para montar los PV en un pod:

  • La configuración estática implica que los administradores creen manualmente PVs y definan un StorageClass que coincida con los criterios de estos PVs. Cuando un pod usa un PVC que especifica el StorageClass, obtiene acceso a uno de estos PVs estáticos.
  • La configuración dinámica ocurre cuando no hay ningún PV estático que coincida con el PVC. En este caso, el clúster de Kubernetes aprovisiona un nuevo PV basado en las definiciones de StorageClass.

Contenido relacionado: lee nuestra guía sobre almacenamiento compartido de Kubernetes

Creando una reclamación de volumen persistente y vinculándola a un volumen persistente

Este tutorial demuestra cómo funcionan los PV y los PVC. Es un resumen del tutorial completo tutorial  disponible en la documentación de Kubernetes.

1. Configuración de un nodo
Configura un clúster de Kubernetes con un solo nodo y asegúrate de que la línea de comandos kubectl tiene conexión con el plano de control. Crea un directorio en el nodo así:

sudo mkdir /mnt/data

Crea un archivo index.html en el directorio.

2. Creación de un volumen persistente
crea un archivo YAML como el siguiente para definir un PV.

k8s pvc 1

Ejecuta este comando para crear el PV en tu nodo:

kubectl apply -f https://k8s.io/examples/pods/storage/pv-volume.yaml

3. Creando una reclamación de volumen persistente y vinculándola a un volumen persistente
Crea un PVC que requiera un PV, sujeto a las siguientes condiciones para que coincida con el PV que creaste antes:

  • 3 GB o más de capacidad de almacenamiento
  • Habilitar el acceso de lectura/escritura
k8s pvc 2

Ejecuta este comando para aplicar el PVC:

kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml

Cuando creas una reclamación de volumen persistente, el plano de control de Kubernetes encuentra el PV correcto. Si lo encuentra, vincula el PVC al PV.

Verifica el estado de la PV creada previamente ejecutando:

kubectl get pv task-pv-volume

Si la vinculación se realiza correctamente, la salida debería verse así:

k8s pvc 3

4. Creación de un pod y montaje de la reclamación de volumen persistente
Por último, crea un pod que use el PVC. Ejecuta el pod con la imagen NGINX, especificando el PVC que creaste antes en la sección correspondiente de la especificación del pod:

k8s pvc 4

Usa un comando bash para instalar curl en tu pod y ejecuta este comando:

curl http://localhost/

La salida debería mostrar el contenido del archivo index.html creado en el paso 1. Debería mostrar que el nuevo pod puede acceder a los datos en el PV a través del PVC.

Errores de PVC de Kubernetes: causas comunes y resolución [C]

El PVC de Kubernetes puede ser complejo de usar, lo que da lugar a errores que pueden ser difíciles de diagnosticar y solucionar. Los errores de PVC suelen estar relacionados con tres grandes categorías: problemas con la creación de PV, problemas con el aprovisionamiento de PV y cambios en las especificaciones de PV o PVC.

Los errores más comunes relacionados con los PVC son FailedAttachVolume, FailedMount y CrashLoopBackOff.

FailedAttachVolume y FailedMount errores

Estos dos errores indican que un pod no pudo montar un PV. La diferencia es que FailedAttachVolume ocurre cuando un volumen no puede separarse de un nodo anterior, y FailedMount ocurre cuando un volumen no puede montarse en la ruta requerida.

Hay numerosas causas posibles de estos dos errores, incluyendo fallo en el nuevo nodo, demasiados discos conectados al nuevo nodo, un error de partición de red y fallo de dispositivos de almacenamiento en el nodo anterior.

Diagnosticar el problema

Para diagnosticar la causa de problemas como FailedAttachVolume y FailedMount, ejecuta el comando describe pod y busca en la sección Events el mensaje que indica un error. El mensaje también debería proporcionar información sobre la causa.

Resolver el problema

Kubernetes no puede solucionar los errores FailedAttachVolume y FailedMount automáticamente, así que tendrás que manejar el problema manualmente:

  • Si la causa del error es Failure to Detach- usa la interfaz del dispositivo de almacenamiento para separar el volumen manualmente.
  • Si el error es Failure to Attach or Mount- revisa si hay un problema de particionado de red o una ruta de red incorrecta. Si este no es el problema, intenta que Kubernetes programe el pod en otro nodo o investiga y soluciona el problema en el nuevo nodo.

CrashLoopBackOff errores resultantes de la PersistentVolumeClaim

CrashLoopBackOff indica que un pod se bloqueó, se reinició y se volvió a bloquear repetidamente. En algunos casos, este error ocurre como resultado de PersistentVolumeClaims corruptos.

Diagnosticar el problema

Para identificar si un error de CrashLoopBackOff se debe a un PVC, revisa los registros de la instancia anterior del contenedor que montó el PV, revisa los registros de despliegue y, si es necesario, ejecuta un shell en el contenedor para identificar por qué se está bloqueando.

Resolver el problema

Si CrashLoopBackOff es el resultado de un problema con un PVC, prueba los siguientes pasos:

  1. Escala el despliegue a 0 instancias para habilitar la depuración.
  2. Obtén el identificador del PVC fallido usando esta consulta:
    kubectl get deployment -o jsonpath="{.spec.template.spec.volumes[*].persistentVolumeClaim.claimName}" failed-deployment 
    
  3. Crea un nuevo pod para depuración y ejecuta un shell usando este comando:
    exec -it volume-debugger sh
    
  4. Identifica el volumen que está montado actualmente en el directorio /data y soluciona el problema que está causando que el pod se caiga.
  5. Sal del intérprete de comandos, elimina el pod de depuración y escala la implementación de nuevo al número de réplicas requerido.

Optimización del almacenamiento de Kubernetes con Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP, la solución líder de gestión de almacenamiento de clase empresarial, ofrece servicios de gestión de almacenamiento seguros y probados en AWS, Azure y Google Cloud. La capacidad de Cloud Volumes ONTAP puede escalar hasta los petabytes y admite varios casos de uso, como servicios de archivos, bases de datos, DevOps o cualquier otra carga de trabajo empresarial, con un sólido conjunto de funcionalidades que incluyen alta disponibilidad, protección de datos, eficiencias de almacenamiento, integración con Kubernetes y más.

En concreto, Cloud Volumes ONTAP es compatible con el aprovisionamiento y la gestión de Kubernetes Persistent Volume requisitos de las cargas de trabajo en contenedores.

Conoce más sobre cómo Cloud Volumes ONTAP ayuda a enfrentar los retos de las aplicaciones en contenedores en estos Kubernetes Workloads with Cloud Volumes ONTAP Case Studies.

Drift chat loading