Tutorial: Migrar nós para Azure Container Linux (ACL)

Neste tutorial, na terceira de cinco partes, vai migrar os seus nós existentes para ACL. Você pode migrar seus nós existentes usando um dos seguintes métodos:

  • Remova os grupos de nós existentes e adicione novos grupos de nós ACL.
  • Realizar uma migração de SKU no local do sistema operativo (SO).

Os comandos deste tutorial utilizam as variáveis de ambiente definidas no Tutorial 1: Criar um cluster com ACL para AKS.

Se você não tiver nenhum nó existente para migrar, pule para o próximo tutorial. Em tutoriais posteriores, aprendes a ativar a telemetria e monitorização nos teus clusters e a atualizar os nós ACL.

Pré-requisitos

  • Em tutoriais anteriores, criaste e implementaste um cluster ACL. Se ainda não completou estes passos e quiser acompanhar, veja o Tutorial 1: Crie um cluster com ACL para AKS.
  • Azure Container Linux requer CLI do Azure versão 2.86.0 ou superior. Use o az version comando para localizar a versão. Para atualizar para a versão mais recente, use o az upgrade comando.

Considerações e limitações do Azure Container Linux (ACL)

Antes de começar, reveja as seguintes considerações e limitações para o ACL:

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. O exemplo seguinte cria um pool de nós chamado aclsystem que adiciona três nós ao cluster:

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --name aclsystem \
        --mode System \
        --os-sku AzureContainerLinux \
        --node-count 3
    

    Exemplo de saída:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myACLResourceGroup/providers/Microsoft.ContainerService/managedClusters/myACLCluster/nodePools/aclsystem",
      "name": "aclsystem",
      "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

Limitações para migração in-place de SKU do SO local

Há várias configurações que podem bloquear a solicitação de migração de SKU do sistema operacional. Para garantir uma migração bem-sucedida, revise as seguintes diretrizes e limitações:

  • 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.
  • O Ubuntu, o Azure Linux e o AzureContainerLinux são os únicos destinos de migração de SKU de SO Linux suportados.
  • O ACL exige Trusted Launch. Se ainda não estiver ativado no seu pool de nós, deve incluir --enable-secure-boot e --enable-vtpm ao migrar para o SKU do SO AzureContainerLinux. O tamanho da 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.
  • As VMs da Geração 1 não são suportadas.
  • Um SKU do sistema operacional Ubuntu com UseGPUDedicatedVHD ativado não pode executar uma migração de SKU do sistema operacional.
  • Não há suporte para Máquinas Virtuais Confidenciais (CVMs).
  • O Pod Sandboxing não é suportado.
  • A migração de SKU do sistema operacional Windows não é suportada.

Requisitos prévios para migração de SKU do sistema operativo no local

  • Um cluster AKS existente com pelo menos um pool de nós Linux.
  • 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.
  • Certifique-se de que os seus pods têm um Orçamento de Disrupção de Pods (PDB) suficiente para permitir que o AKS mova os pods entre VMs durante a atualização.
  • Você precisa da CLI do Azure versão 2.61.0 ou superior. Use o az version comando para localizar a versão. Para atualizar para a versão mais recente, use o az upgrade comando.

Migrar para ACL através da migração in-place do SKU do sistema operativo

Pode migrar os conjuntos de nós existentes do Ubuntu ou do Azure Linux para ACL alterando o SKU do SO do conjunto de nós, o que desencadeia o processo padrão de atualização da imagem dos nós no cluster. 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.

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 VM do seu pool de nós também deve suportar o Trusted Launch.

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 teu pool de nós. 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/myACLResourceGroup/providers/Microsoft.ContainerService/managedClusters/myACLCluster/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

Quando a migração estiver concluída nos seus clusters de teste, verifique o seguinte para garantir uma migração bem-sucedida:

  1. Confirme que os novos nós estão a executar ACL usando o seguinte comando:

    kubectl get nodes -o wide
    
  2. Verifica se todos os teus pods e daemonsets estão a correr no novo pool de nós usando o seguinte comando:

    kubectl get pods -o wide -A
    
  3. Verifique se todas as etiquetas dos nós no seu pool de nós atualizado correspondem ao esperado, utilizando o seguinte comando:

    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": "nodepool1",
        "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0",
        "osSku": "AzureContainerLinux"
      }
    ]
    

Dica

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

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.

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

Passo seguinte

Neste tutorial, migraste nós existentes para ACL. No próximo tutorial, aprende como ativar a telemetria e a monitorização do seu cluster ACL.