Usare pool di nodi di macchine virtuali nel servizio Azure Kubernetes

In questo articolo, scoprirai il nuovo tipo di pool di nodi per macchine virtuali in AKS.

Con i pool di nodi delle Macchine Virtuali, AKS gestisce direttamente il provisioning e l'inizializzazione di ogni singolo nodo. Per i pool di nodi dei set di scalabilità di macchine virtuali, AKS gestisce il modello dei set di scalabilità di macchine virtuali e lo utilizza per ottenere la coerenza tra tutti i nodi del pool di nodi. Macchine virtuali pool di nodi consentono di orchestrare il cluster con macchine virtuali più adatte ai singoli carichi di lavoro.

Usando i pool di nodi delle macchine virtuali, il servizio Azure Kubernetes gestisce direttamente il provisioning e il bootstrap di ogni singolo nodo. Per i pool di nodi dei set di scalabilità di macchine virtuali, il servizio Azure Kubernetes gestisce il modello dei set di scalabilità di macchine virtuali e lo usa per ottenere coerenza tra tutti i nodi del pool di nodi. I pool di nodi delle macchine virtuali consentono di orchestrare il cluster con macchine virtuali più adatte ai singoli carichi di lavoro.

Panoramica del pool di nodi delle macchine virtuali

Come funziona

Un pool di nodi è costituito da un set di macchine virtuali in cui diverse dimensioni di macchine virtuali supportano diversi tipi di carichi di lavoro. Queste dimensioni delle macchine virtuali, denominate SKU, vengono classificate in famiglie diverse ottimizzate per scopi specifici. Per altre informazioni, vedere la documentazione sugli SKU delle macchine virtuali. Usando i pool di nodi di macchine virtuali, è possibile eseguire il ridimensionamento manuale di più SKU e la scalabilità automatica multi-SKU.

Per abilitare il ridimensionamento di più dimensioni di macchine virtuali, il tipo di pool di nodi macchine virtuali utilizza un ScaleProfile oggetto che contiene configurazioni che indicano come il pool di nodi può essere ridimensionato, in particolare l'elenco desiderato di dimensioni delle macchine virtuali e la quantità di ciascuna dimensione. Un ManualScaleProfile è un profilo di scalabilità che specifica una dimensione della macchina virtuale desiderata e il conteggio totale di tale tipo nel pool di nodi. In un oggetto ManualScaleProfileè consentita una sola dimensione di macchina virtuale. È necessario creare un elemento separato ManualScaleProfile per ogni dimensione della macchina virtuale nel pool di nodi. Quando si crea un nuovo pool di nodi macchine virtuali, si aggiunge un profilo di scalabilità manuale iniziale per le dimensioni di una macchina virtuale usando il vm-size campo e includendo un oggetto node-count. È anche possibile aggiungere altri profili di scalabilità manuale seguendo le istruzioni per l'aggiunta di profili di scalabilità manuale.

Per abilitare il ridimensionamento di più dimensioni di macchine virtuali, il tipo di pool di nodi delle macchine virtuali usa un ScaleProfile oggetto che contiene configurazioni che indicano come il pool di nodi può ridimensionare, in particolare l'elenco desiderato di dimensioni della macchina virtuale e il conteggio di ogni dimensione. Un ManualScaleProfile è un profilo di scalabilità che specifica una dimensione della macchina virtuale desiderata e il conteggio totale di tale tipo nel pool di nodi. Un ManualScaleProfile oggetto supporta una sola dimensione della macchina virtuale. È necessario creare un elemento separato ManualScaleProfile per ogni dimensione della macchina virtuale nel pool di nodi. Quando si crea un nuovo pool di nodi di macchine virtuali, aggiungere un profilo di scalabilità manuale iniziale per le dimensioni di una macchina virtuale usando il vm-size campo e includendo un oggetto node-count. È anche possibile aggiungere altri profili di scalabilità manuale seguendo le istruzioni per l'aggiunta di profili di scalabilità manuali.

I pool di nodi delle macchine virtuali supportano Auto anche la modalità , il che significa che il pool di nodi può usare il ridimensionamento automatico del cluster. Un pool di nodi di macchine virtuali supporta fino a cinque profili di scalabilità totali in modalità di scalabilità manuale e automatica. Ogni profilo specifica uno SKU della macchina virtuale della stessa famiglia. Ognuno AutoScaleProfile può avere il proprio numero minimo e massimo di nodi nel pool di nodi.

