Uso de Azure Container Storage con Azure Elastic SAN (versión preliminar)
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. Azure Elastic SAN es una solución totalmente integrada que simplifica la implementación, el escalado, la administración y la configuración de una SAN, al mismo tiempo que ofrece capacidades integradas en la nube, como la alta disponibilidad.
Como característica en vista previa (GB), puede configurar Azure Container Storage para usar Azure Elastic SAN. En este artículo se explica cómo realizar esa configuración. Al final de este artículo, tendrá un pod que use Elastic SAN como almacenamiento.
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.
Asegúrese de que tiene un rol de Propietario de Azure Container Storage o el rol Colaborador de Azure Container Storage en la suscripción. Cualquiera de estos roles concede permisos que permiten al Almacenamiento de contenedores de Azure comunicarse con el recurso Elastic SAN. Para realizar este cambio, vaya a la página de suscripción en Azure Portal. Seleccione Control de acceso (IAM) > Agregar asignación de roles y busque "Propietario de Azure Container Storage" o "Colaborador de Azure Container Storage" en la pestañaRoles de función de trabajo. Seleccione Ver > asignaciones > Agregar asignación y agregue su cuenta.
Para usar Azure Container Storage con Azure Elastic SAN (versión preliminar), el clúster de AKS debe tener un grupo de nodos de al menos tres máquinas virtuales de uso general como standard_d4s_v5 para los nodos del clúster, cada una con un mínimo de cuatro CPU virtuales (vCPU).
Limitaciones
Actualmente no se admiten las siguientes características cuando se usa Azure Container Storage para implementar y orquestar una SAN elástica.
- Instantáneas de volumen
- Expansión del bloque de almacenamiento
Disponibilidad regional
Azure Container Storage solo está disponible para un subconjunto de regiones de Azure:
- (África) Norte de Sudáfrica
- (Asia Pacífico) Este de Australia
- (Asia Pacífico) Este de Asia
- (Asia Pacífico) Este de Japón
- (Asia Pacífico) Centro de Corea del Sur
- (Asia Pacífico) Sudeste de Asia
- (Asia Pacífico) Centro de la India
- (Europa) Centro de Francia
- (Europa) Centro-oeste de Alemania
- (Europa) Norte de Europa
- (Europa) Oeste de Europa
- (Europa) Sur de Reino Unido
- (Europa) Centro de Suecia
- (Europa) Norte de Suiza
- (Oriente Medio) Norte de Emiratos Árabes Unidos
- (Norteamérica) Este de EE. UU.
- (Norteamérica) Este de EE. UU. 2
- (Norteamérica) Oeste de EE. UU.
- (Norteamérica) Oeste de EE. UU. 2
- (Norteamérica) Oeste de EE. UU. 3
- (Norteamérica) Centro de EE. UU.
- (Norteamérica) Centro-norte de EE. UU.
- (Norteamérica) Centro-sur de EE. UU.
- (Norteamérica) Centro-oeste de EE. UU.
- (Norteamérica) Centro de Canadá
- (Norteamérica) Este de Canadá
- (Sudamérica) Sur de Brasil
Creación y asociación de volúmenes persistentes
Siga estos pasos para crear y adjuntar un volumen persistente.
1. Crear un grupo de almacenamiento
En primer lugar, cree un bloque de almacenamiento, que es una agrupación lógica de almacenamiento para el clúster de Kubernetes, definiéndolo en un archivo de manifiesto YAML.
Si ha habilitado Azure Container Storage mediante los comandos az aks create
o az aks update
, es posible que ya tenga un bloque de almacenamiento. Use kubectl get sp -n acstor
para obtener la lista de bloques de almacenamiento. Si ya tiene un bloque de almacenamiento disponible que quiera usar, puede omitir esta sección y continuar con Representación de las clases de almacenamiento disponibles.
Siga estos pasos para crear un grupo de almacenamiento con Azure Elastic SAN (versión preliminar).
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-storagepool.yaml
.Pegue el código siguiente. El valor de nombre del bloque de almacenamiento puede ser el que quiera. Ajuste almacenamiento para reflejar la capacidad de almacenamiento que desee en Gi o Ti y guarde el archivo. Azure Elastic SAN no admite actualmente el cambio de tamaño de los grupos de almacenamiento.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: managed namespace: acstor spec: poolType: elasticSan: {} resources: requests: {"storage": 1Ti}
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/managed 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 administrado.kubectl describe sp <storage-pool-name> -n acstor
Cuando se cree el grupo de almacenamiento, Azure Container Storage creará una clase de almacenamiento en su nombre con la convención de nomenclatura acstor-<storage-pool-name>
. También se creará un recurso de Azure Elastic SAN.
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 notificaciones de volumen persistentes e implementar volúmenes persistentes.
Ejecute kubectl get sc
para mostrar las clases de almacenamiento disponibles. Debería ver una clase de almacenamiento denominada acstor-<storage-pool-name>
.
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: managedpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-managed # replace with the name of your storage class if different resources: requests: storage: 100Gi
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/managedpvc created
Para comprobar el estado de la PVC, ejecute el siguiente comando:
kubectl describe pvc managedpvc
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: managedpv persistentVolumeClaim: claimName: managedpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: managedpv
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 managedpvc
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 utiliza Elastic SAN como almacenamiento y puede utilizarlo para sus cargas de trabajo de Kubernetes.
Administración de volúmenes persistentes y grupos de almacenamiento
Ahora que ha creado un volumen persistente, puede desasociarlo y volver a adjuntarlo según sea necesario. También puede eliminar un grupo de almacenamiento.
Desasociar y volver a adjuntar un volumen persistente
Para desasociar un volumen persistente, elimine el pod al que está asociado el volumen persistente. Reemplace <pod-name>
por el nombre del pod, por ejemplo, fiopod.
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á enlazado una notificación de volumen persistente, ejecute kubectl get pvc <persistent-volume-claim-name>
.
Eliminación de 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>