Cluster su Azure

Questo argomento descrive le modalità di configurazione dei cluster di carichi di lavoro Tanzu Kubernetes Grid (TKG) per l'utilizzo di funzionalità specifiche di Microsoft Azure, non interamente configurabili nel file di configurazione piatto del cluster o nelle specifiche degli oggetti di tipo Kubernetes.

Per informazioni su come configurare i cluster di carichi di lavoro su Azure utilizzando i file di configurazione e le specifiche degli oggetti, vedere File di configurazione dei cluster di Azure.

Cluster privati di Azure

Per impostazione predefinita, i cluster di gestione e i cluster del carico di lavoro di Azure sono pubblici. È comunque possibile configurarli come privati, il che significa che il loro server dell'API utilizza un bilanciamento del carico interno di Azure ed è quindi accessibile solo dalla VNet propria del cluster o dalle VNet in peer.

Per rendere privato un cluster di Azure, includere quanto segue nel suo file di configurazione:

  • Impostare AZURE_ENABLE_PRIVATE_CLUSTER su true.

  • (Facoltativo) Impostare AZURE_FRONTEND_PRIVATE_IP su un indirizzo interno per il bilanciamento del carico del cluster.

    • Questo indirizzo deve essere compreso nell'intervallo della subnet del piano di controllo e non deve essere utilizzato da un altro componente.
    • Se non viene impostato, per questo indirizzo viene utilizzato il valore predefinito che è 10.0.0.100.
  • Impostare AZURE_VNET_NAME, AZURE_VNET_CIDR, AZURE_CONTROL_PLANE_SUBNET_NAME, AZURE_CONTROL_PLANE_SUBNET_CIDR, AZURE_NODE_SUBNET_NAME e AZURE_NODE_SUBNET_CIDR sulla VNet e le subnet utilizzate per gli altri cluster privati di Azure.

    • Poiché i cluster privati di Azure non sono accessibili all'esterno della loro VNet, il cluster di gestione e tutti i cluster del carico di lavoro e dei servizi condivisi che gestisce devono trovarsi nella stessa VNet privata.
    • Anche la macchina di bootstrap, in cui viene eseguita la CLI di Tanzu per creare e utilizzare cluster privati, deve trovarsi nella stessa VNet privata.
  • (Facoltativo) Impostare AZURE_ENABLE_CONTROL_PLANE_OUTBOUND_LB e AZURE_ENABLE_NODE_OUTBOUND_LB su true se si desidera consentire al piano di controllo e ai nodi worker di accedere a Internet tramite una connessione Internet di Azure.

    • I cluster privati di Azure creano un indirizzo IP pubblico per ogni servizio Kubernetes di tipo Bilanciamento del carico (Load Balancer) per impostazione predefinita. Per configurare il servizio di bilanciamento del carico in modo che utilizzi un indirizzo IP privato, aggiungere l'annotazione seguente al manifest di distribuzione:

      ---
      metadata:
      annotations:
        service.beta.kubernetes.io/azure-load-balancer-internal: "true"
      

Per ulteriori informazioni, vedere API Server Endpoint nella documentazione di Azure relativa a Cluster API Provider.

Cluster in account Azure diversi

Tanzu Kubernetes Grid può eseguire cluster del carico di lavoro in più account della piattaforma di destinazione, ad esempio per dividere l'utilizzo del cloud tra team diversi o applicare profili di sicurezza diversi ai carichi di lavoro di produzione, staging e sviluppo.

Per distribuire cluster del carico di lavoro in un account dell'entità servizio di Azure alternativo, diverso da quello utilizzato per distribuire il cluster di gestione, eseguire i passaggi seguenti:

  1. Creare l'account Azure alternativo. È possibile utilizzare i dettagli di questo account per creare un elemento AzureClusterIdentity in un passaggio successivo. Per informazioni sulla creazione di un account dell'entità servizio di Azure, vedere Procedura: usare il portale per creare un'applicazione Azure AD e un'entità servizio che possano accedere alle risorse nella documentazione di Azure.

  2. Impostare il contesto di kubectl sul cluster di gestione:

    kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
    

    In cui MY-MGMT-CLUSTER è il nome del cluster di gestione.

  3. Creare un file secret.yaml con i contenuti seguenti:

    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET-NAME
    type: Opaque
    data:
      clientSecret: CLIENT-SECRET
    

    In cui:

    • SECRET-NAME è il nome segreto per la password del client.
    • CLIENT-SECRET è il segreto client dell'identità dell'entità servizio. Il segreto client deve essere codificato in base64.
  4. Utilizzare il file per creare l'oggetto Secret:

    kubectl apply -f secret.yaml
    
  5. Creare un file identity.yaml con i contenuti seguenti:

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: AzureClusterIdentity
    metadata:
      name: EXAMPLE-IDENTITY
      namespace: EXAMPLE-NAMESPACE
    spec:
      type: ManualServicePrincipal
      tenantID: AZURE-TENANT-ID
      clientID: CLIENT-ID
      clientSecret: {"name":"SECRET-NAME","namespace":"default"}
      allowedNamespaces:
        list:
        - CLUSTER-NAMESPACE-1
        - CLUSTER-NAMESPACE-1
    

    In cui:

    • EXAMPLE-IDENTITY è il nome da utilizzare per AzureClusterIdentity.
    • EXAMPLE-NAMESPACE è lo spazio dei nomi per AzureClusterIdentity.
    • AZURE-TENANT-ID è l'ID tenant di Azure.
    • CLIENT-ID è l'ID client (noto anche come AppID) per l'applicazione Azure AD.
    • SECRET-NAME è il nome segreto per la password del client.
    • CLUSTER-NAMESPACE-1 e CLUSTER-NAMESPACE-2 sono spazi dei nomi Kubernetes le cui identità possono utilizzate dai cluster. Questi spazi dei nomi possono essere selezionati utilizzando un array di spazi dei nomi.
  6. Utilizzare il file per creare l'oggetto AzureClusterIdentity:

    kubectl apply -f identity.yaml
    

