Esercitazione: Eseguire la migrazione di nodi in Azure Linux

In questa esercitazione, parte tre di cinque, si migrano i nodi esistenti ad Azure Linux. È possibile eseguire la migrazione dei nodi esistenti in Azure Linux usando uno dei metodi seguenti:

  • Rimuovere i pool di nodi esistenti e aggiungere nuovi pool di nodi Linux di Azure.
  • Eseguire una migrazione diretta dello SKU del sistema operativo.

I comandi di questa esercitazione utilizzano le variabili di ambiente impostate in Tutorial 1: Creare un cluster con Azure Linux Container Host for AKS.

Se non sono presenti nodi esistenti per eseguire la migrazione ad Azure Linux, passare all'esercitazione successiva. Nelle esercitazioni successive si apprenderà come abilitare la telemetria e il monitoraggio nei cluster e aggiornare i nodi Linux di Azure.

Prerequisiti

Annotazioni

Quando si aggiunge un nuovo pool di nodi Linux di Azure, è necessario aggiungerne almeno uno come --mode System. In caso contrario, il servizio Azure Kubernetes non consente di eliminare il pool di nodi esistente.

Impostare le variabili di ambiente

Impostare le variabili di ambiente seguenti per creare nomi di risorse univoci per ogni distribuzione. Sostituire il segnaposto <your-node-pool-name> con un nome di propria scelta. Facoltativamente, è possibile aggiungere un suffisso casuale per garantire l'univocità. Il nome di un pool di nodi deve iniziare con una lettera minuscola e può contenere solo caratteri alfanumerici. Per i pool di nodi Linux, la lunghezza deve essere compresa tra 1 e 12 caratteri.

# Set random suffix for uniqueness
export RANDOM_SUFFIX=$(openssl rand -hex 3)

# Set node pool name
export NODE_POOL_NAME="<your-node-pool-name>$RANDOM_SUFFIX"

Aggiungere pool di nodi Linux di Azure e rimuovere pool di nodi esistenti

  1. Aggiungere un nuovo pool di nodi Linux di Azure usando il comando az aks nodepool add. Questo comando aggiunge un nuovo pool di nodi al cluster con il flag --mode System, che lo rende un pool di nodi di sistema. I pool di nodi di sistema sono necessari per i cluster Linux di Azure.

    az aks nodepool add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --mode System --os-sku AzureLinux
    

    Output di esempio:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/systempool",
      "name": "systempool",
      "provisioningState": "Succeeded"
    }
    
  2. Rimuovere i nodi esistenti usando il comando az aks nodepool delete.

Migrazione dello SKU del sistema operativo sul posto

È possibile eseguire la migrazione dei pool di nodi Ubuntu esistenti ad Azure Linux modificando lo SKU del sistema operativo del pool di nodi, operazione che aggiorna progressivamente il cluster tramite il processo standard di aggiornamento dell'immagine dei nodi. Questa nuova funzionalità non richiede la creazione di nuovi pool di nodi.

Limitazioni per la migrazione dello SKU del sistema operativo sul posto

Esistono diverse impostazioni che possono bloccare la richiesta di migrazione dello SKU del sistema operativo. Per garantire una migrazione corretta, esaminare le linee guida e le limitazioni seguenti:

  • La funzionalità di migrazione dello SKU del sistema operativo non è disponibile tramite PowerShell o il portale di Azure.
  • La funzionalità di migrazione dello SKU del sistema operativo non è in grado di rinominare i pool di nodi esistenti.
  • Ubuntu, Azure Linux e Azure Linux con OS Guard sono le uniche destinazioni di migrazione dello SKU del sistema operativo Linux supportate.
  • L'avvio attendibile è richiesto per impostazione predefinita per Azure Linux con OS Guard. È necessario abilitare Avvio attendibile per poter eseguire la migrazione a Azure Linux con OS Guard. Poiché non è possibile abilitare l'avvio attendibile nei pool di nodi esistenti, è necessario creare un nuovo pool di nodi con avvio attendibile abilitato ed eseguire la migrazione dei carichi di lavoro a tale pool di nodi.
  • I clienti che usano solo le dimensioni della macchina virtuale di seconda generazione non possono eseguire la migrazione a Azure Linux con OS Guard perché non esiste un'immagine di generazione 1 supportata. In questo caso, è necessario creare nuovi pool di nodi con dimensioni di macchina virtuale che supportano la generazione 2.
  • Uno SKU del sistema operativo Ubuntu con UseGPUDedicatedVHD abilitato non può eseguire una migrazione dello SKU del sistema operativo.
  • Uno SKU del sistema operativo Ubuntu con CVM 20.04 abilitato non può eseguire una migrazione dello SKU del sistema operativo.
  • I pool di nodi con Kata abilitato non possono eseguire una migrazione dello SKU del sistema operativo.
  • La migrazione dello SKU del sistema operativo Windows non è supportata.

