Compartir a través de


Administración del almacenamiento de Kubernetes en un dispositivo Azure Stack Edge Pro con GPU

SE APLICA A:Yes for Pro GPU SKUAzure Stack Edge Pro: GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

En un dispositivo Azure Stack Edge Pro, se crea un clúster de Kubernetes al configurar el rol de proceso. Una vez creado el clúster de Kubernetes, las aplicaciones en contenedor se pueden implementar en el clúster de Kubernetes en pods. Hay distintas formas de proporcionar almacenamiento para los pods en el clúster de Kubernetes.

En este artículo se describen los métodos para aprovisionar el almacenamiento en un clúster de Kubernetes en general y específicamente en el contexto de un dispositivo Azure Stack Edge Pro.

Requisitos de almacenamiento para pods de Kubernetes

Los pods de Kubernetes no tienen estado, pero las aplicaciones que ejecutan suelen tener estado. Dado que los pods pueden ser de corta duración y se reinician, conmutan por error o se mueven entre nodos de Kubernetes, se deben cumplir los siguientes requisitos para el almacenamiento asociado al pod.

El almacenamiento debe:

  • Residir fuera del pod.
  • Ser independiente del ciclo de vida del pod.
  • Ser accesible desde todos los nodos de Kubernetes.

Para entender cómo se administra el almacenamiento de Kubernetes, es preciso comprender dos recursos de API:

  • PersistentVolume (PV): se trata de un fragmento de almacenamiento en el clúster de Kubernetes. El almacenamiento Kubernetes se puede aprovisionar estáticamente como PersistentVolume. También se puede aprovisionar dinámicamente como StorageClass.

  • PersistentVolumeClaim (PVC): se trata de una solicitud de almacenamiento por parte de un usuario. Las PVC consumen recursos de PV. Las PVC pueden solicitar tamaños y modos de acceso específicos.

    Dado que los usuarios necesitan PersistentVolumes con distintas propiedades para diferentes problemas, los administradores de clústeres deben ser capaces de ofrecer una variedad de PersistentVolumes que difieran no solo en el tamaño y los modos de acceso. Para estas necesidades, se necesita el recurso StorageClass.

El aprovisionamiento de almacenamiento puede ser estático o dinámico. En las siguientes secciones se analizan cada uno de estos tipos de aprovisionamiento.

Aprovisionamiento estático

Los administradores de clústeres de Kubernetes pueden aprovisionar el almacenamiento de forma estática. Para ello, pueden usar el back-end de almacenamiento basado en los sistemas de archivos SMB/NFS, o bien usar discos iSCSI que se conectan localmente a través de la red en un entorno local, o incluso usar Azure Files o discos de Azure en la nube. Este tipo de almacenamiento no se aprovisiona de manera predeterminada y los administradores de clústeres tienen que planear y administrar este aprovisionamiento.

Este es un diagrama que muestra cómo se consume el almacenamiento aprovisionado estáticamente en Kubernetes:

Static provisioning via PersistentVolumes

Tienen lugar los pasos siguientes:

  1. Aprovisionar almacenamiento: el administrador del clúster aprovisiona el almacenamiento. En este ejemplo, el administrador de clústeres crea uno o varios recursos compartidos de SMB que crean automáticamente objetos de volumen persistentes en el clúster de Kubernetes correspondiente a estos recursos compartidos.

  2. Almacenamiento de notificaciones: envía una implementación de PVC que solicita el almacenamiento. Esta notificación de almacenamiento es PersistentVolumeClaim (PVC). Si el tamaño y el modo de acceso de PV coinciden con los del PVC, la PVC se enlaza al PV. La PVC y el PV se asignan uno a uno.

  3. Montaje de PVC en el contenedor: una vez que el PVC está enlazado al PV, puede montar este PVC en una ruta de acceso en el contenedor. Cuando la lógica de la aplicación en el contenedor lee o escribe en esta ruta de acceso, los datos se escriben en el almacenamiento SMB.

Aprovisionamiento dinámico

Este es un diagrama que muestra cómo se consume el almacenamiento aprovisionado estáticamente en Kubernetes:

Dynamic provisioning via StorageClasses