Nota

Quando si crea un nuovo pool di nodi Macchine virtuali, è possibile avere più profili di scalabilità ed è necessario almeno un profilo di scalabilità automatica o manuale nel pool di nodi.

Vantaggi dei pool di nodi delle macchine virtuali

I vantaggi del tipo di pool di nodi di macchine virtuali includono:

  • Flessibilità: le specifiche del nodo possono essere aggiornate per adattarsi al carico di lavoro e alle esigenze correnti.
  • Controllo ottimizzato: i controlli a livello di nodo singolo consentono di specificare e combinare nodi di specifiche diverse per sollevare le restrizioni da un singolo modello e migliorare la coerenza.
  • Efficienza: è possibile ridurre il footprint del nodo per il cluster, semplificando i requisiti operativi.

I pool di nodi delle macchine virtuali supportano fino a cinque profili di scalabilità per pool di nodi, in modo che i carichi di lavoro possano usare più SKU di macchine virtuali di famiglia senza richiedere un pool di nodi separato per ogni SKU.

Confrontare le esperienze di scalabilità di calcolo del servizio Azure Kubernetes

Nella tabella seguente viene illustrato come confrontare i pool di nodi Macchine virtuali con i pool di nodi del set di scalabilità standard.

Tipo di pool di nodi Funzionalità di scalabilità e gestione dei nodi
pool di nodi macchine virtuali È possibile aggiungere, rimuovere o aggiornare nodi in un pool di nodi. I tipi di macchina virtuale possono essere qualsiasi macchina virtuale dello stesso tipo di famiglia (ad esempio, serie D, serie A e così via). Macchine virtuali pool di nodi consentono anche il ridimensionamento automatico e manuale multiversione.
Pool di nodi basato su set di scalabilità di macchine virtuali È possibile aggiungere o rimuovere nodi della stessa dimensione e dello stesso tipo in un pool di nodi. Se si aggiungono nuove dimensioni della macchina virtuale al cluster, è necessario creare un nuovo pool di nodi.

Quale opzione di scalabilità del calcolo dovrei scegliere su AKS?

A seconda delle esigenze del carico di lavoro, sono disponibili più esperienze di scalabilità di calcolo da considerare. Vedere i casi d'uso per ognuno di essi:

  • Provisioning automatico dei nodi: ideale per la scalabilità automatica multiversione e selezione più intelligente e flessibile della versione della macchina virtuale (incluse più famiglie di versioni).
  • Macchine virtuali pool di nodi: ideale per il ridimensionamento manuale multiversione e supporta la scalabilità automatica multiversione. Richiede una selezione di versione specifica di un massimo di cinque dimensioni per pool di nodi.
  • set di scalabilità di macchine virtuali: supporta il ridimensionamento manuale a versione singola e la scalabilità automatica a singola versione. Richiede la selezione specifica della versione di una dimensione per ogni pool di nodi.

limitazioni del pool di nodi Macchine virtuali

  • Le dimensioni delle macchine virtuali specificate nel pool devono essere dello stesso tipo. Ad esempio, le macchine virtuali GPU e non GPU o x86 e ARM64 non possono trovarsi nello stesso pool di nodi.
  • InifiniBand non è disponibile.
  • Lo snapshot del node pool non è supportato.
  • Tutte le dimensioni delle macchine virtuali selezionate in un pool di nodi devono essere appartenenti a una famiglia di macchine virtuali simile. Ad esempio, non è possibile combinare un tipo di macchina virtuale serie N con un tipo di macchina virtuale serie D nello stesso pool di nodi.
  • Macchine virtuali pool di nodi consentono fino a cinque profili di scalabilità totali per pool di nodi. Ogni profilo di scalabilità automatica o manuale specifica una dimensione della macchina virtuale della stessa famiglia di macchine virtuali.
  • I pool di nodi Windows non sono supportati.
  • Le zone di disponibilità non sono supportate. Se il carico di lavoro richiede la resilienza della zona, usare set di scalabilità di macchine virtuali pool di nodi.

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha un account, è possibile crearne uno gratuito.
  • interfaccia della riga di comando di Azure versione 2.85.0 o successiva installata e configurata. Per trovare la versione, eseguire az --version. Per altre informazioni sull'installazione o l'aggiornamento della interfaccia della riga di comando di Azure, vedere Installare interfaccia della riga di comando di Azure.
  • Questa funzionalità richiede Kubernetes versione 1.27 o successiva. Per aggiornare la versione di Kubernetes, vedere Aggiornare il cluster del servizio Azure Kubernetes.

