Condividi tramite


Usare il driver CSI lustre gestito di Azure con servizio Azure Kubernetes

Questo articolo illustra come pianificare, installare e usare Lustre gestito di Azure in servizio Azure Kubernetes con driver CSI di Azure Lustre per Kubernetes. Questo driver si basa sulla specifica CSI (Container Support Interface).

È possibile utilizzare il driver CSI Azure Lustre per accedere all'archiviazione gestita Azure Managed Lustre come volumi di archiviazione persistenti dai contenitori Kubernetes distribuiti nel servizio Azure Kubernetes (AKS).

Versioni di Kubernetes compatibili

Il driver CSI di Lustre di Azure per Kubernetes è compatibile con AKS . Altre installazioni di Kubernetes non sono attualmente supportate.

Sono supportate le versioni di Kubernetes 1.21 e successive del servizio Azure Kubernetes. Questo supporto include tutte le versioni attualmente disponibili quando si crea un nuovo cluster AKS.

Importante

Il driver CSI di Azure Lustre per Kubernetes attualmente funziona solo con lo SKU del sistema operativo Ubuntu Linux per i pool di nodi di Azure Kubernetes Service.

Versioni lustre compatibili

Il driver CSI di Azure Lustre per Kubernetes è compatibile con Azure Managed Lustre. Altre installazioni lustre non sono attualmente supportate.

I driver CSI di Azure Lustre per Kubernetes nelle versioni 0.1.10 e successive sono supportati con la versione corrente del servizio Azure Managed Lustre.

Prerequisiti

Pianifica la distribuzione AKS

Quando si distribuisce Azure Kubernetes Service, diverse opzioni influiscono sull'operazione tra AKS e Azure Lustre gestito.

Determinare il tipo di rete da usare con il servizio Azure Kubernetes

Due tipi di rete sono compatibili con lo SKU del sistema operativo Ubuntu Linux: kubenet e il driver CNI (Azure Container Network Interface). Entrambe le opzioni funzionano con il driver CSI di Azure Lustre per Kubernetes, ma hanno requisiti diversi che è necessario comprendere quando imposti la rete virtuale e AKS. Per ulteriori informazioni su come determinare la selezione corretta, vedere concetti di rete per le applicazioni nel servizio Azure Kubernetes Service (AKS).

Determinare l'architettura di rete per l'interconnettività di AKS e di Azure Managed Lustre.

Lustre gestito di Azure opera all'interno di una rete virtuale privata. L'istanza AKS deve avere connettività di rete alla rete virtuale Azure Managed Lustre. Esistono due modi comuni per configurare la rete tra Azure Managed Lustre e il servizio Azure Kubernetes (AKS).

  • Installare AKS nella propria rete virtuale e creare un peering di rete virtuale con la rete virtuale gestita di Azure Lustre.
  • Utilizzare l'opzione Bring your own Azure virtual network in AKS per installare AKS in una nuova subnet sulla rete virtuale Azure Managed Lustre.

Nota

Non è consigliabile installare AKS nella stessa subnet di Azure Managed Lustre.

Peering del servizio Azure Kubernetes e reti virtuali lustre gestite di Azure

L'opzione per eseguire il peering di due reti virtuali offre il vantaggio di separare la gestione delle reti in ruoli con privilegi diversi. Il peering può anche offrire una maggiore flessibilità, perché è possibile implementarla tra sottoscrizioni o aree di Azure. Il peering di rete virtuale richiede il coordinamento tra le due reti per evitare di scegliere spazi di rete IP in conflitto.

Diagramma che mostra due reti virtuali, una per Azure Managed Lustre e una per Azure Kubernetes Service (AKS), con una freccia di peering che le connette.

Installazione di AKS in una subnet nella rete virtuale Azure Managed Lustre

L'opzione per installare il cluster del servizio Azure Kubernetes nella rete virtuale Lustre gestita di Azure con la funzionalità Bring Your Own Azure Virtual Network nel servizio Azure Kubernetes può essere vantaggiosa negli scenari in cui la rete viene gestita singolarmente. ** È necessario creare una subnet aggiuntiva, dimensionata per soddisfare i requisiti di rete di Azure Kubernetes Service, nella rete virtuale Lustre gestita di Azure.

Quando si esegue il provisioning di AKS sulla rete virtuale Azure Managed Lustre, non esiste alcuna separazione dei privilegi per la gestione della rete. L'entità servizio di AKS ha bisogno di privilegi sulla rete virtuale Azure Managed Lustre.

Diagramma che mostra una rete virtuale Lustre gestita da Azure con due subnet, una per il file system Lustre e una per AKS.

Configurare il driver

Per abilitare il driver CSI di Azure Lustre per Kubernetes, seguire questa procedura:

  1. Creare un cluster del file system Azure Lustre gestito.

  2. Creare un cluster di AKS.

  3. Creazione di un peering di rete virtuale.

  4. Installare il driver.

  5. Creare e configurare un volume permanente.

  6. Verificare l'installazione utilizzando facoltativamente un pod echo per confermare che il driver funzioni.

Le sezioni seguenti descrivono in modo più dettagliato ogni attività.

Creare un cluster di file system Azure Managed Lustre

Se il cluster del file system lustre gestito di Azure non è già stato creato, creare ora il cluster. Per istruzioni, vedere Creare un file system gestito Lustre di Azure utilizzando il portale di Azure. Attualmente, il driver può essere usato solo con un file system esistente Azure Managed Lustre.