Tienen lugar los pasos siguientes:

  1. Definición de la clase de almacenamiento: el administrador del clúster define una clase de almacenamiento en función del entorno operativo del clúster de Kubernetes. Además, el administrador de clústeres implementa un aprovisionador, que es otro pod o aplicación que se implementa en el clúster de Kubernetes. El aprovisionador tiene todos los detalles para aprovisionar los recursos compartidos de manera dinámica.

  2. Almacenamiento de notificaciones: envía una aplicación que reclamaría el almacenamiento. Una vez que se crea una PVC con esta referencia de clase de almacenamiento, se invoca el aprovisionamiento.

  3. Aprovisionar el almacenamiento dinámicamente: el aprovisionamiento crea dinámicamente el recurso compartido asociado al almacenamiento en disco local. Una vez creado el recurso compartido, también crea un objeto PV automáticamente correspondiente a este recurso compartido.

  4. Montaje de PVC en contenedor: una vez enlazado el PVC al PV, puede montar el PVC en el contenedor en una ruta de acceso de la misma manera que el aprovisionamiento estático y leer desde o escribir en el recurso compartido.

Aprovisionamiento de almacenamiento en Azure Stack Edge Pro

En el dispositivo Azure Stack Edge Pro, los PersistentVolumes aprovisionados de forma estática se crean mediante las funcionalidades de almacenamiento del dispositivo. Cuando se aprovisiona un recurso compartido y la opción Usar el recurso compartido con el proceso perimetral está habilitada, esta acción crea un recurso PV automáticamente en el clúster de Kubernetes.

Local share creation in Azure portal for static provisioning

Para usar la nube por niveles, puede crear un recurso compartido en la nube de Edge con la opción Usar el recurso compartido con el proceso perimetral habilitada. Se vuelve a crear automáticamente un PV para este recurso compartido. Los datos de aplicación que se escriben en el recurso compartido de Edge están organizados en capas en la nube.

Cloud share creation in Azure portal for static provisioning

Se pueden crear recursos compartidos de archivos SMB y NFS para aprovisionar PV de forma estática en un dispositivo Azure Stack Edge Pro. Una vez aprovisionado el PV, usted enviará una PVC para notificar este almacenamiento. Este es un ejemplo de una implementación de PVC yaml que notifica el almacenamiento y usa los recursos compartidos aprovisionados.

kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
  name: pvc-smb-flexvol 
spec: 
  accessModes: 
  - ReadWriteMany 
  resources: 
    requests: 
      storage: 10Gi 
  volumeName: <nfs-or-smb-share-name-here> 
  storageClassName: ""

Para obtener el valor del campo volumeName, seleccione el punto de montaje local para los módulos de proceso perimetrales al seleccionar el recurso compartido SMB o NFS después de la creación. Es el mismo que el nombre del recurso compartido.

Para más información, consulte Implementación de una aplicación con estado a través del aprovisionamiento estático en Azure Stack Edge Pro mediante kubectl.

Para obtener acceso al mismo almacenamiento aprovisionado estáticamente, las opciones de montaje de volumen correspondientes para los enlaces de almacenamiento de IoT son las siguientes. El elemento /home/input es la ruta de acceso en la que se puede acceder al volumen del contenedor.

{
"HostConfig": {
"Mounts": [
{
"Target": "/home/input",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
},
{
"Target": "/home/output",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
}]
}
}

Azure Stack Edge Pro también tiene una StorageClass integrada denominada ase-node-local que usa un almacenamiento en disco de datos conectado al nodo de Kubernetes. Esta StorageClass admite el aprovisionamiento dinámico. Puede crear una referencia a StorageClass en las aplicaciones del pod, y un PV se crea automáticamente. Para obtener más información, consulte Panel de Kubernetes para consultar por ase-node-local StorageClass.

Built-in storage class in Kubernetes dashboard

Para más información, consulte Implementación de una aplicación con estado a través del aprovisionamiento dinámico en Azure Stack Edge Pro mediante kubectl.

Elección del tipo de almacenamiento

Es posible que tenga que elegir el tipo de almacenamiento en función de la carga de trabajo que va a implementar.

  • Si quiere el modo de acceso ReadWriteMany para su PersistentVolumes, donde los volúmenes se montan como de lectura y escritura en muchos nodos que se implementan, use el aprovisionamiento estático para los recursos compartidos de SMB o NFS.

  • Si las aplicaciones que está implementando tienen un requisito de cumplimiento de POSIX, por ejemplo, aplicaciones como MongoDB, PostgreSQL, MySQL o Prometheus, use la StorageClass integrada. Los modos de acceso son ReadWriteOnce o el volumen se monta como de lectura y escritura en un único nodo.

Para obtener más información sobre los modos de acceso, consulte los modos de acceso de volúmenes de Kubernetes.

Pasos siguientes

Para comprender cómo puede aprovisionar un PersistentVolume de forma estática, consulte:

Para aprender a aprovisionar un StorageClass de forma dinámica, consulte: