Ir al contenido principal

Creación y Gestión de Clases de Almacenamiento (Storage Classes) en Kubernetes. Bloque 4. Tema 4.3 del CKA.

 En Kubernetes, además de poder crear volúmenes persistentes de manera estática, también existe la capacidad de aprovisionar dinámicamente volúmenes mediante el uso de StorageClass. Estas clases permiten definir perfiles de almacenamiento, proporcionando un mecanismo flexible y escalable para satisfacer las necesidades específicas de las cargas de trabajo.

¿Qué es una StorageClass?

Una StorageClass en Kubernetes es un recurso que describe cómo debe gestionarse el almacenamiento dinámico en el clúster. Define un conjunto de parámetros que determinan el tipo de almacenamiento, sus características, el aprovisionador que se utilizará y cómo se manejarán los volúmenes cuando ya no sean necesarios. Esto facilita la creación automatizada de volúmenes sin necesidad de intervención manual del administrador.

Ejemplo de StorageClass

A continuación, presentamos un manifiesto YAML para crear una StorageClass en Kubernetes que aprovisiona volúmenes de almacenamiento utilizando Amazon Elastic Block Store (EBS) con el tipo de disco gp3:


apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cka-sc-aws-gp3 provisioner: kubernetes.io/aws-ebs parameters: type: gp3 reclaimPolicy: Retain volumeBindingMode: Immediate

Explicación del ejemplo:

  • provisioner: Este campo especifica el controlador o proveedor de almacenamiento que se utilizará. En este caso, se utiliza kubernetes.io/aws-ebs, que es el provisioner para Amazon EBS.
  • parameters: Define los parámetros específicos del proveedor. En este ejemplo, se especifica que se utilizará el tipo de almacenamiento gp3.
  • reclaimPolicy: Define qué hacer con el volumen una vez que el PVC (PersistentVolumeClaim) ha sido liberado. En este caso, se retiene (Retain) para evitar eliminar los datos accidentalmente.
  • volumeBindingMode: En este caso, se establece en Immediate, lo cual indica que el volumen será aprovisionado inmediatamente después de la creación del PVC.

Modos de Acceso para Volúmenes

Kubernetes admite varios modos de acceso que determinan cómo pueden montarse los volúmenes:

  1. ReadWriteOnce (RWO): El volumen solo puede ser montado por un pod en un único nodo. Este es el modo de acceso más común y suele utilizarse para discos de almacenamiento en bloque.
  2. ReadWriteMany (RWX): Permite que el volumen sea montado por múltiples pods a la vez en diferentes nodos. Es ideal para sistemas de archivos compartidos como NFS.
  3. ReadOnlyMany (ROX): El volumen puede ser montado por múltiples pods en modo solo lectura. Es útil para casos en los que varias aplicaciones requieren acceso a datos inmutables.

Políticas de Recuperación de un Volumen (Reclaim Policies)

La política de recuperación de un volumen especifica lo que sucede con los datos cuando el volumen ya no es necesario:

  • Retain: El volumen persiste después de ser liberado. Esta política es ideal para mantener los datos de forma manual para su posterior análisis o reutilización.
  • Delete: El volumen y sus datos son eliminados automáticamente cuando ya no se necesita. Esta es una opción común para almacenamiento temporal o datos de pruebas.
  • Recycle: El volumen se limpia y puede ser reutilizado. Sin embargo, esta función ha quedado obsoleta en las versiones más recientes de Kubernetes.

Ejemplo Completo: Creación de una StorageClass y Aprovisionamiento de un Volumen

A continuación, crearemos una StorageClass que utiliza volúmenes de red compartidos (NFS) y aprovisionaremos un PersistentVolumeClaim (PVC) para una aplicación que requiere acceso compartido a un directorio de red.

StorageClass YAML para NFS:

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-client provisioner: cluster.local/nfs-subdir-external-provisioner parameters: archiveOnDelete: "false" reclaimPolicy: Delete volumeBindingMode: Immediate

PersistentVolumeClaim YAML que usa la StorageClass NFS:

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: nfs-client

En este ejemplo:

  • La StorageClass se define con un provisioner específico para un volumen NFS (nfs-subdir-external-provisioner), con una política de eliminación (Delete) que borra los datos cuando el PVC ya no es necesario.
  • La política de volumeBindingMode se establece en Immediate, lo que significa que el volumen se aprovisiona tan pronto como se crea el PVC.
  • El PersistentVolumeClaim (nfs-pvc) se declara con el modo de acceso ReadWriteMany, lo que permite el acceso concurrente desde múltiples pods.

Conclusión

El uso de StorageClass en Kubernetes permite a los administradores de sistemas y desarrolladores gestionar el almacenamiento de manera más eficiente y escalable. Proporciona la flexibilidad para aprovisionar automáticamente volúmenes basados en las necesidades de las aplicaciones, simplificando la gestión del almacenamiento. Además, los diferentes modos de acceso y políticas de recuperación permiten ajustar la configuración según el caso de uso y los requisitos de persistencia de datos.

Comentarios

Entradas populares de este blog

Ubicación, Estructura y Manejo básico de certificados.

                                                     Kubernetes utiliza certificados TLS (X.509) para cifrar la comunicación entre sus componentes y autenticar identidades (usuarios, nodos, API Server, etc.). Estos certificados son generados y gestionados automáticamente cuando se instala un clúster con kubeadm . En este artículo, veremos dónde se almacenan los certificados , cuál es su estructura y cómo inspeccionarlos fácilmente, una habilidad muy útil para el examen CKA. Cuando creas un clúster con kubeadm , los certificados se generan por defecto en el directorio: /etc/ kubernetes /pki/ Puedes ver su contenido con: ls -l /etc/kubernetes/pki/ También hay certificados en: /etc/kubernetes/ (ahí verás admin.conf , kubelet.conf , etc., que incluyen certificados embebidos, como veremos más abajo). 🧱 Estructura de los ce...

🔁 Renovación y Rotación de Certificados en Kubernetes (kubeadm certs)

  🎯 Introducción En un clúster de Kubernetes, la mayoría de los certificados generados por kubeadm tienen una validez de un año . Para evitar interrupciones en los componentes críticos, es fundamental revisar periódicamente su vigencia y saber cómo renovarlos correctamente. En este artículo aprenderás: Cómo comprobar la expiración de los certificados Cómo renovarlos automáticamente con kubeadm Cómo simular una renovación manual con openssl Cómo aplicar los cambios reiniciando los componentes afectados 🕵️‍♂️ Comprobación del estado de los certificados Kubernetes ofrece una herramienta integrada para revisar los certificados del clúster: kubeadm certs check-expiration Este comando muestra información clave: Fecha de expiración Tipo de certificado Ruta en el sistema 📌 Salida de ejemplo: CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY apiserver Jan 06 , 2026 19 :56 UTC 330d ...

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...