En Kubernetes, los volúmenes persistentes (PV) y las reclamaciones de volúmenes persistentes (PVC) son componentes esenciales para gestionar el almacenamiento de datos de manera eficiente y flexible. En esta sección, aprenderemos qué son las PVC, cómo funcionan y cómo se utilizan en un clúster de Kubernetes.
¿Qué es una Reclamación de Volumen Persistente (PVC)?
Una Reclamación de Volumen Persistente (PVC) es una solicitud de almacenamiento persistente por parte de un usuario. Las PVC permiten a los usuarios solicitar almacenamiento sin tener que preocuparse por los detalles de cómo se proporciona ese almacenamiento. Kubernetes se encarga de encontrar un PV adecuado que satisfaga la solicitud de la PVC.
Conceptos Clave
- Volumen Persistente (PV): Un recurso de almacenamiento en el clúster que ha sido aprovisionado por un administrador.
- Reclamación de Volumen Persistente (PVC): Una solicitud de almacenamiento persistente por parte de un usuario.
- Clases de Almacenamiento: Definen los diferentes tipos de almacenamiento que pueden ser solicitados.
Cómo Funcionan las PVC
- Creación de una PVC: Un usuario crea una PVC especificando el tamaño y las características del almacenamiento requerido.
- Binding: Kubernetes busca un PV que cumpla con los requisitos de la PVC y los enlaza (bind).
- Uso del PV: Una vez enlazado, el PV puede ser utilizado por los pods que soliciten la PVC.
Ejemplo de una PVC
A continuación, se muestra un ejemplo de cómo definir una PVC en un archivo YAML:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
En este ejemplo:
accessModes
: Define el modo de acceso al volumen.ReadWriteOnce
significa que el volumen puede ser montado como lectura/escritura por un solo nodo.resources.requests.storage
: Especifica la cantidad de almacenamiento solicitado, en este caso, 1 GiB.
Ejemplo Práctico: Crear y Usar una PVC
Paso 1: Crear un PV
Primero, creamos un PV que pueda ser reclamado por una PVC.
apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data"
Paso 2: Crear una PVC
Luego, creamos una PVC que solicitará el almacenamiento del PV creado anteriormente.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
Paso 3: Usar la PVC en un Pod
Finalmente, creamos un pod que utilizará la PVC para montar el almacenamiento persistente.
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx volumeMounts: - mountPath: "/usr/share/nginx/html" name: my-storage volumes: - name: my-storage persistentVolumeClaim: claimName: my-pvc
Ejercicio Práctico
Ejercicio 1: Crear y Usar una PVC
- Crear un PV: Define un PV con una capacidad de 2Gi y un
hostPath
de/mnt/data2
. - Crear una PVC: Define una PVC que solicite 2Gi de almacenamiento.
- Crear un Pod: Define un pod que utilice la PVC para montar el almacenamiento en
/data
.
Solución
Paso 1: Crear un PV
apiVersion: v1 kind: PersistentVolume metadata: name: my-pv2 spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data2"
Paso 2: Crear una PVC
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc2 spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi
Paso 3: Crear un Pod
apiVersion: v1 kind: Pod metadata: name: my-pod2 spec: containers: - name: my-container image: nginx volumeMounts: - mountPath: "/data" name: my-storage volumes: - name: my-storage persistentVolumeClaim: claimName: my-pvc2
Resumen
En esta sección, hemos aprendido sobre las Reclamaciones de Volúmenes Persistentes (PVC) en Kubernetes. Hemos visto cómo crear y usar PVCs para solicitar y gestionar almacenamiento persistente en un clúster de Kubernetes. También hemos trabajado con ejemplos prácticos para reforzar los conceptos aprendidos. En la siguiente sección, exploraremos las Clases de Almacenamiento y cómo se utilizan para gestionar diferentes tipos de almacenamiento 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