Compartir a través de


Tutorial: Implementación de Azure Container Storage (versión 1.x.x) en un clúster de AKS

En este tutorial se presenta Azure Container Storage y se muestra cómo implementar y administrar el almacenamiento nativo del contenedor para las aplicaciones que se ejecutan en Azure Kubernetes Service (AKS). Si no desea implementar Azure Container Storage ahora, puede omitir este tutorial y continuar directamente en Implementación de una aplicación en AKS. No necesitará Azure Container Storage para la aplicación de escaparate básica de esta serie de tutoriales.

Importante

En este artículo se explica cómo instalar Azure Container Storage (versión 1.x.x),que ahora requiere explícitamente un parámetro --container-storage-version 1 de anclaje de versiones para la instalación. Azure Container Storage (versión 2.x.x) ya está disponible.

Azure Container Storage simplifica la administración de aplicaciones con estado en Kubernetes al ofrecer almacenamiento nativo de contenedor adaptado a una variedad de cargas de trabajo, incluidas bases de datos, plataformas de análisis y aplicaciones de alto rendimiento.

Al final de este tutorial, hará lo siguiente:

  • Comprenda cómo Azure Container Storage admite diversas cargas de trabajo en Kubernetes.
  • Explore varias opciones de back-end de almacenamiento para adaptar el almacenamiento a las necesidades de la aplicación.
  • Implemente Azure Container Storage (versión 1.x.x) en el clúster de AKS y cree un volumen efímero genérico.

Antes de empezar

En los tutoriales anteriores, creó una imagen de contenedor, la cargó en una instancia de ACR y creó un clúster de AKS. Comience con el Tutorial 1: Preparación de la aplicación para AKS para continuar.

Instalación de la extensión de Kubernetes

Para agregar o actualizar a la versión más reciente de k8s-extension, ejecute el comando siguiente.

az extension add --upgrade --name k8s-extension

Conexión al clúster y comprobación del estado del nodo

Si aún no está conectado al clúster desde el tutorial anterior, ejecute los siguientes comandos. Si ya está conectado, puede omitir esta sección.

  1. Ejecute el siguiente comando para conectarse al clúster.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Compruebe la conexión al clúster con el comando kubectl get. Este comando devuelve una lista de los nodos del clúster.

    kubectl get nodes
    
  3. En el ejemplo de salida siguiente se muestran los nodos del clúster. Asegúrese de que el estado de todos los nodos muestra Ready:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-34832848-vmss000000   Ready    agent   80m   v1.30.9
    aks-nodepool1-34832848-vmss000001   Ready    agent   80m   v1.30.9
    aks-nodepool1-34832848-vmss000002   Ready    agent   80m   v1.30.9
    

Elección de una opción de almacenamiento de respaldo

Azure Container Storage (versión 1.x.x) usa grupos de almacenamiento para aprovisionar y administrar volúmenes persistentes y genéricos. Ofrece una variedad de opciones de almacenamiento de back-end para los grupos de almacenamiento, cada uno adecuado para cargas de trabajo específicas. Seleccionar el tipo de almacenamiento adecuado es fundamental para optimizar el rendimiento de la carga de trabajo, la durabilidad y la eficiencia de los costes. En este tutorial, usaremos el disco efímero con NVMe local como respaldo de almacenamiento para crear un volumen efímero genérico. Sin embargo, también exploraremos las otras opciones de almacenamiento de respaldo que le permiten crear volúmenes persistentes.

Disco efímero

El disco efímero utiliza recursos de almacenamiento local en los nodos de AKS (NVMe local o SSD temporal). Ofrece baja latencia de sub ms y IOPS elevadas, pero no persistencia de datos si la máquina virtual se reinicia. El disco efímero es más adecuado para aplicaciones como Cassandra que priorizan la velocidad sobre la persistencia y son ideales para cargas de trabajo con su propia replicación de nivel de aplicación.

Puede usar Disco efímero para crear volúmenes efímeros genéricos o volúmenes persistentes, aunque los datos se perderán si la máquina virtual se reinicia.

