Atualizar a versão do sistema operacional (SO) para suas cargas de trabalho do Windows do AKS (Serviço de Kubernetes do Azure)

Ao atualizar da versão do sistema operacional de uma carga de trabalho do Windows em execução no AKS (Serviço de Kubernetes do Azure), você deve implantar um novo pool de nós para garantir que as versões do Windows correspondam em cada pool de nós. Este artigo descreve as etapas para atualizar a versão do sistema operacional para cargas de trabalho do Windows no AKS.

Suporte à versão do sistema operacional do Windows Server

Quando uma nova versão do sistema operacional Do Windows Server é lançada, o AKS está comprometido em dar suporte a ela. Recomendamos que você atualize para a versão mais recente para aproveitar as correções, melhorias e novas funcionalidades. O AKS fornece um ciclo de vida de suporte de cinco anos para cada versão do Windows Server, a partir do Windows Server 2022. Durante esse período, o AKS lança uma nova versão que dá suporte a uma versão mais recente do sistema operacional Windows Server para a qual você deve atualizar. Após o término do ciclo de vida de cinco anos, você deve migrar cargas de trabalho para versões mais recentes com suporte para garantir compatibilidade, atualizações de segurança e suporte contínuo do AKS.

Importante

A partir de 30 de junho de 2028, o AKS (Serviço de Kubernetes do Azure) não oferece mais suporte a pools de nós do Windows Server 2022. Windows Server 2022 não tem suporte no Kubernetes versão 1.37 e posterior. A partir de 1º de junho de 2029, o AKS removerá todas as imagens de nós existentes para o Windows Server 2022, o que significa que as operações de dimensionamento falharão. Para obter mais informações sobre essa desativação, consulte o problema de desativação do GitHub e o anúncio de desativação do Azure Updates. Para se manter informado sobre anúncios e atualizações, acompanhe as notas de versão do AKS.

Limitações

  • Não há suporte para a atualização do pool de nós para migrar de uma versão do Windows Server para outra.
  • Diferentes versões do Windows Server não podem coexistir no mesmo pool de nós no AKS. Você deve criar um pool de nós para hospedar a nova versão do sistema operacional. É importante que você corresponda as permissões e o acesso do pool de nós anterior ao novo.
  • Windows Server 2025 tem suporte a partir do Kubernetes versão 1.32.

Antes de começar

  • Atualize a instrução FROM no Dockerfile para a nova versão do sistema operacional.
  • Confira seu aplicativo e verifique se o aplicativo de contêiner funciona na nova versão do sistema operacional.
  • Implante o aplicativo de contêiner verificado no AKS em um ambiente de desenvolvimento ou de teste.
  • Anote o novo nome ou tag da imagem para uso neste artigo.

Observação

Para saber como criar um Dockerfile para as cargas de trabalho do Windows, consulte Dockerfile no Windows e Otimizar Dockerfiles do Windows.

Adicionar um novo pool de nós a um cluster existente

Adicione um pool de nós com a versão do sistema operacional desejada ao cluster existente:

Os pools de nós do Windows Server 2025 exigem uma imagem com FIPS habilitado. Ao adicionar um pool de nós Windows Server 2025, inclua --enable-fips-image (CLI do Azure) ou -EnableFIPS (Azure PowerShell).

Atualizar o arquivo YAML

O Seletor de Nós é a opção mais comum e recomendada para o posicionamento de pods do Windows em nós do Windows.

  1. Adicione o Seletor de Nós ao arquivo YAML incluindo a seguinte anotação:

          nodeSelector:
            "kubernetes.io/os": windows
    

    A anotação encontra qualquer nó do Windows disponível e coloca o pod nesse nó (seguindo todas as outras regras de agendamento). Ao atualizar a versão do sistema operacional, você precisa garantir o posicionamento em um nó do Windows e em um nó que esteja executando a versão mais recente do sistema operacional. Para fazer isso, uma opção é usar uma anotação diferente. Atualize <OSSKU> para que corresponda ao ossku da versão desejada do seu sistema operacional Windows, por exemplo Windows2025.

          nodeSelector:
            "kubernetes.azure.com/os-sku": <OSSKU>
    
  2. Depois de atualizar o nodeSelector no arquivo YAML, você também precisa atualizar a imagem de contêiner que deseja usar. Você pode obter essas informações da etapa anterior na qual criou uma versão do aplicativo conteinerizado alterando a instrução FROM no Dockerfile.

    Observação

    Você deve usar o mesmo arquivo YAML usado para implantar inicialmente o aplicativo. Isso garante que nenhuma outra configuração seja alterada além de nodeSelector e a imagem de contêiner.

