Migrar nós existentes para o Azure Container Linux (ACL) no AKS (Serviço de Kubernetes do Azure)

Neste artigo, você aprenderá como migrar seus pools 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 local do SKU do sistema operacional: altere o SKU do sistema operacional dos seus pools de nós existentes para ACL, o que recria automaticamente a imagem dos nós.
  • Remova os pools de nós existentes e adicione novos pools de nós de ACL: crie novos pools de nós de ACL, mova suas cargas de trabalho e remova os pools de nós antigos.

Importante

Se você estiver usando Azure ACL (Container Linux) no AKS, examine as seguintes considerações e limitações:

Limitações da migração local de SKU do sistema operacional

Além das limitações gerais de ACL, as seguintes limitações se aplicam especificamente à migração no local de SKU de sistema operacional:

  • 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 dá suporte à renomeação de pools de nós existentes.
  • Conjuntos de nós com UseGPUDedicatedVHD habilitado não podem realizar uma migração de SKU do sistema operacional.
  • Não há suporte para a migração do SKU do sistema operacional Windows.

Pré-requisitos

  • Um cluster AKS existente com pelo menos um pool de nós de Linux.
  • CLI do Azure versão 2.86.0 ou posterior. Execute az --version para encontrar a versão. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.
  • Recomendamos que você verifique se suas cargas de trabalho são executadas com êxito na ACL implantando um cluster ACL em um ambiente de desenvolvimento ou preparo antes de migrar clusters de produção.
  • Verifique se o recurso de migração está funcionando para você no teste/desenvolvimento antes de usar o processo em um cluster de produção.
  • Verifique se os seus pods têm um Orçamento de Interrupção de Pod (PDB) suficiente para permitir que o AKS mova os pods entre VMs durante a migração.

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

  1. Adicione um novo pool de nós de ACL usando o az aks nodepool add comando. Use o --mode System para que o novo pool possa atuar como pool de agentes do sistema, o que permite remover o pool de nós original na próxima etapa.

    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. Remova o 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 in-loco do SKU do sistema operacional

Você pode migrar seus pools de nós Linux existentes para ACL alterando a SKU do sistema operacional do pool de nós, o que faz o cluster passar pelo processo padrão de atualização da imagem do nó. Esse método não exige criar novos pools de nós; em vez disso, os pools de nós existentes são automaticamente recriados a partir da imagem.

Executar uma migração de SKU do sistema operacional no local

Importante

A ACL requer inicialização confiável. Você deve incluir --enable-secure-boot e --enable-vtpm ao migrar para o SKU do sistema operacional AzureContainerLinux. O tamanho da VM (máquina virtual) do pool de nós também deve dar suporte ao Lançamento Confiável. Se o tamanho da VM atual não der suporte a ela, você precisará redimensionar ou recriar o pool de nós com um tamanho de VM com suporte antes de migrar.

Migre o SKU do sistema operacional do pool de nós para ACL usando o az aks nodepool update comando. Esse comando dispara uma nova imagem do pool de nós, atualizando o SKU do sistema operacional para AzureContainerLinux. A alteração do SKU do sistema operacional dispara 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 de SKU do sistema operacional

Dica

Recomendamos monitorar a integridade do serviço por algumas semanas antes de migrar seus clusters de produção.

Depois que a migração for concluída em seus clusters de teste, recomendamos monitorar o cluster e as cargas de trabalho por algumas semanas para confirmar se tudo está em execução conforme o esperado antes de migrar clusters de produção. Use os seguintes comandos para verificar a migração e monitorar seu cluster:

  1. Confirme se os novos nós estão executando ACL usando o kubectl get nodes -o wide comando. A saída deve mostrar a imagem do sistema operacional ACL.

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

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

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

    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"
      }
    ]
    

Reverter para o SKU do sistema operacional anterior

Se você tiver problemas durante a migração do SKU do sistema operacional, poderá reverter para o SKU do sistema operacional anterior. Para fazer isso, altere o campo SKU do sistema operacional de volta para seu valor anterior e reenvie a implantação, que dispara outra operação de atualização e reimageia o pool de nós para sua SKU anterior do sistema operacional. Se você fizer rollback da ACL para o SKU anterior do sistema operacional, o pool de nós usará a variante de imagem Trusted Launch (Gen2) por padrão, a menos que o Trusted Launch seja explicitamente desabilitado.

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

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

Para obter mais informações sobre ACL, consulte O que é Azure ACL (Container Linux) para AKS (Serviço de Kubernetes do Azure)?