Installare Archiviazione di Azure Container per l'uso con il Servizio Azure Kubernetes

Archiviazione contenitori di Azure è un servizio di gestione, distribuzione e orchestrazione basato sul cloud creato per i contenitori. Usare questa esercitazione per installare la versione di produzione più recente di Azure Container Storage su un cluster di Servizio Azure Kubernetes (AKS), sia che si crei un nuovo cluster o si abiliti il servizio su un cluster esistente.

Questo articolo spiega come installare Azure Container Storage utilizzando due flussi supportati (solo installatore o installatore + funzionalità), come viene attivata l'installazione dei componenti e come verificare e risolvere i problemi della distribuzione. I tipi di archiviazione con volume persistente installano driver che implementano Container Storage Interface (CSI). Azure Container Storage può anche abilitare e gestire l'acceleratore distribuito per l'archiviazione cloud (DACS), che installa un'estensione separata e non crea una StorageClass.

Se si preferisce la versione open-source di Azure Container Storage, vedere il repository local-csi-driver per istruzioni di installazione alternative.

Al termine di questa esercitazione, è possibile:

  • Preparare l'ambiente di interfaccia della riga di comando di Azure
  • Creare o selezionare un gruppo di risorse per il cluster
  • Verificare che i tipi di macchina virtuale del pool di nodi soddisfino i criteri di installazione
  • Installare Azure Container Storage creando un nuovo cluster AKS o abilitandolo su un cluster esistente.

Importante

Questo articolo si applica ad Azure Container Storage (versione 2.x.x). Per le versioni precedenti, consultare la documentazione di Azure Container Storage (versione 1.x.x). Se nel cluster di Azure Kubernetes Service è già installato Azure Container Storage (versione 1.x.x), rimuoverlo seguendo questi passaggi.

Prerequisiti

  • Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

  • Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.83.0 o successiva. Per ulteriori informazioni, vedere Come installare l'interfaccia della riga di comando di Azure. Disabilitare le estensioni, ad aks-preview esempio se si verificano problemi. Installare o aggiornare le estensioni in base alle esigenze:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (Elastic SAN solo)
  • È necessario il client della riga di comando Kubernetes, kubectl. È già installato se si usa Azure Cloud Shell. È possibile installarlo in locale eseguendo il az aks install-cli comando .

  • Controllare se l'area di destinazione è supportata nelle aree di Azure Container Storage.

  • Pianificare la configurazione del pool di nodi:

    • Usare Linux come tipo di sistema operativo (Windows non è supportato).
    • Selezionare uno SKU di macchina virtuale (VM) che supporta dischi dati NVMe locali se si prevede di usare il tipo di archiviazione NVMe locale, ad esempio macchine virtuali ottimizzate per l'archiviazione o con accelerazione GPU .
    • Per i cluster esistenti, assicurati che i pool di nodi utilizzino già uno SKU di macchina virtuale supportato prima di abilitare Azure Container Storage.
  • Se si usa Elastic SAN per la prima volta nella sottoscrizione, eseguire questo comando di registrazione monouso:

    az provider register --namespace Microsoft.ElasticSan
    

Impostare il contesto della sottoscrizione

Impostare il contesto della sottoscrizione di Azure usando il comando az account set. È possibile visualizzare gli ID sottoscrizione eseguendo az account list --output table. Sostituire <subscription-id> con l'ID della sottoscrizione.

az account set --subscription <subscription-id>

Creare un gruppo di risorse

Un gruppo di risorse di Azure è un contenitore logico per le risorse. Quando si crea un gruppo di risorse, si specifica una posizione. Tale posizione archivia i metadati del gruppo di risorse e funge da area predefinita per le risorse create senza un'area esplicita.

Per creare un gruppo di risorse, usare il comando az group create. Sostituire <resource-group-name> con il nome del gruppo di risorse e <location> con un'area di Azure, eastusad esempio , westus2westus3, o westeurope. Se si abilita Azure Container Storage su un cluster AKS esistente, utilizzare il gruppo di risorse che ospita già il cluster.

az group create --name <resource-group-name> --location <location>