Prerequisiti per la migrazione in-place dello SKU del sistema operativo

  • Un cluster del servizio Azure Kubernetes esistente con almeno un pool di nodi Ubuntu.
  • È consigliabile assicurarsi che i carichi di lavoro vengano configurati ed eseguiti correttamente nell'host contenitore Linux di Azure prima di provare a usare la funzionalità di migrazione dello SKU del sistema operativo distribuendo un cluster Linux di Azure in dev/prod e verificando che il servizio rimanga integro.
  • Assicurarsi che la funzionalità di migrazione funzioni in fase di test/sviluppo prima di usare il processo in un cluster di produzione.
  • Verificare che i pod dispongano di un Pod Disruption Budget (PDB) sufficiente per consentire ad AKS di spostare i pod tra le macchine virtuali durante l'aggiornamento.
  • È necessaria la versione dell'interfaccia della riga di comando di Azure 2.61.0 o successiva. Eseguire az --version per trovare la versione. Se è necessario installare o aggiornare, vedere Installare interfaccia della riga di comando di Azure.
  • Se si usa Terraform, è necessario avere v3.111.0 o versione successiva del modulo Terraform di AzureRM.

Eseguire la migrazione dello SKU del sistema operativo del pool di nodi Ubuntu

Eseguire la migrazione dello SKU del sistema operativo del pool di nodi in Azure Linux usando il comando az aks nodepool update. Questo comando aggiorna lo SKU del sistema operativo per il pool di nodi da Ubuntu ad Azure Linux. La modifica dello SKU del sistema operativo attiva un'operazione di aggiornamento immediato, che richiede alcuni minuti.

az aks nodepool update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --os-sku AzureLinux

Output di esempio:

{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureLinux",
  "provisioningState": "Succeeded"
}

Annotazioni

Se si verificano problemi durante la migrazione dello SKU del sistema operativo, è possibile eseguire il rollback allo SKU del sistema operativo precedente.

Verificare la migrazione dello SKU del sistema operativo

Una volta completata la migrazione nei cluster di test, è necessario verificare quanto segue per assicurarsi che la migrazione abbia esito positivo:

  • Se la destinazione della migrazione è Azure Linux, eseguire il comando kubectl get nodes -o wide. L'output dovrebbe mostrare Microsoft Azure Linux 3.0 come immagine del sistema operativo e .azl3 alla fine della versione del kernel.
  • Eseguire il comando kubectl get pods -o wide -A per verificare che tutti i pod e i daemonset siano in esecuzione nel nuovo pool di nodi.
  • Eseguire il comando kubectl get nodes --show-labels per verificare che tutte le etichette dei nodi nel pool di nodi aggiornato siano le aspettative.

Tip

È consigliabile monitorare l'integrità del servizio per un paio di settimane prima della migrazione dei cluster di produzione.

Eseguire la migrazione dello SKU del sistema operativo nei cluster di produzione

  1. Aggiornare i modelli esistenti per impostare OSSKU=AzureLinux. Assicurarsi che apiVersion sia impostato su 2023-07-01 o versione successiva.

    • Modelli ARM: Usa "OSSKU": "AzureLinux" nella sezione agentPoolProfile.
    • Bicep: usare osSku: "AzureLinux" nella sezione agentPoolProfile.
    • Terraform: usare os_sku = "AzureLinux" nella default_node_pool sezione .
  2. Ridistribuire il modello ARM, Bicep o Terraform per il cluster per applicare la nuova impostazione di OSSKU. Durante questa distribuzione, il cluster si comporta come se sta eseguendo un aggiornamento di un'immagine del nodo. Il cluster aumenta la capacità e quindi riavvia i nodi esistenti uno alla sola nell'immagine più recente del servizio Azure Kubernetes dal nuovo SKU del sistema operativo.

Eseguire il rollback allo SKU del sistema operativo precedente

Se si verificano problemi durante la migrazione dello SKU del sistema operativo, è possibile eseguire il rollback allo SKU del sistema operativo precedente. A tale scopo, è necessario modificare il campo SKU del sistema operativo nel modello e inviare di nuovo la distribuzione, che attiva un'altra operazione di aggiornamento e ripristina il pool di nodi nello SKU precedente del sistema operativo.

È possibile eseguire il rollback allo SKU del sistema operativo precedente usando il az aks nodepool update comando . Questo comando aggiorna lo SKU del sistema operativo per il pool di nodi da Azure Linux a Ubuntu.

Passo successivo

In questa esercitazione è stata eseguita la migrazione di nodi esistenti a Azure Linux rimuovendo i pool di nodi esistenti e aggiungendo nuovi pool di nodi Linux Azure o eseguendo una migrazione dello SKU del sistema operativo sul posto.

Nell'esercitazione successiva si apprenderà come abilitare la telemetria per monitorare i cluster.