Esercitazione - Distribuire Archiviazione di Container Azure in un cluster del servizio Azure Kubernetes

Questa esercitazione presenta l'archiviazione di Azure Container e illustra come distribuire e gestire l'archiviazione nativa del contenitore per le applicazioni in esecuzione nel servizio Azure Kubernetes. Se non si vuole distribuire Azure Container Storage, è possibile ignorare questa esercitazione e procedere direttamente a Distribuire un'applicazione in AKS. In questa serie di esercitazioni non sarà necessaria l'archiviazione di Azure Container per l'applicazione vetrina di base.

Archiviazione di Container Azure semplifica la gestione delle applicazioni con stato in Kubernetes offrendo l'archiviazione nativa del contenitore su misura per una varietà di carichi di lavoro, tra cui database, piattaforme di analisi e applicazioni ad alte prestazioni.

Importante

Questo tutorial si applica solo ai cluster AKS Standard. Se si è scelto AKS Automatic nell'esercitazione precedente, saltare questa esercitazione e continuare con Distribuire un'applicazione in AKS.

Al termine di questa esercitazione, si eseguiranno le seguenti attività:

  • Informazioni su come l'Archiviazione di Container di Azure supporta diversi tipi di carichi di lavoro in Kubernetes.
  • Distribuire Archiviazione di Container Azure nel cluster del servizio Azure Kubernetes.
  • Creare un volume temporaneo generico.

Prima di iniziare

Nelle esercitazioni precedenti, hai creato un'immagine del container, l'hai caricata in un'istanza di ACR (Azure Container Registry) e hai creato un cluster AKS (Azure Kubernetes Service). Iniziare con Esercitazione 1 - Preparare l'applicazione per il servizio Azure Kubernetes per proseguire.

Questa esercitazione crea risorse fatturabili e richiede le autorizzazioni per aggiornare le impostazioni del cluster AKS e installare le estensioni. Usare un'identità che disponga almeno dell'accesso Collaboratore al gruppo di risorse che contiene il cluster AKS.

  • Conferma che la regione di destinazione sia supportata esaminando la disponibilità regionale di Archiviazione di contenitori di Azure.

  • Installare la versione più recente di interfaccia della riga di comando di Azure (2.83.0 o successiva), quindi accedere con az login. Non usare Azure Cloud Shell perché az upgrade non è disponibile.

  • Installare il client della riga di comando di Kubernetes, kubectl. È possibile installarlo in locale eseguendo az aks install-cli. Per altre opzioni di installazione, vedere Installare kubectl.

Importante

Questa esercitazione si applica ad Azure Container Storage (versione 2.x.x), che supporta i dischi NVMe locali e SAN di Elastic in Azure come tipi di storage di supporto. Questa esercitazione usa NVMe locale e crea un volume temporaneo generico. Per usare NVMe locale, lo SKU della macchina virtuale deve supportare dischi dati NVMe locali, ad esempio macchine virtuali ottimizzate per l'archiviazione o con accelerazione GPU .

Se si preferisce usare SAN di Elastic in Azure, vedere Usare Azure Container Storage con SAN di Elastic in Azure.

Installare l'estensione Kubernetes

Aggiungere o eseguire l'aggiornamento alla versione più recente di k8s-extension eseguendo il comando seguente.

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

Verificare che l'estensione sia disponibile prima di continuare:

az extension show --name k8s-extension --query version --output tsv

Abilitare Azure Container Storage nel cluster AKS

Esegui il comando seguente per abilitare Azure Container Storage in un cluster AKS esistente usando NVMe locale. Azure Container Storage installa automaticamente la versione più recente disponibile e si aggiorna da solo. La selezione manuale della versione non è supportata.

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk

Se questo comando non riesce a causa di un errore di autorizzazione, eseguire az account show per verificare la sottoscrizione attiva e confermare che la tua identità disponga delle autorizzazioni necessarie per aggiornare il cluster AKS.

La distribuzione può richiedere fino a cinque minuti. Al termine, nel cluster del servizio Azure Kubernetes è installato Archiviazione di Container Azure e sono distribuiti i componenti per il tipo di archiviazione NVMe locale. Crea anche la classe di archiviazione predefinita local-csi .

Connettersi al cluster e verificare lo stato

Se non si è già connessi al cluster dall'esercitazione precedente, eseguire i comandi seguenti. Se si è già connessi, è possibile ignorare questa sezione.

  1. Scaricare le credenziali del cluster e configurare l'interfaccia della riga di comando di Kubernetes per usarle. Per impostazione predefinita, le credenziali vengono archiviate in ~/.kube/config. Specificare un percorso diverso usando l'argomento --file , se necessario.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

    Continuare dopo che il comando segnala che le voci di contesto sono state unite in ~/.kube/config.

  2. Verificare la connessione elencando i nodi del cluster.

    kubectl get nodes
    
  3. Assicurarsi che tutti i nodi segnalino uno stato di Ready.

Verificare la classe di archiviazione

Eseguire il comando seguente per verificare che la classe di archiviazione sia stata creata:

kubectl get storageclass local-csi

L'output dovrebbe essere simile al seguente:

NAME        PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-csi   localdisk.csi.acstor.io   Delete          WaitForFirstConsumer   true                   10s

Distribuire un pod con un volume temporaneo generico

Creare un pod usando Fio (Flexible I/O Tester o tester di I/O flessibile) per il benchmarking e la simulazione del carico di lavoro, che usa un volume temporaneo generico.

  1. Creare un file manifesto YAML denominato fiopod.yaml. Ad esempio, eseguire code fiopod.yaml.

  2. Incollare il codice seguente e salvare il file.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
        - name: fio
          image: mayadata/fio
          args: ["sleep", "1000000"]
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              spec:
                volumeMode: Filesystem
                accessModes: ["ReadWriteOnce"]
                storageClassName: local-csi
                resources:
                  requests:
                    storage: 10Gi
    
  3. Applicare il file manifesto YAML per distribuire il pod.

    kubectl apply -f fiopod.yaml
    

Verificare la distribuzione ed eseguire benchmark

Verificare che il pod sia in esecuzione:

kubectl get pod fiopod

Il pod verrà visualizzato nello stato In esecuzione. Dopo l'esecuzione, è possibile eseguire un test di benchmark Fio:

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

È stato ora distribuito un pod che usa NVMe locale come risorsa di archiviazione ed è possibile usarlo per i carichi di lavoro Kubernetes.

Per altre informazioni sull'archiviazione di Azure Container, vedere Che cos'è Archiviazione contenitori di Azure?

Pulire le risorse

Per il resto di questa serie di esercitazioni non è necessaria l'archiviazione di Azure Container, pertanto è consigliabile eliminarla ora per evitare di incorrere in addebiti di Azure non necessari.

  1. Eliminare il pod.

    kubectl delete pod fiopod
    
  2. Eliminare il volume generico temporaneo.

    kubectl delete pv ephemeralvolume
    

    Se questo comando restituisce NotFound, continuare. I volumi temporanei generici vengono eliminati automaticamente quando il pod viene eliminato.

  3. Eliminare l'istanza dell'estensione.

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

Passo successivo

In questo tutorial, hai distribuito Azure Container Storage nel tuo cluster AKS. Ecco cosa hai imparato a fare:

  • Abilita Azure Container Storage nel tuo cluster AKS.
  • Distribuire un pod con un volume temporaneo generico.

Nell'esercitazione successiva si apprenderà come distribuire un'applicazione nel cluster.