Självstudie: Migrera noder till Azure Linux

I den här självstudien, del tre av fem, migrerar du dina befintliga noder till Azure Linux. Du kan migrera dina befintliga noder till Azure Linux med någon av följande metoder:

  • Ta bort befintliga nodpooler och lägg till nya Azure Linux-nodpooler.
  • Utför en på plats-migrering av operativsystemets SKU.

Kommandona i den här självstudien använder miljövariablerna som har angetts i Tutorial 1: Skapa ett kluster med Azure Linux Container Host for AKS.

Om du inte har några befintliga noder att migrera till Azure Linux, går du vidare till nästa handledning. I senare självstudier får du lära dig hur du aktiverar telemetri och övervakning i dina kluster och uppgraderar Azure Linux-noder.

Förutsättningar

Note

När du lägger till en ny Azure Linux-nodpool måste du lägga till minst en som --mode System. Annars tillåter INTE AKS att du tar bort din befintliga nodpool.

  • Du behöver den senaste versionen av Azure CLI. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.

Ange miljövariabler

Ange följande miljövariabler för att skapa unika resursnamn för varje distribution. Ersätt platshållaren <your-node-pool-name> med ett valfritt namn. Du kan också lägga till ett slumpmässigt suffix för att säkerställa unikhet. Namnet på en nodpool måste börja med en liten bokstav och kan bara innehålla bokstäver och siffror. För Linux-nodpooler måste längden vara mellan ett och tolv tecken.

# 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"

Lägga till Azure Linux-nodpooler och ta bort befintliga nodpooler

  1. Lägg till en ny Azure Linux-nodpool med kommandot az aks nodepool add . Det här kommandot lägger till en ny nodpool i klustret med --mode System flaggan, vilket gör den till en systemnodpool. Systemnodpooler krävs för Azure Linux-kluster.

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

    Exempel på utdata:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/systempool",
      "name": "systempool",
      "provisioningState": "Succeeded"
    }
    
  2. Ta bort dina befintliga noder med kommandot az aks nodepool delete .

Migrering av operativsystem-SKU direkt

Du kan migrera dina befintliga Ubuntu-nodpooler till Azure Linux genom att ändra nodpoolens OS-SKU, vilket gör att klustret går igenom standardprocessen för uppgradering av nodavbildning. Den här nya funktionen kräver inte att nya nodpooler skapas.

Begränsningar för OS SKU-migrering på plats

Det finns flera inställningar som kan blockera begäran om OS SKU-migrering. Granska följande riktlinjer och begränsningar för att säkerställa en lyckad migrering:

  • Os SKU-migreringsfunktionen är inte tillgänglig via PowerShell eller Azure Portal.
  • Migreringsfunktionen för OS SKU kan inte byta namn på befintliga nodpooler.
  • Ubuntu, Azure Linux och Azure Linux med OS Guard är de enda linux OS SKU-migreringsmål som stöds.
  • Betrodd start krävs som standard för Azure Linux med OS Guard. Du måste ha betrodd start aktiverat för att kunna migrera till Azure Linux med OS Guard. Eftersom du inte kan aktivera Betrodd start i befintliga nodpooler måste du skapa en ny nodpool med Betrodd start aktiverat och migrera dina arbetsbelastningar till nodpoolen.
  • Kunder som endast använder storlekar för virtuella datorer (VM) i Gen 1 kan inte migrera till Azure Linux med OS Guard eftersom det inte finns någon Gen 1-avbildning som stöds. I det här fallet måste du skapa nya nodpooler med en VM-storlek som stöder Gen 2.
  • En Ubuntu OS SKU med UseGPUDedicatedVHD aktiverad kan inte utföra en OS SKU-migrering.
  • En Ubuntu OS SKU med CVM 20.04 aktiverat kan inte utföra en OS SKU-migrering.
  • Nodpooler med Kata aktiverat kan inte utföra en OS SKU-migrering.
  • Windows OS SKU-migrering stöds inte.

