GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Introducción a los volúmenes persistentes de Kubernetes

Introducción

Kubernetes es una de las soluciones de orquestación más populares para alojar contenedores en un entorno de producción. La plataforma permite a los usuarios automatizar la implementación de numerosas instancias de una aplicación mientras se amplía o reduce según la demanda.

Sin embargo, debido a la naturaleza volátil de los pods de Kubernetes, los volúmenes de almacenamiento debían resolverse con un enfoque completamente nuevo.

Este artículo explica qué son los volúmenes persistentes de Kubernetes y por qué son tan importantes.

¿Qué son los volúmenes persistentes de Kubernetes?

Los volúmenes persistentes de Kubernetes son volúmenes de almacenamiento proporcionados por el usuario asignados a un clúster de Kubernetes. El ciclo de vida de los volúmenes persistentes es independiente de cualquier pod que lo utilice. Por lo tanto, los volúmenes persistentes son perfectos para casos de uso en los que necesita retener datos independientemente del proceso de vida impredecible de los pods de Kubernetes.

Sin volúmenes persistentes, sería imposible mantener servicios tan comunes como una base de datos. Cada vez que se reemplaza un pod, los datos obtenidos durante el ciclo de vida de ese pod se perderán. Sin embargo, gracias a los volúmenes persistentes, los datos están contenidos en un estado consistente.

Tipos de volúmenes de Kubernetes

Para comprender qué son los volúmenes persistentes, primero debemos explicar en qué se diferencian los tipos de volúmenes. Hay diferentes tipos de volúmenes que puede usar en un pod de Kubernetes:

  1. Memoria local de nodo (emptyDir y hostPath )
  2. Volúmenes en la nube (por ejemplo, awsElasticBlockStore , gcePersistentDisk , y azureDiskVolume )
  3. Volúmenes de uso compartido de archivos, como Network File System (nfs )
  4. Sistemas de archivos distribuidos (p. ej., cephfs , rbd y glusterfs )
  5. Tipos de volúmenes especiales como PersistentVolumeClaim , secret y gitRepo

Ambos emptyDir y hostPath están conectados al pod, almacenados en RAM o en almacenamiento persistente en una unidad. Como dependen del pod, su contenido está disponible mientras el pod se esté ejecutando. Si se cae, los datos se pierden.

Con volúmenes en la nube , nfs y PersistentVolumeClaim , el volumen es independiente y se coloca fuera de la cápsula. Aunque esencialmente todos están diseñados para preservar los datos, los volúmenes en la nube son significativamente más difíciles de manejar. Para conectar el pod al proveedor, el usuario debe conocer muchos detalles de almacenamiento.

Los sistemas de archivos de red y los volúmenes persistentes son mucho más prácticos. De hecho, estos dos tipos de volumen funcionan con los mismos principios.

NFS te permite conectarte a un volumen a través de un yaml expediente. Sin el pod, el contenido del volumen se desmonta pero permanece disponible. Sin embargo, incluso para las configuraciones de NFS, debe enviar una reclamación de volumen persistente (PVC) solicitud.

Por lo tanto, las reclamaciones de volumen persistente son la solución principal para los volúmenes persistentes en Kubernetes.

¿Qué son las reclamaciones de volumen persistente?

Las reclamaciones de volumen persistente son objetos que se conectan a volúmenes de almacenamiento de back-end a través de una serie de abstracciones. Solicitan los recursos de almacenamiento que necesita su implementación.

La principal ventaja es que los PVC son mucho más fáciles de usar, lo que permite a los desarrolladores usarlos sin tener que conocer demasiados detalles del entorno de nube al que se están conectando. El administrador enumera los detalles completos de la reclamación en el PVC, pero el módulo en sí solo requiere un enlace para acceder a él.

Por lo tanto, un pod que usa un volumen persistente también incluye varias capas abstractas entre este y el almacenamiento.

Uso de volúmenes persistentes

Para vincular un pod con un volumen persistente, debe incluir montajes de volumen y una reclamación de volumen persistente (PVC). Estos reclamos permiten a los usuarios montar un volumen persistente en un pod sin tener que conocer los detalles del entorno de la nube.

En el reclamo de volumen persistente, los usuarios especifican qué tan grande quieren que sea el almacenamiento, el selector, dirigiendo al PV apropiado y la clase de almacenamiento. La clase de almacenamiento se refiere al tipo de aprovisionamiento, ya sea estático o dinámico.

Aprovisionamiento estático es una característica en la que los administradores hacen uso de los dispositivos de almacenamiento existentes y los ponen a disposición de los usuarios del clúster. El administrador del clúster crea varios volúmenes persistentes que están disponibles para el consumo y existen en la API de Kubernetes.

Aprovisionamiento dinámico ocurre cuando ninguno de los volúmenes persistentes estáticos coincide con el PVC. En este caso, el aprovisionamiento se basa en clases de almacenamiento, creadas y configuradas por los administradores.

El ciclo de vida de los volúmenes persistentes

Una vez que elimina el PVC, libera el PV de su reclamación. Según la política de recuperación establecida, el volumen se conservará, reciclará o eliminará.

  • Si configura la política de recuperación para retener , el volumen en el almacenamiento permanece incluso una vez liberado de la reclamación.
  • Alternativamente, puede reciclar el volumen, que elimina el contenido que contiene y lo pone a disposición de otros PVC.
  • Tener la política de reclamación configurada para eliminar una vez que se desconecta del PVC significa que el volumen y el almacenamiento se eliminan por completo.

Cómo crear un volumen persistente

1. Para crear un volumen persistente, comienza creando un .yaml archivo en el editor de su elección. En este ejemplo llamamos al archivo example-pv.yaml y edítelo con el editor nano:

nano example-pv.yaml

2. Agregue el siguiente contenido al archivo:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: [pv_name]
spec:
capacity:
  storage: 10Gi
accessModes:
  - ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
mountPath: [path of where the volume is accessible from within the container]
volumeID: [your_volume_id]

3. Reemplace las especificaciones de name , storage , mountpath y volumeID con tus valores respetados.

4. Guarde y salga del archivo.

5. Luego, implemente el volumen persistente usando el siguiente comando con el nombre del archivo .yaml que creó en el paso anterior:

kubectl create -f example-pv.yaml

Cómo crear un reclamo de volumen persistente

Al igual que con el PV, creas un PVC con un .yaml archivo que consta del siguiente contenido:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: [pvc_name]
spec:
  storageClassName: manual
  selector:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Con el contenido agregado, guarde y salga del archivo.

Una vez que haya instalado y configurado el volumen persistente y el reclamo de volumen persistente, puede especificar el PVC en el pod requerido.


Ubuntu
  1. ¿Cómo crear un USB persistente?

  2. Una introducción a Docker

  3. Introducción a las imágenes de Docker

  4. Introducción a Docker

  5. Introducción a las iptables

Cómo implementar Elasticsearch en Kubernetes

Cómo instalar Kubernetes en Ubuntu 18.04

Docker frente a Kubernetes

Cómo configurar un volumen persistente basado en NFS en Kubernetes

Cómo instalar Kubernetes en Ubuntu 20.04

Una introducción a los hechos de Ansible