Ir al contenido principal

Primitivo de Persistent Volume Claim (PVC) en Kubernetes.

 

En este artículo, profundizaremos en el uso de los Persistent Volume Claims (PVC) en Kubernetes y veremos cómo se configuran mediante ejemplos prácticos. A través de estos ejemplos, aprenderás a manejar volúmenes de almacenamiento para cargas de trabajo persistentes, tanto de forma estática como dinámica.

¿Qué es un Persistent Volume Claim (PVC)?

Un PVC (Persistent Volume Claim) es un recurso que define las características del almacenamiento que una aplicación necesita, como el tamaño, el modo de acceso y, opcionalmente, una clase de almacenamiento específica. Kubernetes se encarga de asignar automáticamente un PVC con un Persistent Volume (PV) que cumpla con esos requisitos.

Ejemplo Básico de PVC

Un manifiesto básico para crear un PVC que solicita 10Mi de almacenamiento con acceso exclusivo (ReadWriteOnce):

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cka-simple-pvc spec: storageClassName: "" # Configura como vacío para evitar usar StorageClass por defecto accessModes: - ReadWriteOnce resources: requests: storage: 10Mi

Ejemplo Práctico: PVC con un PV Estático

Para ilustrar cómo funciona un PVC, vamos a vincularlo con un Persistent Volume (PV) predefinido. A continuación, crearemos un PV utilizando el manifiesto:

apiVersion: v1 kind: PersistentVolume metadata: name: cka-pv-hostpath-walkthru spec: capacity: storage: 10Mi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: /pv/data

Creación del PV

$ kubectl apply -f cka-pv-hostpath-walkthru.yaml

Verificación del PV

$ kubectl get pv

Creación del PVC

Aplicamos el manifiesto cka-simple-pvc.yaml:

$ kubectl apply -f cka-simple-pvc.yaml

Verificación del PVC y su Asociación con el PV

$ kubectl get pvc

En este punto, el PVC se vincula automáticamente con el PV disponible, reclamando el almacenamiento especificado.

Uso del PVC en un Deployment

Ahora que tenemos el PVC listo, vamos a usarlo en un Deployment. Este manifiesto crea dos réplicas de un contenedor NGINX que comparten el mismo volumen:

apiVersion: apps/v1 kind: Deployment metadata: name: cka-workload-pvc spec: replicas: 2 selector: matchLabels: workload: nginx template: metadata: labels: workload: nginx spec: volumes: - name: my-volume persistentVolumeClaim: claimName: cka-simple-pvc containers: - name: nginx image: nginx volumeMounts: - mountPath: /data name: my-volume

Creación del Deployment

$ kubectl apply -f cka-workload-pvc.yaml

Verificación del Deployment y los Pods


$ kubectl get deploy $ kubectl get pods -o wide

Verificando el Almacenamiento Compartido entre Réplicas

Accedemos a uno de los pods para crear un archivo en el volumen compartido:


$ kubectl exec -it cka-workload-pvc-xxx -- /bin/bash # cd /data # touch pod-one-created-token-file.txt

Verificamos que el archivo es accesible desde la segunda réplica:


$ kubectl exec -it cka-workload-pvc-yyy -- /bin/bash # cd /data # ls pod-one-created-token-file.txt

Walkthrough con Aprovisionamiento Dinámico

En lugar de utilizar volúmenes predefinidos, Kubernetes permite el aprovisionamiento dinámico de volúmenes utilizando clases de almacenamiento (Storage Classes). Vamos a configurar esto con un ejemplo práctico.

Instalación del Provisioner

$ kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml

Creación de un PVC Dinámico

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cka-simple-pvc-ondemand spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi

Creación del PVC Dinámico

$ kubectl apply -f cka-simple-pvc-ondemand.yaml

Verificación del PVC y PV Dinámico


$ kubectl get pvc $ kubectl get pv

Conclusión

Los Persistent Volume Claims (PVC) son una forma efectiva de gestionar el acceso al almacenamiento persistente en Kubernetes. Ya sea que se utilicen PVs estáticos o que se configure un aprovisionamiento dinámico con Storage Classes, los PVCs te permiten definir las necesidades de almacenamiento de tu aplicación de manera clara y reutilizable. Este artículo ha abordado cómo crear, enlazar y utilizar los PVCs, proporcionando una base sólida para la gestión de almacenamiento en Kubernetes.

Comentarios

Entradas populares de este blog

Autenticación y Autorización (Kubernetes).

La autenticación en Kubernetes es un aspecto crítico para la seguridad y control de acceso dentro de un clúster. Kubernetes proporciona varios mecanismos de autenticación para usuarios y cuentas de servicio, que deben pasar a través del API Server para realizar cualquier operación. En este artículo, revisaremos cómo funciona la autenticación y cómo puedes usar herramientas como kubectl y curl para interactuar de manera segura con el clúster. En primer lugar, ¿Qué es la autenticación y la autorización? •     Autenticación:  Es el proceso de verificar quién es un usuario. Responde a la pregunta "¿Quién eres?". •     Autorización: El proceso de determinar qué acciones puede realizar un usuario autenticado. Responde a la pregunta "¿Qué puedes hacer?". Primer paso: Autenticación. La autenticación en Kubernetes es el proceso mediante el cual el sistema verifica la identidad de los usuarios y cuentas de servicio que intentan acceder al clúster.  ...

Tip 1. Exámen CKA. Economiza y optimiza tu tiempo; Usa --help con el paginador Less en la ayuda.

📘 Domina los comandos --help y el uso de less en el examen CKA Durante el examen CKA (Certified Kubernetes Administrator) , uno de los recursos más potentes y completamente permitidos es el uso del --help en los comandos de Kubernetes. Además, puedes combinarlo con el paginador less para buscar y navegar fácilmente entre opciones. ✅ ¿Está permitido usar --help ? Sí, está 100% permitido . Puedes usar el --help de cualquier comando disponible en el entorno del examen: kubectl --help kubeadm init --help kubelet --help kubectl explain pod.spec.containers Estos comandos muestran la ayuda y las opciones disponibles directamente desde el sistema, sin necesidad de ir a la documentación. 🔍 ¿Cómo usar less para buscar rápidamente? Cuando la salida del comando es larga, puedes usar | less para verla de forma paginada y navegar más cómodamente. kubeadm init --help | less Una vez dentro de less , puedes buscar cualquier texto escribiendo /texto . Por ejemplo: /pod-networ...

TLS Bootstrapping en Kubernetes: Qué es, cómo funciona y por qué importa en el examen CKA

                                                       Uno de los conceptos que a menudo pasan desapercibidos en la administración de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este artículo entenderás qué es, cómo funciona, qué lo diferencia del kubeadm join tradicional y cómo puede aparecer en el examen. ¿Qué es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene automáticamente un certificado TLS firmado por el clúster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al clúster sin necesidad de copiar manualmente los certificados. ¿Por qué es necesario? Cuando añades un nuevo nodo worker, su kubelet necesita autentic...