Aplicar o arquivo YAML atualizado à carga de trabalho existente

  1. Exiba os nós no cluster usando o comando kubectl get nodes.

    kubectl get nodes -o wide
    

    A saída de exemplo a seguir mostra todos os nós no cluster, incluindo o novo pool de nós que você criou e os pools de nós existentes:

    NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
    aks-agentpool-18877473-vmss000000   Ready    agent   5h40m   v1.33.12   10.240.0.4     <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure  containerd://1.7.33-1
    akspoolws000000                     Ready    agent   3h15m   v1.33.12   10.240.0.208   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000001                     Ready    agent   3h17m   v1.33.12   10.240.0.239   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000002                     Ready    agent   3h17m   v1.33.12   10.240.1.14    <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akswspool000000                     Ready    agent   5h37m   v1.33.12   10.240.0.115   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    akswspool000001                     Ready    agent   5h37m   v1.33.12   10.240.0.146   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    akswspool000002                     Ready    agent   5h37m   v1.33.12   10.240.0.177   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    
  2. Aplique o arquivo YAML atualizado à carga de trabalho existente usando o comando kubectl apply e especifique o nome do arquivo YAML.

    kubectl apply -f <filename>
    

    A saída de exemplo a seguir mostra um status configurado para a implantação:

    deployment.apps/sample configured
    service/sample unchanged
    

    Nesse ponto, o AKS inicia o processo de encerramento dos pods existentes e implantação de novos pods nos nós com a anotação nodeSelector.

  3. Verifique a status da implantação usando o comando kubectl get pods.

    kubectl get pods -o wide
    

    A saída de exemplo a seguir mostra os pods no namespace default:

    NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE              NOMINATED NODE   READINESS GATES
    sample-7794bfcc4c-k62cq   1/1     Running   0          2m49s   10.240.0.238   akspoolws000000   <none>           <none>
    sample-7794bfcc4c-rswq9   1/1     Running   0          2m49s   10.240.1.10    akspoolws000001   <none>           <none>
    sample-7794bfcc4c-sh78c   1/1     Running   0          2m49s   10.240.0.228   akspoolws000000   <none>           <none>
    

Considerações sobre segurança e autenticação

Se você estiver usando as Contas de Serviço Gerenciado de Grupo (gMSA), será necessário atualizar a configuração de Identidade Gerenciada para o novo pool de nós. O gMSA usa um segredo (conta de usuário e senha) para que o nó que executa o pod do Windows possa autenticar o contêiner no Microsoft Entra ID. Para acessar esse segredo no Azure Key Vault, o nó usa uma Identidade Gerenciada que permite que o nó acesse o recurso. Como as Identidades Gerenciadas são configuradas por pool de nós e o pod agora reside em um novo pool de nós, você precisa atualizar essa configuração. Para obter mais informações, consulte Habilitar as Contas de Serviço Gerenciado de Grupo (GMSA) nos nós do seu Windows Server no cluster do seu Serviço de Kubernetes do Azure (AKS).

O mesmo princípio se aplica às Identidades Gerenciadas para qualquer outro pool de pods ou nós ao acessar outros recursos do Azure. Você precisa atualizar qualquer acesso que a Identidade Gerenciada fornece para refletir o novo pool de nós. Para exibir as atividades de atualização e entrada, veja Como exibir a atividade de Identidade Gerenciada.

Próximas etapas

Neste artigo, você aprendeu a atualizar a versão do sistema operacional para cargas de trabalho do Windows no AKS. Para saber mais sobre as cargas de trabalho do Windows no AKS, consulte Implantar um aplicativo de contêiner do Windows no Serviço de Kubernetes do Azure (AKS).