Usare dischi Ultra di Azure nel servizio Azure Kubernetes
Dischi Ultra di Azure offre una velocità effettiva elevata, un numero elevato di operazioni di I/O al secondo e archiviazione su disco con bassa latenza coerente per le applicazioni con stato. Uno dei vantaggi principali di Dischi Ultra è la possibilità di modificare dinamicamente le prestazioni dell'unità SSD insieme ai carichi di lavoro senza la necessità di riavviare i nodi dell'agente. Dischi Ultra è adatto per i carichi di lavoro a elevato utilizzo di dati.
Questo articolo descrive come configurare un cluster del servizio Azure Kubernetes nuovo o esistente per l'uso di dischi Ultra di Azure.
Operazioni preliminari
Questa funzionalità può essere impostata solo durante la creazione del cluster o durante la creazione di un pool di nodi.
Limiti
- I dischi Ultra di Azure richiedono pool di nodi distribuiti in zone di disponibilità e aree che supportano questi dischi e sono supportati solo da specifiche serie di macchine virtuali. Per altre informazioni, vedere la tabella corrispondente nella sezione Limitazioni dei dischi Ultra.
- I dischi Ultra non possono essere usati con alcune caratteristiche e funzionalità, ad esempio set di disponibilità o Crittografia dischi di Azure. Per informazioni aggiornate, vedere Limitazioni dei dischi Ultra.
Creare un cluster in grado di usare dischi Ultra
Creare un cluster del servizio Azure Kubernetes in grado di sfruttare i dischi Ultra di Azure usando i comandi dell'interfaccia della riga di comando seguenti. Usare il parametro --enable-ultra-ssd
per impostare la funzionalità 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
Se si vuole creare un cluster senza supporto per dischi Ultra, è possibile farlo omettendo il parametro --enable-ultra-ssd
.
Abilitare Dischi Ultra in un cluster esistente
È possibile abilitare i dischi Ultra in un cluster esistente aggiungendo un nuovo pool di nodi al cluster che supporta dischi Ultra. Configurare un nuovo pool di nodi per l'uso di dischi Ultra usando il parametro --enable-ultra-ssd
con il comando az aks nodepool add
.
Per creare nuovi pool di nodi senza supporto per i dischi Ultra, è possibile escludere il parametro --enable-ultra-ssd
.
Usare Dischi Ultra in modo dinamico con una classe di archiviazione
Per usare dischi Ultra nelle distribuzioni o nei set con stato, è possibile usare una classe di archiviazione per il provisioning dinamico .
Creare la classe di archiviazione
Una classe di archiviazione viene usata per definire la creazione dinamica di un'unità di archiviazione con un volume permanente. Per altre informazioni sulle classi di archiviazione Kubernetes, vedere Classi di archiviazione Kubernetes. In questo esempio verrà creata una classe di archiviazione che fa riferimento a dischi Ultra.
Creare un file denominato
azure-ultra-disk-sc.yaml
e copiarlo nel manifesto seguente: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
Creare la classe di archiviazione usando il comando
kubectl apply
e specifica il fileazure-ultra-disk-sc.yaml
.kubectl apply -f azure-ultra-disk-sc.yaml
L'output dovrebbe essere simile all'output di esempio seguente:
storageclass.storage.k8s.io/ultra-disk-sc created
Creare un'attestazione di volume permanente
Un'attestazione di volume permanente viene usata per il provisioning automatico dell'archiviazione in una classe di archiviazione. In questo caso, un PVC può usare la classe di archiviazione creata in precedenza per creare un disco Ultra.
Creare un file denominato
azure-ultra-disk-pvc.yaml
e copiarlo nel manifesto seguente:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ultra-disk spec: accessModes: - ReadWriteOnce storageClassName: ultra-disk-sc resources: requests: storage: 1000Gi
L'attestazione richiede un disco denominato
ultra-disk
con dimensione di 1000 GB e accesso ReadWriteOnce. La classe di archiviazione ultra-disk-sc viene specificata come classe di archiviazione.Creare l'attestazione di volume persistente usando il comando
kubectl apply
e specifica il fileazure-ultra-disk-pvc.yaml
.kubectl apply -f azure-ultra-disk-pvc.yaml
L'output dovrebbe essere simile all'output di esempio seguente:
persistentvolumeclaim/ultra-disk created
Usare il volume permanente
Dopo aver creato l'attestazione di volume persistente e aver effettuato il provisioning del disco, è possibile creare un pod con accesso al disco. Il manifesto seguente crea un pod NGINX di base che usa l'attestazione di volume persistente denominata ultra-disk per montare il disco di Azure nel percorso /mnt/azure
.
Creare un file denominato
nginx-ultra.yaml
e copiarlo nel manifesto seguente: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
Creare il pod usando il comando
kubectl apply
e specificare il filenginx-ultra.yaml
.kubectl apply -f nginx-ultra.yaml
L'output dovrebbe essere simile all'output di esempio seguente:
pod/nginx-ultra created
A questo punto è disponibile un pod in esecuzione con il disco di Azure montato nella directory
/mnt/azure
.Visualizzare i dettagli di configurazione usando il comando
kubectl describe pod
e specificare il filenginx-ultra.yaml
.kubectl describe pod nginx-ultra
L'output dovrebbe essere simile all'output di esempio seguente:
[...] 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" [...]
Passaggi successivi
- Per altre informazioni sui dischi Ultra, vedere Uso di dischi Ultra di Azure.
- Per ulteriori informazioni sulle procedure consigliate, vedere Procedure consigliate per archiviazione e backup nel servizio Azure Kubernetes.
Azure Kubernetes Service