Förutsättningar för migrering av OS-SKU på samma plats

  • Ett befintligt AKS-kluster med minst en Ubuntu-nodpool.
  • Vi rekommenderar att du säkerställer att dina arbetsbelastningar konfigureras och körs framgångsrikt på Azure Linux-containervärden innan du försöker använda OS SKU-migreringsfunktionen genom att distribuera ett Azure Linux-kluster i dev/prod och verifiera att din tjänst förblir stabil.
  • Se till att migreringsfunktionen fungerar för dig i test/utveckling innan du använder processen i ett produktionskluster.
  • Se till att dina poddar har tillräckligt med poddstörningsbudget (PDB) så att AKS kan flytta poddar mellan virtuella datorer under uppgraderingen.
  • Du behöver Azure CLI version 2.61.0 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.
  • Om du använder Terraform måste du ha v3.111.0 eller senare av AzureRM Terraform-modulen.

Migrera OS SKU för din Ubuntu-nodpool

Migrera OS-SKU:n för nodpoolen till Azure Linux med hjälp av az aks nodepool update kommandot . Det här kommandot uppdaterar OS SKU för din nodpool från Ubuntu till Azure Linux. Os SKU-ändringen utlöser en omedelbar uppgraderingsåtgärd, vilket tar flera minuter att slutföra.

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

Exempel på utdata:

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

Note

Om du får problem under OS SKU-migreringen kan du återställa till din tidigare OS SKU.

Verifiera OS SKU-migreringen

När migreringen är klar i dina testkluster bör du kontrollera följande för att säkerställa en lyckad migrering:

  • Om migreringsmålet är Azure Linux kör du kubectl get nodes -o wide kommandot . Utdata ska visa Microsoft Azure Linux 3.0 som operativsystemets avbildning och .azl3 i slutet av din kärnversion.
  • kubectl get pods -o wide -A Kör kommandot för att kontrollera att alla dina poddar och daemonuppsättningar körs i den nya nodpoolen.
  • kubectl get nodes --show-labels Kör kommandot för att kontrollera att alla nodetiketter i den uppgraderade nodpoolen är det du förväntar dig.

Tip

Vi rekommenderar att du övervakar tjänstens hälsotillstånd i ett par veckor innan du migrerar dina produktionskluster.

Kör OS SKU-migreringen i dina produktionskluster

  1. Uppdatera dina befintliga mallar för att ange OSSKU=AzureLinux. Kontrollera att din apiVersion är inställd på 2023-07-01 eller senare.

    • ARM-mallar: Använd "OSSKU": "AzureLinux" i avsnittet agentPoolProfile .
    • Bicep: Använd osSku: "AzureLinux" i avsnittet agentPoolProfile.
    • Terraform: Används os_sku = "AzureLinux" i avsnittet default_node_pool .
  2. Återdistribuera din ARM-, Bicep- eller Terraform-mall för klustret för att tillämpa den nya OSSKU inställning. Under den här distributionen beter sig klustret som om det genomgår en uppgradering av nodavbildningen. Klustret ökar kapaciteten och startar sedan om dina befintliga noder en i taget till den senaste AKS-avbildningen från din nya OS SKU.

Gå tillbaka till din tidigare OS-produktversion

Om du får problem under OS SKU-migreringen kan du återställa till din tidigare OS SKU. För att göra detta måste du ändra OS SKU-fältet i mallen och skicka distributionen igen, vilket utlöser en annan uppgraderingsåtgärd och återställer nodpoolen till dess tidigare OS SKU.

Du kan återställa till din tidigare OS-SKU med hjälp av az aks nodepool update kommandot . Det här kommandot uppdaterar OS SKU för din nodpool från Azure Linux tillbaka till Ubuntu.

Nästa steg

I den här självstudien migrerade du befintliga noder till Azure Linux genom att ta bort befintliga nodpooler och lägga till nya Azure Linux-nodpooler eller genom att utföra en SKU-migrering på plats.

I nästa självstudie får du lära dig hur du aktiverar telemetri för att övervaka dina kluster.