Importante

Requisito di rete virtuale personalizzata: se si distribuisce un pool di nodi di macchine virtuali in una rete virtuale personalizzata, il cluster deve usare un'identità gestita assegnata dall'utente con almeno le autorizzazioni Collaboratore rete nella subnet di destinazione. A differenza dei pool di nodi del set di scalabilità di macchine virtuali, i pool di nodi delle macchine virtuali si basano esclusivamente sull'identità del cluster per le operazioni di aggiunta alla subnet e non usano token di prima parte. I cluster che usano un'identità gestita assegnata dal sistema non riescono a eseguire la convalida preliminare durante la creazione o l'aggiornamento di un pool di nodi di macchine virtuali in una rete virtuale personalizzata, restituendo un InvalidParameter errore. Per altre informazioni sulla configurazione di un'identità gestita assegnata dall'utente per il cluster, vedere Usare un'identità gestita nel servizio Azure Kubernetes.

Creare un cluster AKS con pool di nodi di macchine virtuali

Nota

In un profilo di scalabilità è consentita una sola dimensione della macchina virtuale e il limite massimo è di cinque profili di scalabilità di macchine virtuali per un pool di nodi Macchine virtuali.

Creare un cluster AKS con pool di nodi di Macchine Virtuali usando il az aks create comando con il --vm-set-type flag impostato su "VirtualMachines".

L'esempio seguente crea un cluster denominato myAKSCluster con un pool di nodi Macchine virtuali contenente due nodi:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3" \
    --node-count 2

Creare un cluster AKS (servizio Azure Kubernetes) con pool di nodi di macchine virtuali (Macchine virtuali) in una rete virtuale personalizzata

Quando si distribuiscono pool di nodi Macchine virtuali in una rete virtuale personalizzata, è necessario creare un'identità gestita assegnata dall'utente e concedergli le autorizzazioni collaboratore di rete nella subnet di destinazione prima di creare il cluster.

  1. Creare una rete virtuale e una subnet.

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --address-prefixes 10.1.0.0/16 \
        --subnet-name mySubnet \
        --subnet-prefix 10.1.0.0/24
    
  2. Ottenere l'ID risorsa della subnet.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name mySubnet \
        --query id \
        --output tsv)
    
  3. Creare un'identità gestita assegnata dall'utente.

    az identity create \
        --name myAKSIdentity \
        --resource-group myResourceGroup
    
  4. Ottieni l'ID principale e l'ID risorsa dell'identità gestita.

    IDENTITY_PRINCIPAL_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query principalId \
        --output tsv)
    
    IDENTITY_RESOURCE_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query id \
        --output tsv)
    
  5. Assegnare il ruolo Collaboratore rete all'identità gestita nella subnet di destinazione.

    az role assignment create \
        --assignee $IDENTITY_PRINCIPAL_ID \
        --role "Network Contributor" \
        --scope $SUBNET_ID
    

    La propagazione delle autorizzazioni concesse all'identità gestita del cluster può richiedere fino a 60 minuti.

  6. Verificare che l'assegnazione di ruolo esista nella subnet di destinazione prima di creare il cluster.

    az role assignment list \
        --assignee $IDENTITY_PRINCIPAL_ID \
        --role "Network Contributor" \
        --scope $SUBNET_ID \
        --query "[].{Role:roleDefinitionName, Scope:scope}" \
        --output table
    

    Continuare quando l'output mostra il ruolo Collaboratore rete nell'ambito della subnet di destinazione.

  7. Crea il cluster AKS con pool di nodi di macchine virtuali nella tua rete virtuale personalizzata.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type "VirtualMachines" \
        --vm-sizes "Standard_D4s_v3" \
        --node-count 2 \
        --vnet-subnet-id $SUBNET_ID \
        --assign-identity $IDENTITY_RESOURCE_ID
    