Azure Disks

Ideal para bases de datos como PostgreSQL y MongoDB, Azure Disks ofrece durabilidad, escalabilidad y opciones de rendimiento de varios niveles, incluido SSD Premium y SSD Ultra.

Azure Disks permite el aprovisionamiento automático de volúmenes de almacenamiento e incluye redundancia integrada y alta disponibilidad.

Elastic SAN de Azure (versión preliminar)

Diseñado para las necesidades de almacenamiento compartido y las bases de datos de uso general que requieren escalabilidad y alta disponibilidad, Azure Elastic SAN es una buena opción para cargas de trabajo como canalizaciones de CI/CD o procesamiento de datos a gran escala.

Habilitación de Azure Container Storage (versión 1.x.x) y creación de un grupo de almacenamiento

Ejecute el comando siguiente para instalar Azure Container Storage en el clúster y crear un grupo de almacenamiento NVMe local.

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk --container-storage-version 1 --storage-pool-option NVMe

La implementación debe tardar menos de 15 minutos.

Comprobación del estado del bloque de almacenamiento

Cuando se complete la implementación, se habilitarán los componentes del tipo de grupo de almacenamiento elegido y tendrá un grupo de almacenamiento predeterminado.

Para obtener la lista de grupos de almacenamiento disponibles, ejecute el siguiente comando:

kubectl get sp -n acstor

Para comprobar el estado de un grupo de almacenamiento, ejecute el siguiente comando:

kubectl describe sp <storage-pool-name> -n acstor

Si el Message no dice StoragePool is ready, el grupo de almacenamiento sigue creando o experimentando un problema.

Mostrar las clases de almacenamiento disponibles

Cuando el grupo de almacenamiento esté listo para usarse, debe seleccionar una clase de almacenamiento para definir cómo se crea el almacenamiento dinámicamente 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>. Use esta clase de almacenamiento en la sección siguiente para implementar un pod.

Implementación de un pod con un volumen efímero genérico

Cree un pod con Fio (Evaluador de E/S flexible) para realizar pruebas comparativas y simulación de carga de trabajo, que use un volumen efímero genérico.

  1. Use su editor de texto favorito para crear un archivo de manifiesto YAML, como code acstor-pod.yaml.

  2. Pegue el código siguiente y guarde el archivo.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    

    Si cambia el tamaño de almacenamiento del volumen, asegúrese de que el tamaño sea menor que la capacidad disponible del disco efímero de un solo nodo. Ejecute kubectl get diskpool -n acstor para comprobar la capacidad disponible.

  3. 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
    
  4. Compruebe que el pod se está ejecutando y que la notificación de volumen efímero se ha enlazado correctamente al pod:

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    

Ahora ha implementado un pod que usa NVMe local como almacenamiento y puede usarlo para las cargas de trabajo de Kubernetes.

Compruebe la capacidad disponible de discos efímeros antes de aprovisionar volúmenes adicionales:

kubectl describe node <node-name>

Para más información sobre Azure Container Storage (versión 1.x.x), incluida la creación de volúmenes persistentes, consulte ¿Qué es Azure Container Storage?

Limpieza de recursos

No necesitará Azure Container Storage para el resto de esta serie de tutoriales, por lo que se recomienda eliminarlo ahora para evitar incurrir en cargos innecesarios de Azure.

  1. Elimine el pod.

    kubectl delete pod fiopod
    
  2. Elimine el bloque de almacenamiento.

    kubectl delete sp -n acstor <storage-pool-name>
    
  3. Elimine la instancia de extensión.

    az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage all
    

Paso siguiente

En este tutorial, ha implementado Azure Container Storage (versión 1.x.x) en el clúster de AKS. Ha aprendido a:

  • Habilite Azure Container Storage (versión 1.x.x) en el clúster de AKS.
  • Elija un tipo de almacenamiento de respaldo y cree un grupo de almacenamiento.
  • Implemente un pod con un volumen efímero genérico.

En el siguiente tutorial, aprenderá a implementar una aplicación en el clúster.