Se il gruppo di risorse viene creato correttamente, viene visualizzato un output simile a questo esempio:

{
  "id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
  "location": "eastus",
  "managedBy": null,
  "name": "myContainerStorageRG",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Installare Azure Container Storage su un nuovo cluster di Azure Kubernetes Service (AKS)

Scegliere lo scenario corrispondente all'ambiente.

Importante

Azure Container Storage installa la versione principale più recente per impostazione predefinita. È possibile fissare una versione principale con --container-storage-version. Non è possibile fissare versioni secondarie o patch.

Installazione solo per installatore

Eseguire il comando seguente per creare un nuovo cluster AKS e installare Azure Container Storage. Sostituire <cluster-name> e <resource-group> con i propri valori e specificare il tipo di VM da usare.

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage --generate-ssh-keys

La distribuzione può richiedere fino a 5 minuti. L'installazione del driver CSI viene posticipata fino a quando non si crea una classe di archiviazione o si abilita un tipo di archiviazione in un secondo momento.

Seguire le istruzioni per creare una classe di archiviazione NVMe locale o una classe di archiviazione SAN elastica .

Installazione del programma Installer e del tipo di installazione di archiviazione

Eseguire il comando seguente per creare un nuovo cluster AKS e installare Azure Container Storage. Sostituire <cluster-name> e <resource-group> con i propri valori e specificare il tipo di VM da usare.

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage ephemeralDisk --generate-ssh-keys

Questo comando installa il programma di installazione, distribuisce il driver NVMe CSI locale e crea una classe di archiviazione predefinita denominata local-csi. È possibile installare e usare sia NVMe locale che SAN elastico fornendo un elenco, ephemeralDisk elasticSanad esempio .

Installare Azure Container Storage su un cluster AKS esistente

Installazione solo per installatore

Eseguire il comando seguente per abilitare Azure Container Storage su un cluster AKS esistente. Sostituire <cluster-name> e <resource-group> con valori personalizzati.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage

La distribuzione può richiedere fino a 5 minuti. Quando il processo si completa, il cluster ha installato il componente del programma di installazione di Archiviazione Azure Container. L'installazione del driver CSI viene posticipata fino a quando non si crea una classe di archiviazione o si abilita un tipo di archiviazione in un secondo momento. Seguire le istruzioni per creare una classe di archiviazione NVMe locale o una classe di archiviazione SAN elastica .

Installazione del programma Installer e del tipo di installazione di archiviazione

Eseguire il comando seguente per abilitare Azure Container Storage su un cluster AKS esistente. Sostituire <cluster-name> e <resource-group> con i propri valori e specificare il tipo di archiviazione da usare.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage elasticSan

Questo comando installa il programma di installazione, distribuisce il driver ELASTIC SAN CSI e crea una classe di archiviazione predefinita denominata azuresan-csi. È possibile installare e usare sia NVMe locale che SAN elastico fornendo un elenco, ephemeralDisk elasticSanad esempio .

Installa un acceleratore distribuito per l'archiviazione cloud (anteprima)

Abilita l'acceleratore distribuito per lo storage cloud su un cluster AKS esistente utilizzando il distributedAccelerator valore. È richiesta la maiuscola A. L'estensione si installa sulla risorsa AKS managed cluster; non è necessario collegare il cluster tramite Arc.

Usa aks-preview la versione 22.0.0b9 o una successiva. Installa o aggiorna l'estensione, verifica la sua versione e installa o aggiorna connectedk8s e k8s-extension per gestire e ispezionare l'estensione DACS:

az extension add --name aks-preview --upgrade --yes
az extension show --name aks-preview --query version --output tsv
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes

Prima di abilitare DACS, seleziona un pool di nodi Linux con dischi dati NVMe locali dedicati alla cache. Applica l'etichetta dacs.azure.com/processing-unit=cpu attraverso la configurazione del node-pool, preservando eventuali etichette personalizzate esistenti. Seguire la procedura Verificare il pool di nodi della cache.

Caution

Abilitando DACS si installa un DaemonSet prerequisito che scopre, formatta e monta dischi NVMe locali su nodi di cache etichettati. Etichetta solo i nodi con dischi che non sono rivendicati da un altro componente di archiviazione.

Esegui il seguente comando, sostituendo <cluster-name> e <resource-group> con i tuoi valori:

az aks update \
  --name <cluster-name> \
  --resource-group <resource-group> \
  --enable-azure-container-storage distributedAccelerator

Questo comando installa l'estensione distributedaccelerator , il controller DACS e il prerequisito NVMe DaemonSet in kube-system, e la caches.storage.azure.com definizione personalizzata della risorsa (CRD). Non installi un chart separato dei prerequisiti né gestisci tu stesso la release Helm dell'estensione. Non crea una StorageClass né provisiona una risorsa Cache e pod di server cache di default. L'installazione riuscita di un'estensione non significa da sola che una cache sia pronta per il traffico applicativo.

Specifica distributedAccelerator da solo in questo comando invece di combinarlo con le opzioni di archiviazione del volume persistente mostrate prima. Prima di provisionare i server cache, verifica che i prerequisiti gestiti siano pronti su ogni nodo della cache etichettato. Per la configurazione della cache e il flusso di lavoro dell'applicazione, vedere Introduzione all'acceleratore distribuito per l'archiviazione cloud nel servizio Azure Kubernetes.

Per rimuovere DACS, segui Rimuovere l'acceleratore distribuito per l'archiviazione cloud. Elimina le risorse della cache mentre il controller è in funzione, poi disabilita il DACS. La disabilitazione rimuove il controller e il prerequisito gestito DaemonSet; non rimuovere quei prerequisiti separatamente.

  • Preparare Terraform ed eseguire l'autenticazione in Azure
  • Definire il gruppo di risorse e la configurazione del cluster AKS
  • Verificare che i tipi di macchina virtuale del pool di nodi soddisfino i criteri di installazione
  • Applicare Terraform per distribuire Archiviazione di Container Azure o abilitarlo su un cluster esistente

Importante

Questo articolo si applica ad Azure Container Storage (versione 2.x.x). Per le versioni precedenti, consultare la documentazione di Azure Container Storage (versione 1.x.x). Se nel cluster di Azure Kubernetes Service è già installato Azure Container Storage (versione 1.x.x), rimuoverlo seguendo questi passaggi.

Prerequisiti

  • Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

  • Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.83.0 o successiva. Per ulteriori informazioni, vedere Come installare l'interfaccia della riga di comando di Azure. Disabilitare le estensioni, ad aks-preview esempio se si verificano problemi. Installare o aggiornare le estensioni in base alle esigenze:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (Elastic SAN solo)
  • È necessario il client della riga di comando Kubernetes, kubectl. È già installato se si usa Azure Cloud Shell. È possibile installarlo in locale eseguendo il az aks install-cli comando .

  • Controllare se l'area di destinazione è supportata nelle aree di Azure Container Storage.

  • Pianificare la configurazione del pool di nodi:

    • Usare Linux come tipo di sistema operativo (Windows non è supportato).
    • Selezionare uno SKU di macchina virtuale (VM) che supporta dischi dati NVMe locali, ad esempio macchine virtuali ottimizzate per l'archiviazione o con accelerazione GPU .
    • Per i cluster esistenti, assicurati che i pool di nodi utilizzino già uno SKU di macchina virtuale supportato prima di abilitare Azure Container Storage.
  • Installare Terraform versione 1.5 o successiva e confermare l'installazione con terraform version. Terraform può riutilizzare l'autenticazione del CLI di Azure.

  • Se si usa Elastic SAN per la prima volta nella sottoscrizione, eseguire questo comando di registrazione monouso:

    az provider register --namespace Microsoft.ElasticSan
    

Impostare il contesto della sottoscrizione

Terraform può determinare una sottoscrizione di Azure di destinazione tramite più metodi:

  • subscription_id nel blocco del provider
  • ARM_SUBSCRIPTION_ID variabile di ambiente
  • Sottoscrizione predefinita di interfaccia della riga di comando di Azure
  • Identità gestita (in esecuzione in Azure)

Per l'uso locale, impostare il contesto della CLI di Azure:

az account set --subscription <subscription-id>

Se si esegue la distribuzione con Terraform per la prima volta nella sottoscrizione, eseguire questo comando di registrazione monouso:

az provider register --namespace Microsoft.KubernetesConfiguration

# Wait for registration to complete (can take a few minutes)
az provider show --namespace Microsoft.KubernetesConfiguration --query "registrationState" -o tsv

Installare Azure Container Storage su un nuovo cluster di Azure Kubernetes Service (AKS)

Importante

Azure Container Storage installa automaticamente la versione più recente disponibile e si aggiorna da solo. La selezione manuale della versione non è supportata.

  1. In una cartella di lavoro vuota, crea il file main.tf con la seguente configurazione minima di un cluster AKS. Aggiornare i nomi, le posizioni e le dimensioni delle macchine virtuali per soddisfare i requisiti.

    terraform {
      required_version = ">= 1.5.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    resource "azurerm_resource_group" "rg" {
      name     = "demo-aks-rg"
      location = "eastus"
    }
    
    resource "azurerm_kubernetes_cluster" "aks" {
      name                = "demo-aks-cluster"
      dns_prefix          = "demo-aks"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
    
      default_node_pool {
        name       = "systempool"
        vm_size    = "Standard_L8s_v3"
        node_count = 3
      }
    
      identity {
        type = "SystemAssigned"
      }
    }
    
    resource "azurerm_kubernetes_cluster_extension" "container_storage" {
      # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
      name           = "acstor"
      cluster_id     = azurerm_kubernetes_cluster.aks.id
      extension_type = "microsoft.azurecontainerstoragev2"
    }
    
  2. Inizializza la directory di lavoro per scaricare il provider AzureRM.

    terraform init
    
  3. Esaminare le modifiche pianificate.

    terraform plan
    
  4. Applicare la configurazione per creare il gruppo di risorse, il cluster AKS e l'estensione Azure Container Storage. La distribuzione richiede in genere 5 minuti.

    terraform apply
    

Quando il processo si completa, il cluster ha installato il componente del programma di installazione di Archiviazione Azure Container. L'installazione del driver CSI viene posticipata fino a quando non si crea una classe di archiviazione. Seguire le istruzioni per creare una classe di archiviazione NVMe locale o una classe di archiviazione SAN elastica .

Installare Azure Container Storage su un cluster AKS esistente

Se il tuo cluster AKS esiste già e viene gestito all'esterno di Terraform, è comunque possibile abilitare Azure Container Storage definendo solo la risorsa di estensione. Usare un'origine dati per cercare l'ID cluster.

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.0"
    }
  }
}