Aggiungere un pool di nodi Macchine virtuali a un cluster esistente

Aggiungi un pool di nodi di macchine virtuali a un cluster esistente utilizzando il comando az aks nodepool add con l'opzione --vm-set-type impostata su "VirtualMachines".

Nell'esempio seguente viene aggiunto un pool di nodi Macchine virtuali denominato myvmpool al cluster myAKSCluster. Il pool di nodi crea un ManualScaleProfile con --vm-sizes impostato su Standard_D4s_v3 e un --node-count di 3:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3" \
    --node-count 3

Aggiungere un profilo di scalabilità manuale a un pool di nodi

Aggiungere un profilo di scalabilità manuale a un pool di nodi usando az aks nodepool manual-scale add con il --vm-sizes flag impostato su "Standard_D2s_v3" e il node-count set su 2.

L'esempio seguente aggiunge un profilo di scalabilità manuale al pool di nodi myvmpool nel cluster myAKSCluster. Il pool di nodi include due nodi con uno SKU VM di Standard_D2s_v3:

az aks nodepool manual-scale add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-sizes "Standard_D2s_v3" \
    --node-count 2

Aggiornare un profilo di scalabilità manuale esistente

Aggiornare un profilo di scalabilità manuale esistente in un pool di nodi usando il comando az aks nodepool manual-scale update con il flag --vm-sizes impostato su "Standard_D2s_v3".

Nota

Usare il --current-vm-sizes parametro per specificare le dimensioni del pool di nodi esistente da aggiornare. È possibile aggiornare --vm-sizes e/o --node-count. Quando si usano altri strumenti o API REST, è necessario passare un campo completo di agentPoolProfiles.virtualMachinesProfile.scale durante l'aggiornamento del profilo di scalabilità del pool di nodi.

L'esempio seguente aggiorna un profilo di scalabilità manuale per il pool di nodi myvmpool nel cluster myAKSCluster. Il comando aggiorna il numero di nodi a cinque e modifica lo SKU della macchina virtuale da Standard_D4s_v3 a Standard_D8s_v3:

az aks nodepool manual-scale update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D4s_v3" \
    --vm-sizes "Standard_D8s_v3" \
    --node-count 5

Eliminare un profilo di scalabilità manuale

Eliminare un profilo di scalabilità manuale esistente usando il comando az aks nodepool manual-scale delete.

Nota

Il --current-vm-sizes parametro specifica le dimensioni del pool di nodi esistente da eliminare. Quando si usano altri strumenti o API REST per aggiornare il profilo di scala del pool di nodi, è necessario fornire un campo agentPoolProfiles.virtualMachinesProfile.scale completo.

Nell'esempio seguente viene eliminato il profilo di scalabilità manuale per lo SKU della Standard_D8s_v3 macchina virtuale nel pool di nodi myvmpool .

az aks nodepool manual-scale delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D8s_v3"

Scalabilità automatica del cluster con pool di nodi Macchine virtuali (anteprima)

I pool di nodi delle macchine virtuali supportano il ridimensionamento automatico del cluster. Questa funzionalità di anteprima richiede interfaccia della riga di comando di Azure versione 2.85.0 o successiva, l'estensione e la aks-preview registrazione del VMsAgentPoolAutoscalePreview flag di funzionalità. Dopo aver soddisfatto questi prerequisiti, è possibile usare --enable-cluster-autoscaler durante la creazione del cluster, aggiungendo un nuovo pool di nodi o aggiornando un pool di nodi manuale esistente.

Quando si usa il ridimensionamento automatico del cluster con pool di nodi Macchine virtuali, il comportamento è il seguente:

Azione di scalabilità automatica Behavior
Scalare verso l'alto Il ridimensionamento automatico risponde alla pressione dei pod in sospeso e può aumentare il numero di nodi per più dimensioni di vm nel pool di nodi.
Riduzione delle prestazioni Il ridimensionamento automatico seleziona un nodo in base all'utilizzo. È possibile configurare per la regolazione scale-down-utilization-threshold quando il ridimensionamento automatico attiva un'azione di riduzione delle prestazioni. Per altre informazioni, vedere Scalabilità automatica del cluster.