Il cluster di gestione può ora distribuire cluster del carico di lavoro nell'account alternativo utilizzando il nuovo oggetto AzureClusterIdentity.

Per creare cluster del carico di lavoro che utilizzano l'account Azure alternativo, includere le variabili seguenti nel file di configurazione del cluster:

AZURE_IDENTITY_NAME: EXAMPLE-IDENTITY
AZURE_IDENTITY_NAMESPACE: EXAMPLE-NAMESPACE

In cui:

  • EXAMPLE-IDENTITY è il nome da utilizzare per AzureClusterIdentity.
  • EXAMPLE-NAMESPACE è lo spazio dei nomi per AzureClusterIdentity.

Dopo aver creato il cluster del carico di lavoro, accedere al portale di Azure utilizzando l'account alternativo. Verrà visualizzato il cluster in esecuzione.

Cluster abilitati per GPU

Esistono due modi per distribuire cluster del carico di lavoro abilitati per NVIDIA GPU in Azure:

  • Creare un cluster del carico di lavoro con worker GPU e installare manualmente un criterio GPU e un operatore nel cluster
  • (Anteprima tecnica) Configurare il cluster di gestione con un ClusterResourceSet (CRS) per creare automaticamente uno o più cluster del carico di lavoro abilitati per GPU

Le sottosezioni seguenti includono informazioni su questi due approcci e su come testare i cluster abilitati per GPU.

Distribuzione e abilitazione per GPU di un singolo cluster

Per distribuire un cluster del carico di lavoro e configurarlo manualmente per l'utilizzo delle macchine virtuali NVIDIA GPU disponibili in Azure:

  1. Nel file di configurazione per il cluster impostare AZURE_NODE_MACHINE_TYPE per i nodi worker su un tipo di macchina virtuale compatibile con la GPU, ad esempio Standard_NC4as_T4_v3.

  2. Distribuire il cluster con il file di configurazione del cluster:

    tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
    

    In cui MY-GPU-CLUSTER è un nome che viene attribuito al cluster.

  3. Installare un criterio del cluster GPU e un operatore GPU nel cluster:

    1. Impostare kubectl context sul cluster, se non è già il contesto corrente.

    2. Scaricare le risorse NVIDIA GPU necessarie dal repository Azure di Cluster API Provider e salvarle nella directory corrente:

    3. Applicare il criterio del cluster:

      kubectl apply clusterpolicy-crd.yaml
      
    4. Applicare l'operatore GPU:

      kubectl apply gpu-operator-components.yaml
      
  4. eseguire kubectl get pods -A. Verranno visualizzati elenchi dei pod gpu-operator- nello spazio dei nomi default e dei pod nvidia- nello spazio dei nomi gpu-operator-resources.

Configurazione del cluster di gestione per le distribuzioni del cluster GPU (anteprima tecnica)

Nota

Lo stato di questa funzionalità è Anteprima tecnica e non è quindi supportata. Vedere Stati delle funzionalità di TKG.

È possibile configurare il cluster di gestione per creare automaticamente cluster del carico di lavoro abilitati per GPU ogni volta che si aggiunge gpu: nvidia alle etichette nel manifesto del cluster. A tale scopo, installare un ClusterResourceSet (CRS) e attivarlo nel modo seguente:

  1. Per configurare il cluster di gestione per creare cluster GPU:

    1. Cercare GPU CRS for TKG in VMware {code} Sample Exchange e scaricare il file gpu-crs.yaml per Tanzu Kubernetes Grid v1.4.

    2. Impostare il contesto di kubectl sul contesto del cluster di gestione:

      kubectl config use-context my-management-cluster-admin@my-management-cluster
      
    3. Applicare il file CRS al cluster di gestione utilizzando l'opzione --server-side per gestire le dimensioni notevoli dei dati di ConfigMap:

      kubectl apply -f gpu-crs.yaml --server-side
      
  2. Per creare un cluster del carico di lavoro GPU:

    1. Nel file di configurazione per il cluster impostare AZURE_NODE_MACHINE_TYPE per i nodi worker su un tipo di macchina virtuale compatibile con la GPU, ad esempio Standard_NC4as_T4_v3.

    2. Utilizzare tanzu cluster create con l'opzione --dry-run per generare un manifesto di distribuzione dal file di configurazione del cluster:

      tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG --dry-run > MY-GPU-CLUSTER-MANIFEST
      

      In cui MY-GPU-CLUSTER è un nome che viene attribuito al cluster.

    3. Creare il cluster passandolo a kubectl apply:

      kubectl apply -f MY-GPU-CLUSTER-MANIFEST
      
    4. eseguire kubectl get pods -A. Verranno visualizzati elenchi dei pod gpu-operator- nello spazio dei nomi default e dei pod nvidia- nello spazio dei nomi gpu-operator-resources.

Test dei cluster abilitati per GPU

Per testare un cluster abilitato per GPU:

  1. Testare l'elaborazione di GPU eseguendo il test di aggiunta del vettore CUDA VectorAdd nella documentazione di NVIDIA.

  2. Testare l'operatore di GPU:

    1. Aumentare il numero di nodi worker del cluster del carico di lavoro:

      tanzu cluster scale MY-GPU-CLUSTER -w 2
      
    2. Eseguire nuovamente kubectl get pods -A. Per i nodi aggiunti, verranno visualizzati ulteriori pod gpu-operator- e nvidia-.

check-circle-line exclamation-circle-line close-line
Scroll to top icon