Creare un cluster del servizio Azure Kubernetes Service

Se il cluster del servizio Azure Kubernetes non è già stato creato, creare una distribuzione del cluster. Consultare Distribuire un cluster del Servizio Azure Kubernetes (AKS) usando il portale di Azure.

Creare un peering di rete virtuale

Nota

Ignora questo passaggio di peering di rete se hai installato AKS in una subnet nella rete virtuale gestita Azure Lustre.

La rete virtuale del servizio Azure Kubernetes viene creata in un gruppo di risorse separato dal gruppo di risorse del cluster del servizio Azure Kubernetes. Per trovare il nome di questo gruppo di risorse, passare al cluster AKS nel portale di Azure, andare a Proprietàe trovare il gruppo di risorse Infrastruttura. Questo gruppo di risorse contiene la rete virtuale che deve essere associata alla rete virtuale Lustre gestita di Azure. Corrisponde al modello >.

Per eseguire il peering della rete virtuale AKS con la rete virtuale Azure Managed Lustre, consultare Peering di rete virtuale.

Suggerimento

A causa della denominazione dei gruppi di risorse e delle reti virtuali MC_, i nomi delle reti possono essere simili o uguali in più distribuzioni del servizio Azure Kubernetes. Quando si configura il peering, prestare attenzione a scegliere le reti AKS che si intende utilizzare.

Connettersi al cluster servizio Azure Kubernetes

  1. Aprire una sessione del terminale con accesso agli strumenti dell'interfaccia della riga di comando di Azure e accedere all'account Azure:

    az login
    
  2. Accedere al portale di Azure.

  3. Trovare il cluster del servizio Azure Kubernetes. Nel riquadro Panoramica selezionare il pulsante Connetti e quindi copiare il comando per Scaricare le credenziali del cluster.

  4. Nella sessione del terminale incollare il comando per scaricare le credenziali. Il comando è simile al seguente:

    az aks get-credentials --subscription <AKS_subscription_id> --resource_group <AKS_resource_group_name> --name <name_of_AKS>
    
  5. Installare kubectl se non è presente nell'ambiente:

    az aks install-cli
    
  6. Verificare che il contesto corrente sia il cluster AKS dove hai appena installato le credenziali e che puoi connetterti ad esso.

    kubectl config current-context
    kubectl get deployments --all-namespaces=true
    

Installare il driver

Per installare il driver CSI di Azure Lustre per Kubernetes, eseguire il comando seguente:

curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/azurelustre-csi-driver/main/deploy/install-driver.sh | bash

Per ottenere comandi di esempio per un'installazione locale, vedere Installare il driver CSI di Azure Lustre in un cluster Kubernetes.

Creare e configurare un volume permanente

Per creare un volume persistente per un file system Lustre esistente gestito da Azure:

  1. Copiare i file di configurazione seguenti dalla cartella /docs/examples/ nel repository azurelustre-csi-driver . Se il repository è stato clonato quando si installato il driver, sono già disponibili copie locali.

    • storageclass_existing_lustre.yaml
    • pvc_storageclass.yaml

    Se non si vuole clonare l'intero repository, è possibile scaricare ogni file singolarmente. Aprire ognuno dei collegamenti seguenti, copiare il contenuto del file e quindi incollare il contenuto in un file locale con lo stesso nome file.

  2. Nel file storageclass_existing_lustre.yaml, aggiornare il nome interno del cluster Lustre e l'indirizzo IP del Servizio di Gestione Lustre (MGS).

    Screenshot del file storageclass_existing_lustre.yaml con i valori da sostituire evidenziati.

    Entrambe le impostazioni vengono visualizzate nel portale di Azure, nel riquadro connessione client per il file system Azure Managed Lustre.

    Screenshot del riquadro per la connessione client nel portale di Azure. L'indirizzo IP MGS e il nome

    Apportare questi aggiornamenti:

    • Sostituire EXISTING_LUSTRE_FS_NAME con il nome interno assegnato dal sistema del cluster Lustre nel file system lustre gestito di Azure. Il nome interno è in genere lustrefs. Il nome interno non è il nome assegnato al file system al momento della creazione.

      Il comando suggerito mount include il nome evidenziato nella stringa di indirizzo seguente.

      Screenshot di una stringa di indirizzo di esempio nel riquadro per la connessione client. Il nome interno del cluster Lustre è evidenziato.

    • Sostituire EXISTING_LUSTRE_IP_ADDRESS con l'indirizzo IP MGS.

  3. Per creare la classe di archiviazione e l'attestazione del volume permanente, eseguire il comando seguente kubectl :

    kubectl create -f storageclass_existing_lustre.yaml
    kubectl create -f pvc_storageclass.yaml
    

Controllare l'installazione

Se vuoi verificare la tua installazione, puoi usare facoltativamente un echo pod per confermare che il driver sia funzionante.

Per visualizzare i timestamp nella console durante le scritture, eseguire i comandi seguenti:

  1. Aggiungere il codice seguente al pod echo:

    while true; do echo $(date) >> /mnt/lustre/outfile; tail -1 /mnt/lustre/outfile; sleep 1; done
    
  2. Per visualizzare i timestamp nella console durante le scritture, eseguire il comando kubectl seguente:

    `kubectl logs -f lustre-echo-date`