provider "azurerm" {
  features {}
}

data "azurerm_kubernetes_cluster" "existing" {
  name                = "existing-aks"
  resource_group_name = "existing-aks-rg"
}

resource "azurerm_kubernetes_cluster_extension" "container_storage" {
  # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
  name           = "acstor"
  cluster_id     = data.azurerm_kubernetes_cluster.existing.id
  extension_type = "microsoft.azurecontainerstoragev2"
}

Eseguire terraform init (se si tratta di una nuova directory di lavoro) seguito da terraform apply per installare Azure Container Storage sul cluster di destinazione. La distribuzione richiede in genere 5 minuti.

Quando il processo si completa, il cluster ha installato il componente del programma di installazione di Archiviazione Azure Container. L'installazione del driver CSI viene posticipata fino a quando non si crea una classe di archiviazione. Seguire le istruzioni per creare una classe di archiviazione NVMe locale o una classe di archiviazione SAN elastica .

Verifica l'installazione

Connettersi al cluster AKS

Prima di eseguire i comandi di verifica, assicurarsi che kubeconfig locale sia impostato sul cluster di destinazione:

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Se si gestiscono più cluster, aggiungere --overwrite-existing per sostituire un contesto esistente o usare --context per impostare un nome di contesto univoco.

Verificare l'installatore (modalità solo installatore)