Limiti

  • Questa funzionalità è disponibile solo nel cloud pubblico.
  • I nodi GPU non sono attualmente supportati.
  • Questa funzionalità richiede interfaccia della riga di comando di Azure versione 2.85.0 o successiva e l'estensioneaks-preview.

Installare l'estensione aks-preview

Importante

Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

  • Installare o aggiornare l'estensione dell'interfaccia a riga di comando di Azure utilizzando il comando aks-preview o az extension add:
    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview

Registrare il flag di funzionalità

Registrare il flag di funzionalità di anteprima VMsAgentPoolAutoscalePreview usando il comando az feature register:

az feature register \
    --namespace Microsoft.ContainerService \
    --name VMsAgentPoolAutoscalePreview

La visualizzazione Registereddello stato richiede alcuni minuti. Verificare lo stato della registrazione usando il comando az feature show:

az feature show \
    --namespace Microsoft.ContainerService \
    --name VMsAgentPoolAutoscalePreview \
    --query properties.state \
    --output tsv

Quando lo stato è Registered, aggiornare la registrazione del Microsoft.ContainerService provider di risorse usando il az provider register comando :

az provider register --namespace Microsoft.ContainerService

Creare un cluster del servizio Azure Kubernetes con pool di nodi Macchine virtuali e scalabilità automatica del cluster abilitata

  • Creare un cluster AKS con pool di nodi di macchine virtuali usando il comando az aks create con il flag --vm-set-type impostato su "VirtualMachines" e con il flag --enable-cluster-autoscaler.

L'esempio seguente crea un cluster denominato myAKSCluster con un pool di nodi Macchine virtuali che usa le dimensioni Standard_D4s_v3del nodo , un numero minimo di nodi pari a 2 e un numero massimo di nodi pari a 5:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Aggiungere un pool di nodi delle macchine virtuali a un cluster esistente con ridimensionamento automatico del cluster abilitato.

  • Creare un pool di nodi di Macchine virtuali usando il az aks nodepool add comando con il --vm-set-type flag impostato su "VirtualMachines" e con il flag --enable-cluster-autoscaler.

L'esempio seguente aggiunge il pool di nodi delle macchine virtuali myvmpool con il ridimensionamento automatico del cluster abilitato a un cluster denominato myAKSCluster usando le dimensioni della macchina virtuale "Standard_D4s_v3" e un numero minimo di nodi pari a 2 e numero massimo di 5:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Aggiornare le impostazioni di scalabilità automatica del cluster per un pool di nodi Macchine virtuali

L'esempio seguente aggiorna le impostazioni per il pool di nodi delle macchine virtuali myvmpool nel cluster denominato myAKSCluster usando le dimensioni della macchina virtuale "Standard_D4s_v3":

az aks nodepool auto-scale update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-node-vm-size "Standard_D4s_v3" \
    --min-count 3 \
    --max-count 7

Passare Macchine virtuali profili di scalabilità del pool di nodi dalla modalità manuale alla modalità di scalabilità automatica

L'esempio seguente aggiorna Macchine virtuali pool di nodi myvmpool nel cluster denominato myAKSCluster, convertendo tutti i profili di scalabilità manuale in profili di scalabilità automatica con lo stesso numero minimo e massimo di nodi:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Disabilitare il ridimensionamento automatico del cluster in un pool di nodi Macchine virtuali

È possibile disabilitare il ridimensionamento automatico del cluster o cambiare tutti i profili di scalabilità in un pool di nodi di macchina virtuale dalla Auto modalità alla Manual modalità.

L'esempio seguente disabilita il ridimensionamento automatico del cluster per il pool di nodi Macchine virtuali myvmpool nel cluster denominato myAKSCluster. Passa tutti i profili di scalabilità dalla Auto modalità alla Manual modalità:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --disable-cluster-autoscaler

Passaggi successivi

In questo articolo si è appreso come utilizzare i pool dei nodi delle macchine virtuali nel servizio Azure Kubernetes. Per ulteriori informazioni sui pool di nodi in AKS, vedere Creare pool di nodi.