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
- ¿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.
- 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
oDelete
).
- 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
yreplication-type: none
). - reclaimPolicy: La política de recuperación (
Delete
).
Creación y Uso de Clases de Almacenamiento
- Crear una Clase de Almacenamiento
Para crear una Clase de Almacenamiento, puedes aplicar un archivo YAML como el anterior utilizando kubectl
:
- 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
).
- accessModes: Los modos de acceso al volumen (
Ejercicio Práctico
Ejercicio
- Crea una Clase de Almacenamiento llamada
slow-storage
que utilice un proveedor de almacenamiento ficticioexample.com/slow
y tenga una política de recuperaciónRetain
. - 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
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
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster