Condividi tramite


Tutorial - Distribuire Azure Container Storage (versione 1.x.x) su un cluster AKS

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.

Importante

Questo articolo illustra come installare Archiviazione di Container Azure (versione 1.x.x), che ora richiede in modo esplicito un parametro --container-storage-version 1 di blocco della versione per l'installazione. Azure Storage per i Contenitori (versione 2.x.x) è ora disponibile.

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.

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.
  • Esplorare più opzioni back-end di archiviazione per personalizzare l'archiviazione in base alle esigenze dell'applicazione.
  • Distribuire Azure Container Storage (versione 1.x.x) nel tuo cluster AKS e 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 richiede l'uso dell'interfaccia della riga di comando di Azure versione 2.35.0 o successiva. Il portale e PowerShell non sono attualmente supportati per Archiviazione contenitori di Azure. Controllare la versione con az --version. Per installare o eseguire l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. Se si usa l'ambiente Bash in Azure Cloud Shell, la versione più recente è già installata.
  • È necessario avere un cluster AKS basato su Linux esistente con almeno 3 nodi con SKU di VM ottimizzati per l'archiviazione o SKU di VM con accelerazione GPU. Vedere Esercitazione 3 - Creare un cluster AKS.
  • È necessario il client della riga di comando Kubernetes, kubectl. È già installato se si usa Azure Cloud Shell oppure è possibile installarlo in locale eseguendo il comando az aks install-cli.

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

Connettersi al cluster e controllare lo stato del nodo

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

  1. Eseguire il comando seguente per connettersi al cluster.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Verificare la connessione al cluster usando il comando kubectl get. Questo comando restituisce un elenco dei nodi del cluster.

    kubectl get nodes
    
  3. L'esempio di output seguente mostra i nodi nel cluster. Verificare che lo stato per tutti i nodi sia Pronto:

    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
    

Scegliere un'opzione di archiviazione di backup

Azure Container Storage (versione 1.x.x) utilizza i pool di archiviazione per provisionare e gestire volumi generici e persistenti. Offre un'ampia gamma di opzioni di archiviazione back-end per i pool di archiviazione, ognuno dei quali è adatto per carichi di lavoro specifici. La selezione del tipo di archiviazione appropriato è fondamentale per ottimizzare le prestazioni, la durabilità e l'efficienza dei costi del carico di lavoro. Per questa esercitazione si userà Ephemeral Disk con NVMe locale come risorsa di archiviazione di backup per creare un volume temporaneo generico.For this tutorial, we'll use Ephemeral Disk with local NVMe as backing storage to create a generic ephemeral volume. Verranno tuttavia esaminate anche le altre opzioni di archiviazione di backup che consentono di creare volumi persistenti.

Dischi temporanei

Il Disco Effimero utilizza le risorse di archiviazione locali sui nodi AKS (NVMe locale o SSD temporaneo). Offre bassa latenza sub-ms e operazioni di I/O al secondo elevate, ma nessuna persistenza dei dati se la macchina virtuale viene riavviata. Il disco temporaneo è particolarmente adatto per applicazioni come Cassandra che assegnano priorità alla velocità di persistenza ed è ideale per i carichi di lavoro con la replica a livello di applicazione.

È possibile usare il disco temporaneo per creare volumi temporanei generici o volumi permanenti, anche se i dati andranno persi se la macchina virtuale viene riavviata.

Dischi di Azure

Ideale per database come PostgreSQL e MongoDB, i dischi di Azure offrono opzioni di durabilità, scalabilità e prestazioni multilivello, tra cui SSD Premium e Ultra SSD.

I dischi di Azure consentono il provisioning automatico dei volumi di archiviazione e includono ridondanza predefinita e disponibilità elevata.

SAN elastico di Azure (anteprima)

Progettato per le esigenze di archiviazione condivisa e i database per utilizzo generico che richiedono scalabilità e disponibilità elevata, La san elastica di Azure è ideale per carichi di lavoro come pipeline CI/CD o elaborazione di dati su larga scala.

Abilitare Archiviazione Azure Container (versione 1.x.x) e creare un pool di archiviazione

Eseguire il seguente comando per installare Azure Container Storage sul cluster e creare un pool di archiviazione locale NVMe.

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

La distribuzione deve richiedere meno di 15 minuti.

Verificare lo stato del pool di archiviazione

Al termine della distribuzione, i componenti per il tipo di pool di archiviazione scelto verranno abilitati e si avrà un pool di archiviazione predefinito.

Per ottenere l'elenco dei pool di archiviazione disponibili, eseguire il comando seguente:

kubectl get sp -n acstor

Per controllare lo stato di un pool di archiviazione, eseguire il comando seguente:

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

Se Message non indica StoragePool is ready, il pool di archiviazione sta ancora creando o si è verificato un problema.

Visualizzare le classi di archiviazione disponibili

Quando il pool di archiviazione è pronto per l'uso, è necessario selezionare una classe di archiviazione per definire il modo in cui l'archiviazione viene creata dinamicamente durante la creazione e la distribuzione di volumi.

Eseguire kubectl get sc per visualizzare le classi di archiviazione disponibili. Verrà visualizzata una classe di archiviazione denominata acstor-<storage-pool-name>. Usare questa classe di archiviazione nella sezione successiva per distribuire un pod.

Distribuire un pod con un volume temporaneo generico

Creare un pod usando Fio (Tester di I/O Flessibile) per benchmarking e simulazione del carico di lavoro, utilizzando un volume effimero generico.

  1. Usare l'editor di testo preferito per creare un file manifesto YAML, ad esempio code acstor-pod.yaml.

  2. Incollare il codice seguente e salvare il file.

    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
    

    Se si modificano le dimensioni di archiviazione del volume, assicurarsi che le dimensioni siano inferiori alla capacità disponibile del disco temporaneo di un singolo nodo. Eseguire kubectl get diskpool -n acstor per controllare la capacità disponibile.

  3. Applicare il file manifesto YAML per distribuire il pod.

    kubectl apply -f acstor-pod.yaml
    

    Verrà visualizzato un output simile al seguente:

    pod/fiopod created
    
  4. Verificare che il pod sia in esecuzione e che l'attestazione del volume temporaneo sia stata associata correttamente al pod:

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    

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

Verificare la capacità disponibile dei dischi temporanei prima di effettuare il provisioning di volumi aggiuntivi:

kubectl describe node <node-name>

Per altre informazioni su Archiviazione Azure Container (versione 1.x.x), tra cui come creare volumi persistenti, vedere Che cos'è Archiviazione azure Container?

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 pool di archiviazione.

    kubectl delete sp -n acstor <storage-pool-name>
    
  3. Eliminare l'istanza dell'estensione.

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

Passo successivo

In questa esercitazione, hai distribuito Azure Container Storage (versione 1.x.x) sul cluster AKS. Ecco cosa hai imparato a fare:

  • Abilitare Archiviazione di Container Azure (versione 1.x.x) sul cluster del servizio Azure Kubernetes.
  • Scegliere un tipo di archiviazione di backup e creare un pool di archiviazione.
  • Distribuire un pod con un volume temporaneo generico.

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