Dopo aver abilitato la modalità solo programma di installazione, verificare che il programma di installazione sia presente:

kubectl get deploy -n kube-system | grep acstor

Output previsto:

acstor-cluster-manager                2/2     2            2           4d9h
acstor-geneva                         2/2     2            2           4d9h

Verificare l'acceleratore distribuito per l'archiviazione cloud

Per un'installazione DACS, controlla l'estensione invece di cercare una StorageClass:

az k8s-extension show \
  --cluster-type managedClusters \
  --cluster-name <cluster-name> \
  --resource-group <resource-group> \
  --name distributedaccelerator \
  --query '{extensionType:extensionType,provisioningState:provisioningState,currentVersion:currentVersion,releaseTrain:releaseTrain}' \
  --output table

Conferma che il tipo di estensione sia microsoft.distributedaccelerator e che il suo stato di provisioning sia Succeeded. Il currentVersion campo mostra la versione installata. Il nome della risorsa dell'estensione è minuscolo distributedaccelerator, a differenza dell'opzione distributedAcceleratordi memorizzazione CLI .

Dopo esserti collegato al cluster, verifica il controller, il DaemonSet prerequisito e il CRD:

kubectl rollout status deployment/dacs-manager --namespace kube-system --timeout=5m
kubectl get deployment dacs-manager --namespace kube-system
kubectl rollout status daemonset/dacs-prereq --namespace kube-system --timeout=10m
kubectl get daemonset dacs-prereq --namespace kube-system
kubectl get pods --namespace kube-system --selector app.kubernetes.io/name=dacs-prereq --output wide
kubectl get crd caches.storage.azure.com

