Tutorial: Migrar nós para o Linux do Azure

Neste tutorial, na terceira de cinco partes, você migra os nós existentes para o Azure Linux. Você pode migrar seus nós existentes do Ubuntu para o Linux do Azure usando um dos seguintes métodos:

  • Remova os pools de nós existentes e adicione novos pools de nós do Linux do Azure.
  • Realize uma migração local de SKU do sistema operacional (SO).

Os comandos neste tutorial usam as variáveis de ambiente definidas em Tutorial 1: criar um cluster com o host de contêiner Azure Linux para AKS.

Se você não tiver nenhum nó existente para migrar para o Linux do Azure, vá para o próximo tutorial. Em tutoriais posteriores, você aprenderá a habilitar a telemetria e o monitoramento em seus clusters e atualizar os nós do Linux do Azure.

Pré-requisitos

Note

Ao adicionar um novo pool de nós do Azure Linux, você precisa adicionar pelo menos um como --mode System. Caso contrário, o AKS não permitirá que você exclua o pool de nós existente.

  • Você precisa instalar a versão mais recente da CLI do Azure. Execute az --version para encontrar a versão. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.

Definir variáveis de ambiente

Defina as variáveis de ambiente a seguir para criar nomes de recursos exclusivos para cada implantação. Substitua o espaço reservado <your-node-pool-name> por um nome de sua escolha. Opcionalmente, você pode acrescentar um sufixo aleatório para garantir a exclusividade. O nome de um pool de nós deve começar com uma letra minúscula e só pode conter caracteres alfanuméricos. Para pools de nós do Linux, o comprimento deve ter entre 12 e 12 caracteres.

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

Adicionar pools de nós do Linux do Azure e remover pools de nós existentes

  1. Adicione um novo pool de nós do Linux do Azure usando o comando az aks nodepool add. Esse comando adiciona um novo pool de nós ao cluster com o sinalizador --mode System, o que o torna um pool de nós do sistema. Os pools de nós do sistema são necessários para clusters do Linux do Azure.

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

    Exemplo de saída:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/systempool",
      "name": "systempool",
      "provisioningState": "Succeeded"
    }
    
  2. Remova os nós existentes usando o comando az aks nodepool delete.

Migração in-loco do SKU do sistema operacional

Você pode migrar seus pools de nós do Ubuntu existentes para o Azure Linux 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 dos nós. Esse novo recurso não requer a criação de novos pools de nós.

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

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, examine 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 pode renomear pools de nós existentes.
  • O Ubuntu, o Azure Linux e o Linux do Azure com o OS Guard são os únicos destinos de migração de SKU do sistema operacional Linux com suporte.
  • O Início Confiável é exigido por padrão para o Azure Linux com o OS Guard. Você precisa ter o Trusted Launch habilitado para poder migrar para Azure Linux com o SO Guard. Como você não pode habilitar o Lançamento Confiável em pools de nós existentes, você precisa criar um novo pool de nós com o Lançamento Confiável habilitado e migrar suas cargas de trabalho para esse pool de nós.
  • Clientes que usam apenas tamanhos de máquina virtual (VM) de Geração 1 não podem migrar para o Azure Linux com OS Guard, já que não há nenhuma imagem de Geração 1 com suporte. Nesse caso, você precisa criar novos pools de nós com um tamanho de VM compatível com a Geração 2.
  • Um SKU do sistema operacional Ubuntu com UseGPUDedicatedVHD habilitado não pode executar uma migração de SKU do sistema operacional.
  • Um SKU do sistema operacional Ubuntu com CVM 20.04 habilitado não pode executar uma migração de SKU do sistema operacional.
  • Os pools de nós com o Kata habilitado não podem executar uma migração de SKU do sistema operacional.
  • Não há suporte para a migração do SKU do sistema operacional Windows.

Pré-requisitos para migração local de SKU do sistema operacional

  • Um cluster do AKS existente com pelo menos um pool de nós do Ubuntu.
  • É recomendável garantir que suas cargas de trabalho configurem e executem com sucesso no host de contêiner do Linux do Azure antes de tentar usar o recurso de migração de SKU do sistema operacional implantando um cluster do Linux do Azure no desenvolvimento/produção e verificando se o serviço permanece íntegro.
  • 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.
  • Garanta que seus pods tenham Pod Disruption Budget (PDB) suficiente para permitir que o AKS mova pods entre VMs durante a atualização.
  • Você precisa da versão 2.61.0 ou posterior da CLI do Azure. Execute az --version para encontrar a versão. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.
  • Se você estiver usando o Terraform, deverá ter a versão v3.111.0 ou posterior do módulo AzureRM do Terraform.

Migrar o SKU do sistema operacional do pool de nós do Ubuntu

Migre o SKU do sistema operacional do pool de nós para o Linux do Azure usando o comando az aks nodepool update. Esse comando atualiza o SKU do sistema operacional para o pool de nós do Ubuntu para o Linux do Azure. 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 $NODE_POOL_NAME --os-sku AzureLinux

Exemplo de saída:

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

Depois que a migração for concluída em seus clusters de teste, você deverá verificar o seguinte para garantir uma migração bem-sucedida:

  • Se o destino de migração for o Linux do Azure, execute o comando kubectl get nodes -o wide. A saída deve mostrar Microsoft Azure Linux 3.0 como a imagem do sistema operacional e .azl3 no final da versão do kernel.
  • Execute o comando kubectl get pods -o wide -A para verificar se todos os pods e daemonsets estão em execução no novo pool de nós.
  • Execute o comando kubectl get nodes --show-labels para verificar se todos os rótulos de nó no pool de nós atualizado são o que você espera.

Dica

É recomendável monitorar a integridade do serviço por algumas semanas antes de migrar os clusters de produção.

Executar a migração de SKU do sistema operacional nos clusters de produção

  1. Atualize os modelos existentes para definir OSSKU=AzureLinux. Verifique se apiVersion está definido como 2023-07-01 ou posterior.

    • Modelos ARM: Use "OSSKU": "AzureLinux" na seção agentPoolProfile.
    • Bicep: Use osSku: "AzureLinux" na seção agentPoolProfile.
    • Terraform: use os_sku = "AzureLinux" na seção default_node_pool.
  2. Reimplante o modelo do ARM, Bicep ou Terraform para que o cluster aplique a nova configuração OSSKU. Durante a implantação, o cluster se comporta como se estivesse fazendo uma atualização de imagem de nó. O cluster aumenta a capacidade e reinicia os nós existentes um a um na imagem mais recente do AKS do novo SKU do sistema operacional.

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, você precisa alterar o campo SKU do sistema operacional em seu modelo e reenviar a implantação, o que dispara outra operação de atualização e restaura o pool de nós para seu SKU anterior do sistema operacional.

Você pode reverter para o SKU do sistema operacional anterior usando o az aks nodepool update comando. Esse comando atualiza o SKU do sistema operacional para o pool de nós do Linux do Azure de volta para o Ubuntu.

Próxima etapa

Neste tutorial, você migrou nós existentes para o Azure Linux removendo pools de nós existentes e adicionando novos pools de nós do Azure Linux ou realizando uma migração local da SKU do sistema operacional.

No próximo tutorial, você aprenderá a habilitar a telemetria para monitorar os clusters.