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: 1GiEn este ejemplo:
accessModes: Define el modo de acceso al volumen.ReadWriteOncesignifica 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: 1GiPaso 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-pvcEjercicio Práctico
Ejercicio 1: Crear y Usar una PVC
- Crear un PV: Define un PV con una capacidad de 2Gi y un
hostPathde/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: 2GiPaso 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-pvc2Resumen
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
