Eseguire la migrazione di nodi esistenti a Azure Container Linux (ACL) per Servizio Azure Kubernetes (AKS)

Questo articolo illustra come eseguire la migrazione dei pool di nodi del servizio Azure Kubernetes esistenti a Azure Contenitore Linux (ACL) per il servizio Azure Kubernetes. È possibile eseguire la migrazione dei nodi esistenti usando uno dei metodi seguenti:

  • Migrazione dello SKU del sistema operativo sul posto: modifica lo SKU del sistema operativo dei pool di nodi esistenti in ACL, che ricrea automaticamente l'immagine dei nodi.
  • Rimuovere i pool di nodi esistenti e aggiungere nuovi pool di nodi ACL: creare nuovi pool di nodi ACL, spostare i carichi di lavoro e rimuovere i pool di nodi precedenti.

Importante

Se si utilizza Azure Container Linux (ACL) in AKS, assicurarsi di consultare le seguenti considerazioni e limitazioni:

Limitazioni per la migrazione dello SKU del sistema operativo sul posto

Oltre alle limitazioni generali ACL, quanto segue si applica in particolare alla migrazione sul posto dello SKU del sistema operativo:

  • 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 supporta la ridenominazione dei pool di nodi esistenti.
  • I pool di nodi con UseGPUDedicatedVHD abilitato non possono eseguire una migrazione dello SKU del sistema operativo.
  • La migrazione dello SKU del sistema operativo Windows non è supportata.

Prerequisiti

  • Un cluster AKS esistente con almeno un pool di nodi Linux.
  • interfaccia della riga di comando di Azure versione 2.86.0 o successiva. Eseguire az --version per trovare la versione. Se è necessario installare o aggiornare, vedere Installare interfaccia della riga di comando di Azure.
  • È consigliabile verificare che i carichi di lavoro vengano eseguiti correttamente nell'ACL distribuendo un cluster ACL in un ambiente di sviluppo o staging prima di eseguire la migrazione dei cluster di produzione.
  • Assicurarsi che la funzionalità di migrazione funzioni in fase di test/sviluppo prima di usare il processo in un cluster di produzione.
  • Assicurarsi che i pod dispongano di un Pod Disruption Budget (PDB) sufficiente a consentire ad AKS di spostare i pod tra le macchine virtuali durante la migrazione.

Aggiungere pool di nodi ACL e rimuovere pool di nodi esistenti

  1. Aggiungere un nuovo pool di nodi ACL usando il az aks nodepool add comando . Usare --mode System in modo che il nuovo pool possa fungere da pool di agenti di sistema, che consente di eliminare il pool di nodi originale nel passaggio successivo.

    az aks nodepool add \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <new-node-pool-name> \
        --os-sku AzureContainerLinux \
        --mode System \
        --node-count 3
    

    Output di esempio:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/myNewNodePool",
      "name": "myNewNodePool",
      "osSku": "AzureContainerLinux",
      "provisioningState": "Succeeded"
    }
    
  2. Rimuovere il pool di nodi esistente usando il az aks nodepool delete comando .

    az aks nodepool delete \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <existing-node-pool-name>
    

Migrazione dello SKU del sistema operativo sul posto

È possibile eseguire la migrazione dei pool di nodi Linux esistenti ad ACL 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. Questo metodo non richiede la creazione di nuovi pool di nodi; i pool di nodi esistenti vengono invece sottoposti automaticamente a reimaging.

Eseguire una migrazione dello SKU del sistema operativo in situ

Importante

ACL richiede Trusted Launch. È necessario includere --enable-secure-boot e --enable-vtpm quando si esegue la migrazione allo SKU del AzureContainerLinux sistema operativo. Anche la dimensione della macchina virtuale (VM) del pool di nodi deve supportare Trusted Launch. Se le dimensioni correnti della macchina virtuale non lo supportano, è necessario ridimensionare o ricreare il pool di nodi con dimensioni di macchina virtuale supportate prima della migrazione.

Esegui la migrazione dello SKU del sistema operativo del tuo pool di nodi ad ACL usando il comando az aks nodepool update. Questo comando attiva una ricreazione dell'immagine del pool di nodi, aggiornando lo SKU del sistema operativo a AzureContainerLinux. 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 <existing-node-pool-name> \
    --os-sku AzureContainerLinux \
    --enable-secure-boot \
    --enable-vtpm

Output di esempio:

{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureContainerLinux",
  "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

Tip

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

Una volta completata la migrazione nei cluster di test, è consigliabile monitorare il cluster e i carichi di lavoro per un paio di settimane per verificare che tutto sia in esecuzione come previsto prima della migrazione dei cluster di produzione. Usare i comandi seguenti per verificare la migrazione e monitorare il cluster:

  1. Verificare che i nuovi nodi eseguano ACL usando il kubectl get nodes -o wide comando . L'output dovrebbe mostrare l'immagine del sistema operativo ACL.

    kubectl get nodes -o wide
    
  2. Verificare che tutti i pod e i daemonset siano in esecuzione nel nuovo pool di nodi usando il kubectl get pods -o wide -A comando .

    kubectl get pods -o wide -A
    
  3. Verifica che tutte le etichette dei nodi nel pool di nodi aggiornato corrispondano a quanto previsto utilizzando il comando kubectl get nodes --show-labels.

    kubectl get nodes --show-labels
    
  4. Controllare la versione dell'immagine del nodo usando il az aks nodepool list comando .

    az aks nodepool list \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'
    

    Output di esempio:

    [
      {
        "name": "myNodePool",
        "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0",
        "osSku": "AzureContainerLinux"
      }
    ]
    

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. Per farlo, riporta il campo SKU del sistema operativo al valore precedente e invia nuovamente la distribuzione; in questo modo verrà attivata un'altra operazione di aggiornamento e il pool di nodi verrà reimpostato sul precedente SKU del sistema operativo. Se si esegue il rollback da ACL allo SKU del sistema operativo precedente, il pool di nodi usa la variante dell'immagine Avvio attendibile (Gen2) per impostazione predefinita, a meno che l'avvio attendibile non sia disabilitato in modo esplicito.

Eseguire il rollback allo SKU del sistema operativo precedente usando il comando az aks nodepool update. Questo esempio esegue il rollback da ACL a Azure Linux:

az aks nodepool update \
    --resource-group <resource-group> \
    --cluster-name <cluster-name> \
    --name <existing-node-pool-name> \
    --os-sku AzureLinux

Per altre informazioni sull'ACL, vedere Che è Azure Container Linux (ACL) per Servizio Azure Kubernetes (AKS)?