Uso de la versión preliminar de Azure Container Storage con NVMe local y replicación de volúmenes
Azure Container Storage es un servicio de administración, implementación y orquestación de volúmenes basado en la nube creado de forma nativa para contenedores. En este artículo se muestra cómo configurar Azure Container Storage para que use disco efímero con NVMe local y replicación de volúmenes como almacenamiento back-end para las cargas de trabajo de Kubernetes. Al final, tendrá un pod que usa NVMe local como almacenamiento. La replicación copia datos entre volúmenes en distintos nodos y restaura un volumen cuando se pierde una réplica, lo que proporciona resistencia para el disco efímero.
¿Qué es un disco efímero?
Cuando su aplicación necesita una latencia de almacenamiento inferior al milisegundo, puede usar Disco efímero con Azure Container Storage para satisfacer sus requisitos de rendimiento. Efímero significa que los discos se implementan en la máquina virtual (VM) local que hospeda el clúster de AKS y no se guardan en un servicio de almacenamiento de Azure. Los datos se perderán en estos discos si detiene o desasigna la máquina virtual.
Hay dos tipos de disco efímero disponibles: NVMe y SSD temporal. NVMe está diseñado para la transferencia de datos de alta velocidad entre el almacenamiento y la CPU. Elija NVMe cuando la aplicación requiera mayor IOPS y rendimiento que el SSD temporal, o si la carga de trabajo requiere replicación. La replicación no se admite actualmente para SSD temporal.
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
En este artículo se necesita la versión más reciente de la CLI de Azure (2.35.0 o posteriores). Consulte Cómo instalar la CLI de Azure. Si usa el entorno de Bash en Azure Cloud Shell, ya está instalada la versión más reciente. Si tiene previsto ejecutar los comandos localmente en lugar de en Azure Cloud Shell, asegúrese de ejecutarlos con privilegios administrativos. Para más información, consulte Introducción a Azure Cloud Shell.
Necesitará el cliente de línea de comandos de Kubernetes,
kubectl
. Ya está instalado si usa Azure Cloud Shell o puede instalarlo de manera local ejecutando el comandoaz aks install-cli
.Si aún no ha instalado Azure Container Storage, siga las instrucciones de Uso de Azure Container Storage con Azure Kubernetes Service.
Compruebe si la región de destino se admite en regiones de Azure Container Storage.
Elección de un tipo de máquina virtual que admita NVMe local
El disco efímero solo está disponible en determinados tipos de máquinas virtuales. Si tiene previsto usar NVMe local, se requiere una máquina virtual optimizada para almacenamiento, como standard_l8s_v3.
Puede ejecutar el siguiente comando para obtener el tipo de máquina virtual que se usa con el grupo de nodos.
az aks nodepool list --resource-group <resource group> --cluster-name <cluster name> --query "[].{PoolName:name, VmSize:vmSize}" -o table
A continuación, se muestra el ejemplo de una salida.
PoolName VmSize
---------- ---------------
nodepool1 standard_l8s_v3
Se recomienda que cada máquina virtual tenga un mínimo de cuatro CPU virtuales (vCPU) y que cada grupo de nodos tenga al menos tres nodos.
Creación y asociación de volúmenes persistentes
Siga estos pasos para crear y adjuntar un volumen persistente.
1. Creación de un grupo de almacenamiento con replicación de volúmenes
Siga estos pasos para crear un grupo de almacenamiento mediante NVMe local con replicación. Azure Container Storage admite actualmente configuraciones de tres réplicas y cinco réplicas. Si especifica tres réplicas, debe tener al menos tres nodos en el clúster de AKS. Si especifica cinco réplicas, debe tener al menos cinco nodos.
Nota:
Dado que los grupos de almacenamiento de disco efímero consumen todos los discos NVMe disponibles, debe eliminar los grupos de almacenamiento NVMe locales existentes antes de crear un nuevo grupo de almacenamiento.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-storagepool.yaml
.Pegue el código siguiente y guarde el archivo. El valor de nombre del bloque de almacenamiento puede ser el que quiera. Establezca réplicas en 3 o 5.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: nvme namespace: acstor spec: poolType: ephemeralDisk: diskType: nvme replicas: 3
Aplique el archivo de manifiesto YAML para crear el bloque de almacenamiento.
kubectl apply -f acstor-storagepool.yaml
Una vez completada la creación del bloque de almacenamiento, verá un mensaje como el siguiente:
storagepool.containerstorage.azure.com/nvme created
También puede ejecutar este comando para comprobar el estado del bloque de almacenamiento. Reemplace
<storage-pool-name>
por el valor de nombre del bloque de almacenamiento. En este ejemplo, el valor sería nvme.kubectl describe sp <storage-pool-name> -n acstor
Cuando se crea el bloque de almacenamiento, Azure Container Storage creará una clase de almacenamiento en su nombre mediante la convención de nomenclatura acstor-<storage-pool-name>
.
2. Mostrar las clases de almacenamiento disponibles
Cuando el bloque de almacenamiento esté listo para usarse, debe seleccionar una clase de almacenamiento para definir cómo se crea dinámicamente el almacenamiento al crear e implementar volúmenes.
Ejecute kubectl get sc
para mostrar las clases de almacenamiento disponibles. Debería ver una clase de almacenamiento denominada acstor-<storage-pool-name>
.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
Importante
No use la clase de almacenamiento marcada como interna. Es una clase de almacenamiento interna necesaria para que Azure Container Storage funcione.
3. Creación de una notificación de volumen persistente
Una notificación de volumen persistente (PVC) se usa para aprovisionar automáticamente el almacenamiento en función de una clase de almacenamiento. Siga estos pasos para crear una PVC mediante la nueva clase de almacenamiento.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-pvc.yaml
.Pegue el código siguiente y guarde el archivo. Puede elegir el valor de
name
de PCV que quiera.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different resources: requests: storage: 100Gi
Al cambiar el tamaño de almacenamiento de los volúmenes, asegúrese de que sea menor que la capacidad disponible del disco efímero de un solo nodo. Consulte Comprobación de la capacidad del disco efímero del nodo.
Aplique el archivo de manifiesto YAML para crear la PVC.
kubectl apply -f acstor-pvc.yaml
Debería mostrarse una salida similar a esta:
persistentvolumeclaim/ephemeralpvc created
Para comprobar el estado de la PVC, ejecute el siguiente comando:
kubectl describe pvc ephemeralpvc
Una vez creada la PVC, está lista para que la use un pod.
4. Implementar un pod y asociar un volumen persistente
Cree un pod mediante Fio (evaluador de E/S flexible) para realizar pruebas comparativas y simulación de carga de trabajo y especifique una ruta de montaje para el volumen persistente. Para claimName, use el valor de nombre que usó al crear la notificación de volumen persistente.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-pod.yaml
.Pegue el código siguiente y guarde el archivo.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: ephemeralpv persistentVolumeClaim: claimName: ephemeralpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralpv
Aplique el archivo de manifiesto YAML para implementar el pod.
kubectl apply -f acstor-pod.yaml
Debería ver un resultado similar al siguiente:
pod/fiopod created
Compruebe que el pod se está ejecutando y que la notificación de volumen persistente se ha enlazado correctamente al pod:
kubectl describe pod fiopod kubectl describe pvc ephemeralpvc
Compruebe las pruebas FIO para ver su estado actual:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Ahora ha implementado un pod que usa NVMe local con replicación de volúmenes y puede usarlo para las cargas de trabajo de Kubernetes.
Administración de volúmenes y grupos de almacenamiento
En esta sección, aprenderá a comprobar la capacidad disponible de un disco efímero para un solo nodo, a desasociar y volver a adjuntar un volumen persistente y a expandir o eliminar un grupo de almacenamiento.
Comprobación de la capacidad del disco efímero del nodo
Se asigna un volumen efímero en un solo nodo. Al configurar el tamaño de los volúmenes efímeros, debe ser menor que la capacidad disponible del disco efímero de un solo nodo.
Ejecute el comando siguiente para comprobar la capacidad disponible del disco efímero de un solo nodo.
$ kubectl get diskpool -n acstor
NAME CAPACITY AVAILABLE USED RESERVED READY AGE
ephemeraldisk-nvme-diskpool-jaxwb 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-nvme-diskpool-wzixx 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-nvme-diskpool-xbtlj 75660001280 75031990272 628011008 560902144 True 21h
En este ejemplo, la capacidad disponible del disco efímero para un solo nodo es de 75031990272
bytes o 69 GiB.
Desasociar y volver a adjuntar un volumen persistente
Para desasociar un volumen persistente, elimine el pod al que está asociado el volumen persistente.
kubectl delete pods <pod-name>
Para volver a adjuntar un volumen persistente, simplemente haga referencia al nombre de la notificación de volumen persistente en el archivo de manifiesto YAML, tal y como se describe en Implementar un pod y adjuntar un volumen persistente.
Para comprobar a qué volumen persistente está enlazada una notificación de volumen persistente, ejecute:
kubectl get pvc <persistent-volume-claim-name>
Expansión de un grupo de almacenamiento
Puede expandir los grupos de almacenamiento respaldados por NVMe local para escalar verticalmente rápidamente y sin tiempo de inactividad. Actualmente no se admite la reducción de los grupos de almacenamiento.
Dado que un grupo de almacenamiento respaldado por disco efímero usa recursos de almacenamiento local en los nodos del clúster (VM) de AKS, la expansión del grupo de almacenamiento requiere agregar otro nodo al clúster. Siga estas instrucciones para expandir el bloque de almacenamiento.
Ejecute el siguiente comando para agregar un nodo al clúster de AKS. Reemplace
<cluster-name>
,<nodepool name>
y<resource-group-name>
con sus propios valores. Para obtener el nombre del grupo de nodos, ejecutekubectl get nodes
.az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
Ejecute
kubectl get nodes
y verá que se ha agregado un nodo al clúster.Ejecute
kubectl get sp -A
y debería ver que la capacidad del bloque de almacenamiento ha aumentado.
Crear un grupo de almacenamiento
Si desea eliminar un bloque de almacenamiento, ejecute el siguiente comando. Reemplace <storage-pool-name>
por el nombre del bloque de almacenamiento.
kubectl delete sp -n acstor <storage-pool-name>
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de