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

  1. Creación de una PVC: Un usuario crea una PVC especificando el tamaño y las características del almacenamiento requerido.
  2. Binding: Kubernetes busca un PV que cumpla con los requisitos de la PVC y los enlaza (bind).
  3. 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

  1. Crear un PV: Define un PV con una capacidad de 2Gi y un hostPath de /mnt/data2.
  2. Crear una PVC: Define una PVC que solicite 2Gi de almacenamiento.
  3. 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

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