Uso de discos Ultra de Azure en Azure Kubernetes Service
Los discos Ultra de Azure ofrecen un alto rendimiento, IOPS elevadas y un almacenamiento en disco coherente y de baja latencia para las aplicaciones con estado. Una ventaja importante de los discos Ultra es la posibilidad de cambiar dinámicamente el rendimiento del disco SSD junto con sus cargas de trabajo sin tener que reiniciar los nodos de agente. Los discos Ultra son adecuados para cargas de trabajo con un uso intensivo de datos.
En este artículo se describe cómo configurar un clúster de AKS nuevo o existente para usar discos Ultra de Azure.
Antes de empezar
Esta característica solo puede establecerse al crear el cluster o al crear un grupo de nodos.
Limitaciones
- Los discos Ultra de Azure requieren grupos de nodos implementados en zonas de disponibilidad y regiones que admitan estos discos, y solo son compatibles con series de máquinas virtuales específicas. Revise la tabla correspondiente en la sección Limitaciones del disco Ultra para obtener más información.
- No se pueden usar discos Ultra con algunas características y funcionalidades, como conjuntos de disponibilidad o Azure Disk Encryption. Revise las limitaciones del disco Ultra para obtener la información más reciente.
Crear un clúster que pueda usar discos Ultra
Creación de un clúster de AKS que pueda sacar provecho de los discos ultra de Azure mediante los siguientes comandos de la CLI. Use el parámetro --enable-ultra-ssd
para establecer la característica EnableUltraSSD
.
az aks create \
--resource-group MyResourceGroup \
--name myAKSCluster \
--location westus2 \
--node-vm-size Standard_D2s_v3 \
--zones 1 2 \
--node-count 2 \
--enable-ultra-ssd \
--generate-ssh-keys
Si desea crear un clúster sin la compatibilidad con disco Ultra, puede omitir el parámetro --enable-ultra-ssd
para hacerlo.
Habilitación de discos ultra en un clúster existente
Puede habilitar los discos Ultra en un clúster existente agregando un nuevo grupo de nodos al clúster que admita discos Ultra. Configure un nuevo grupo de nodos para utilizar discos Ultra mediante el parámetro --enable-ultra-ssd
con el comando az aks nodepool add
.
Si desea crear grupos de nodos nuevos sin compatibilidad con los discos Ultra, puede hacerlo excluyendo el parámetro --enable-ultra-ssd
.
Uso de discos Ultra dinámicamente con una clase de almacenamiento
Para usar los discos Ultra en nuestras implementaciones o conjuntos con estado, puede usar una clase de almacenamiento para el aprovisionamiento dinámico.
Creación de la clase de almacenamiento
Una clase de almacenamiento se usa para definir cómo se crea dinámicamente una unidad de almacenamiento con un volumen persistente. Para obtener más información sobre las clases de almacenamiento de Kubernetes, vea Clases de almacenamiento de Kubernetes. En este ejemplo, vamos a crear una clase de almacenamiento que haga referencia a discos Ultra.
Cree un archivo denominado
azure-ultra-disk-sc.yaml
y cópielo en el siguiente manifiesto:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ultra-disk-sc provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21 volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created parameters: skuname: UltraSSD_LRS kind: managed cachingMode: None diskIopsReadWrite: "2000" # minimum value: 2 IOPS/GiB diskMbpsReadWrite: "320" # minimum value: 0.032/GiB
Cree la clase de almacenamiento con el comando
kubectl apply
y especifique el archivoazure-ultra-disk-sc.yaml
.kubectl apply -f azure-ultra-disk-sc.yaml
La salida debería ser similar a la salida de ejemplo siguiente:
storageclass.storage.k8s.io/ultra-disk-sc created
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. En este caso, un PVC puede usar la clase de almacenamiento creada anteriormente para crear un disco Ultra.
Cree un archivo denominado
azure-ultra-disk-pvc.yaml
y cópielo en el siguiente manifiesto:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ultra-disk spec: accessModes: - ReadWriteOnce storageClassName: ultra-disk-sc resources: requests: storage: 1000Gi
La notificación solicita un disco llamado
ultra-disk
que tiene un tamaño de 1000 GB con acceso ReadWriteOnce. La clase de almacenamiento ultra-disk-sc se especifica como la clase de almacenamiento.Cree la notificación del volumen persistente con el comando
kubectl apply
y especifique el archivoazure-ultra-disk-pvc.yaml
.kubectl apply -f azure-ultra-disk-pvc.yaml
La salida debería ser similar a la salida de ejemplo siguiente:
persistentvolumeclaim/ultra-disk created
Uso del volumen persistente
Una vez que se haya creado la notificación de volumen persistente y tras el aprovisionamiento correcto del disco, se puede crear un pod con acceso al disco. El siguiente manifiesto crea un pod NGINX básico que utiliza la notificación de volumen persistente denominada ultra-disk para montar el disco de Azure en la ruta de acceso /mnt/azure
.
Cree un archivo denominado
nginx-ultra.yaml
y cópielo en el siguiente manifiesto:kind: Pod apiVersion: v1 metadata: name: nginx-ultra spec: containers: - name: nginx-ultra image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume volumes: - name: volume persistentVolumeClaim: claimName: ultra-disk
Cree el pod mediante el comando
kubectl apply
y especifique el archivonginx-ultra.yaml
.kubectl apply -f nginx-ultra.yaml
La salida debería ser similar a la salida de ejemplo siguiente:
pod/nginx-ultra created
Ahora tiene un pod en ejecución con el disco de Azure montado en el directorio
/mnt/azure
.Consulte los detalles de configuración mediante el comando
kubectl describe pod
y especifique el archivonginx-ultra.yaml
.kubectl describe pod nginx-ultra
La salida debería ser similar a la salida de ejemplo siguiente:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
Pasos siguientes
- Para más información sobre los discos ultra, consulte Uso de discos Ultra de Azure.
- Para más información sobre los procedimientos recomendados, consulte Procedimientos recomendados para el almacenamiento y las copias de seguridad en AKS.
Azure Kubernetes Service