Share via


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

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.

  1. 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
    
  2. Creare la classe di archiviazione usando il comando kubectl apply e specifica il file azure-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.

  1. 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.

  2. Creare l'attestazione di volume persistente usando il comando kubectl apply e specifica il file azure-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.

  1. 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
    
  2. Creare il pod usando il comando kubectl apply e specificare il file nginx-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.

  3. Visualizzare i dettagli di configurazione usando il comando kubectl describe pod e specificare il file nginx-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