Continuare solo dopo che l'estensione è nello Succeeded stato, il controller ha una replica pronta e il DaemonSet prerequisito ha un pod Ready su ogni nodo della cache etichettato. Un DaemonSet con zero repliche desiderate non verifica la preparazione NVMe. Se il controllo non riesce, vedere Risolvere i problemi di un acceleratore distribuito per l'archiviazione cloud.

I passaggi di verifica della classe di storage e dei driver CSI che seguono si applicano ai tipi di storage a volume persistente, non ai DACS.

Verificare la presenza della classe di archiviazione

Dopo aver creato una classe di archiviazione o aver abilitato un tipo di archiviazione, verificare la classe di archiviazione:

kubectl get sc

Output di esempio:

NAME                    PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
azuresan-csi            san.csi.azure.com         Delete          Immediate              false                  4d7h
local-csi               localdisk.csi.acstor.io   Delete          WaitForFirstConsumer   true                   4d5h

Verificare l'installazione del driver

Verificare i componenti previsti dopo l'installazione della classe di archiviazione o del tipo di archiviazione:

kubectl get pod -n kube-system | grep acstor

Output di esempio:

pod/acstor-azuresan-csi-driver-jrqd2                       7/7     Running   0               142m
pod/acstor-azuresan-csi-driver-tcdp8                       7/7     Running   0               142m
pod/acstor-cluster-manager-76c67496f9-8ln5d                2/2     Running   0               3h54m
pod/acstor-cluster-manager-76c67496f9-b4c8q                2/2     Running   0               3h54m
pod/acstor-geneva-588bcbcc67-4tr5d                         3/3     Running   0               3h54m
pod/acstor-geneva-588bcbcc67-k7j7k                         3/3     Running   0               3h54m
pod/acstor-node-agent-46v47                                1/1     Running   0               142m
pod/acstor-node-agent-6c99m                                1/1     Running   0               142m
pod/acstor-otel-collector-4lfgz                            1/1     Running   0               142m
pod/acstor-otel-collector-hw9nd                            1/1     Running   0               142m

Risoluzione dei problemi

Per il debug, controllare il sistema durante il dispiegamento dei componenti.

kubectl get events -n kube-system --watch
kubectl get pod -n kube-system --watch

Esaminare le risorse personalizzate HelmRelease e OCIRepository usate dal programma di installazione:

kubectl describe helmreleases.helm.installer.acstor.io -n kube-system
kubectl describe ocirepositories.source.installer.acstor.io -n kube-system

Passaggi successivi