En Kubernetes, las Clases de Almacenamiento (Storage Classes) proporcionan una forma de describir los "tipos" de almacenamiento que un clúster puede ofrecer. Esto permite a los administradores definir diferentes niveles de almacenamiento, como SSDs rápidos o discos duros más lentos, y a los usuarios solicitar el tipo de almacenamiento que mejor se adapte a sus necesidades.

Conceptos Clave

  1. ¿Qué es una Clase de Almacenamiento?

Una Clase de Almacenamiento es un recurso de Kubernetes que define un conjunto de parámetros de almacenamiento. Estos parámetros pueden incluir el tipo de almacenamiento, la política de aprovisionamiento y otros detalles específicos del proveedor de almacenamiento.

  1. Parámetros de una Clase de Almacenamiento

Los parámetros de una Clase de Almacenamiento pueden variar según el proveedor de almacenamiento, pero algunos parámetros comunes incluyen:

  • provisioner: El nombre del plugin de almacenamiento que se utilizará para aprovisionar los volúmenes.
  • parameters: Un conjunto de pares clave-valor que especifican detalles adicionales sobre el almacenamiento.
  • reclaimPolicy: La política de recuperación que se aplicará a los volúmenes persistentes creados con esta clase de almacenamiento (por ejemplo, Retain o Delete).

  1. Política de Recuperación (Reclaim Policy)

La política de recuperación define lo que sucede con un volumen persistente cuando se elimina su reclamo. Las opciones comunes son:

  • Retain: El volumen persistente se conserva después de que se elimina el reclamo.
  • Delete: El volumen persistente se elimina junto con el reclamo.

Ejemplo de una Clase de Almacenamiento

A continuación, se muestra un ejemplo de una Clase de Almacenamiento para un proveedor de almacenamiento ficticio:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-storage
provisioner: example.com/fast
parameters:
  type: pd-ssd
  replication-type: none
reclaimPolicy: Delete

Explicación del Ejemplo

  • apiVersion: La versión de la API de Kubernetes.
  • kind: El tipo de recurso, en este caso StorageClass.
  • metadata: Información sobre el recurso, como su nombre (fast-storage).
  • provisioner: El plugin de almacenamiento que se utilizará (example.com/fast).
  • parameters: Parámetros específicos del proveedor de almacenamiento (type: pd-ssd y replication-type: none).
  • reclaimPolicy: La política de recuperación (Delete).

Creación y Uso de Clases de Almacenamiento

  1. Crear una Clase de Almacenamiento

Para crear una Clase de Almacenamiento, puedes aplicar un archivo YAML como el anterior utilizando kubectl:

kubectl apply -f storage-class.yaml

  1. Usar una Clase de Almacenamiento en una Reclamación de Volumen Persistente (PVC)

Una vez que se ha creado una Clase de Almacenamiento, puedes usarla en una Reclamación de Volumen Persistente (PVC) especificando el nombre de la clase en el campo storageClassName:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: fast-storage

Explicación del Ejemplo

  • apiVersion: La versión de la API de Kubernetes.
  • kind: El tipo de recurso, en este caso PersistentVolumeClaim.
  • metadata: Información sobre el recurso, como su nombre (my-pvc).
  • spec: La especificación del reclamo.
    • accessModes: Los modos de acceso al volumen (ReadWriteOnce).
    • resources: Los recursos solicitados, en este caso, 10 GiB de almacenamiento.
    • storageClassName: El nombre de la Clase de Almacenamiento a utilizar (fast-storage).

Ejercicio Práctico

Ejercicio

  1. Crea una Clase de Almacenamiento llamada slow-storage que utilice un proveedor de almacenamiento ficticio example.com/slow y tenga una política de recuperación Retain.
  2. Crea una Reclamación de Volumen Persistente que utilice la Clase de Almacenamiento slow-storage y solicite 5 GiB de almacenamiento.

Solución

Clase de Almacenamiento

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow-storage
provisioner: example.com/slow
parameters:
  type: pd-standard
  replication-type: none
reclaimPolicy: Retain

Reclamación de Volumen Persistente

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-slow-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: slow-storage

Aplicar los Archivos

kubectl apply -f slow-storage-class.yaml
kubectl apply -f my-slow-pvc.yaml

Resumen

En esta sección, hemos aprendido sobre las Clases de Almacenamiento en Kubernetes, cómo definirlas y utilizarlas en Reclamaciones de Volumen Persistente. Las Clases de Almacenamiento permiten a los administradores ofrecer diferentes tipos de almacenamiento y a los usuarios solicitar el tipo de almacenamiento que mejor se adapte a sus necesidades. Hemos visto ejemplos prácticos y realizado un ejercicio para reforzar los conceptos aprendidos. En la siguiente sección, exploraremos los StatefulSets y cómo gestionar aplicaciones con estado en Kubernetes.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados