Migrar os nós existentes para o Azure Container Linux (ACL) do Azure Kubernetes Service (AKS)

Neste artigo, vai aprender como migrar os conjuntos de nós existentes do AKS para o Azure Container Linux (ACL) para AKS. Você pode migrar seus nós existentes usando um dos seguintes métodos:

  • Migração de SKU do SO no local: Mude o SKU do SO dos pools de nós existentes para ACL, que reimagina automaticamente os nós.
  • Remova pools de nós existentes e adicione novos pools de nós ACL: Crie novos pools de nós ACL, mude as suas cargas de trabalho e remova os pools de nós antigos.

Importante

Se estiver a usar Azure Container Linux (ACL) no AKS, certifique-se de rever as seguintes considerações e limitações:

Limitações de migração de SKUs de SO no local

Para além das limitações gerais da ACL, as seguintes aplicam-se especificamente à migração no local de SKUs do sistema operativo:

  • O recurso de migração de SKU do sistema operacional não está disponível por meio do PowerShell ou do portal do Azure.
  • O recurso de migração de SKU do sistema operacional não suporta a renomeação de conjuntos de nós existentes.
  • Conjuntos de nós com UseGPUDedicatedVHD ativados não podem efetuar uma migração de SKU do SO.
  • A migração de SKU do sistema operacional Windows não é suportada.

Pré-requisitos

  • Um cluster AKS existente com pelo menos um pool de nós Linux.
  • CLI do Azure versão 2.86.0 ou posterior. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, consulte Install CLI do Azure.
  • Recomendamos que verifique que as suas cargas de trabalho correm com sucesso em ACL, implementando um cluster ACL num ambiente de desenvolvimento ou staging antes de migrar clusters de produção.
  • Verifique se o recurso de migração está funcionando para você em teste/desenvolvimento antes de usar o processo em um cluster de produção.
  • Garanta que os seus pods dispõem de um Orçamento de Perturbação de Pods (PDB) suficiente para permitir que o AKS mova os pods entre VMs durante a migração.

Adicionar pools de nós ACL e remover as pools de nós existentes

  1. Adicione um novo pool de nós ACL usando o az aks nodepool add comando. Usa --mode System para que o novo pool possa servir como pool de agentes do sistema, o que te permite eliminar o pool de nós original no passo seguinte.

    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
    

    Exemplo de saída:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/myNewNodePool",
      "name": "myNewNodePool",
      "osSku": "AzureContainerLinux",
      "provisioningState": "Succeeded"
    }
    
  2. Remove o teu pool de nós existente usando o az aks nodepool delete comando.

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

Migração de SKU do SO no local

Pode migrar os seus pools de nós Linux existentes para ACL alterando o SKU do sistema operativo do pool de nós, o que faz o cluster passar pelo processo padrão de atualização da imagem dos nós. Este método não requer criar novos pools de nós; Em vez disso, os teus pools de nós existentes são automaticamente reimaginados.

Executar uma migração de SKU do sistema operacional in-loco

Importante

O ACL exige Trusted Launch. Tem de incluir --enable-secure-boot e --enable-vtpm ao migrar para o SKU do SO AzureContainerLinux. O tamanho da máquina virtual (VM) do seu pool de nós também deve suportar o Trusted Launch. Se o tamanho atual da sua VM não o suporta, precisa de redimensionar ou recriar o pool de nós com um tamanho de VM suportado antes de migrar.

Migra o SKU do sistema operativo do teu pool de nós para ACL usando o az aks nodepool update comando. Este comando desencadeia uma reimagem do seu pool de nós, atualizando o SKU do SO para AzureContainerLinux. A alteração do SKU do sistema operacional aciona uma operação de atualização imediata, que leva vários minutos para ser concluída.

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

Exemplo de saída:

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

Note

Se você tiver problemas durante a migração do SKU do sistema operacional, poderá reverter para o SKU do sistema operacional anterior.

Verificar a migração do SKU do Sistema Operativo

Dica

Recomendamos monitorizar o estado do seu serviço durante algumas semanas antes de migrar os seus clusters de produção.

Assim que a migração dos seus clusters de teste estiver concluída, recomendamos monitorizar o cluster e as cargas de trabalho durante algumas semanas para confirmar que tudo está a correr como esperado antes de migrar os clusters de produção. Use os seguintes comandos para verificar a migração e monitorizar o seu cluster:

  1. Confirma que os novos nós estão a executar ACL usando o kubectl get nodes -o wide comando. A saída deve mostrar a imagem do ACL OS.

    kubectl get nodes -o wide
    
  2. Verifique se todos os seus pods e daemonsets estão em execução no novo pool de nós utilizando o comando kubectl get pods -o wide -A.

    kubectl get pods -o wide -A
    
  3. Verifique se todos os rótulos dos nós no seu pool de nós atualizado correspondem ao esperado utilizando o comando kubectl get nodes --show-labels.

    kubectl get nodes --show-labels
    
  4. Verifique a versão da imagem do nó utilizando o comando az aks nodepool list.

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

    Exemplo de saída:

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

Retroceder para o SKU anterior do sistema operativo (SO)

Se você tiver problemas durante a migração do SKU do sistema operacional, poderá reverter para o SKU do sistema operacional anterior. Para o fazer, altere o campo SKU do SO novamente para o valor anterior e reenvie a implantação, o que aciona outra operação de atualização e recria a imagem do conjunto de nós com o SKU do SO anterior. Se fizer a reversão da ACL para o SKU anterior do sistema operativo, o conjunto de nós utiliza, por defeito, a variante de imagem Trusted Launch (Gen2), a menos que o Trusted Launch tenha sido explicitamente desativado.

Volte para o SKU do sistema operacional anterior usando o comando az aks nodepool update. Este exemplo recua da ACL para o Azure Linux:

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

Para mais informações sobre ACL, veja O que é Azure Container Linux (ACL) para Azure Kubernetes Service (AKS)?