Perguntas frequentes sobre pools de nós do Windows Server no AKS

No Serviço de Kubernetes do Azure (AKS), você pode criar um pool de nós que executa o Windows Server como o sistema operacional convidado nos nós. Esses nós podem executar aplicativos de contêiner nativos do Windows, como aqueles com base no .NET Framework. Há diferenças em como o sistema operacional Linux e Windows oferece suporte a contêineres. Alguns recursos comuns do Kubernetes do Linux e relacionados ao pod não estão disponíveis atualmente para pools de nós do Windows.

Este artigo descreve algumas das perguntas frequentes e os conceitos do sistema operacional para nós do Windows Server no AKS.

Quais tipos de discos têm suporte para Windows?

Os Discos do Azure e os Arquivos do Azure são os tipos de volume com suporte e são acessados como volumes NTFS no contêiner do Windows Server.

O Linux e o Windows dão suporte a VMs (máquinas virtuais) de geração 2?

As VMs de geração 2 têm suporte apenas no Linux e no Windows para WS2022. Para obter mais informações, veja Suporte para VMs de geração 2 no Azure.

Como fazer para aplicar patch aos nós do Windows?

Para obter os patches mais recentes para os nós do Windows, você pode atualizar o pool de nós ou atualizar a imagem do nó. As atualizações do Windows não estão habilitadas nos nós no AKS. O AKS lança novas imagens de pool de nós assim que os patches estão disponíveis, e é responsabilidade do usuário atualizar pools de nós para se manter atualizado sobre patches e hotfixes. Esse processo de patch também é verdadeiro para a versão do Kubernetes que está sendo usada. Notas sobre a versão do AKS indicam quando novas versões estão disponíveis. Para obter mais informações sobre a atualização do pool de nós do Windows Server, confira Fazer upgrade de um pool de nós no AKS. Se você estiver interessado apenas em atualizar a imagem do nó, consulte Upgrades da imagem do nó do AKS.

Observação

A imagem atualizada do Windows Server será usada somente se um upgrade de cluster (upgrade do plano de controle) tiver sido executado antes do upgrade do pool de nós.

Há suporte para preservar o IP de origem do cliente?

No momento, não há suporte para preservação de IP de origem do cliente com nós do Windows.

Posso alterar o número máximo de pods por nó?

Sim. Para conhecer as implicações de uma alteração e as opções disponíveis, confira Número máximo de pods.

Qual é o tempo limite de TCP padrão no sistema operacional Windows?

O tempo limite de TCP padrão no sistema operacional Windows é de 4 minutos. Esse valor não é configurável. Quando um aplicativo usa um tempo limite mais longo, as conexões TCP entre contêineres diferentes no mesmo nó fecham após quatro minutos.

Por que estou vendo um erro ao tentar criar um pool de agentes do Windows?

Se você tiver criado o cluster antes de fevereiro de 2020 e nunca fez nenhuma operação de atualização de cluster, o cluster ainda usará uma imagem antiga do Windows. Você pode ter visto um erro semelhante a:

"A seguinte lista de imagens referenciadas do modelo de implantação não foi encontrada: Editor: MicrosoftWindowsServer, Oferta: WindowsServer, Sku: 2019-datacenter-core-smalldisk-2004, Versão: mais recente. Confira Localizar e usar imagens de VM do Azure Marketplace com Azure PowerShell para instruções sobre como localizar imagens disponíveis."

Para corrigir esse erro:

  1. Atualize o plano de controle de cluster para atualizar a oferta de imagem e o editor.
  2. Crie novos pools de agentes do Windows.
  3. Mova os pods do Windows de pools de agentes do Windows existentes para novos pools de agentes do Windows.
  4. Exclua pools antigos de agentes do Windows.

Por que estou vendo um erro ao tentar implantar os pods do Windows?

Se você especificar um valor em --max-pods menor que o número de pods que deseja criar, poderá ver o erro No available addresses.

Para corrigir esse erro, use o comando az aks nodepool add com um valor --max-pods alto o suficiente:

az aks nodepool add \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --name $NODEPOOL_NAME \
    --max-pods 3

Para obter mais detalhes, confira a --max-podsdocumentação.

Por que há um usuário inesperado chamado "sshd" no nó da VM?

O AKS adiciona um usuário chamado "sshd" ao instalar o serviço OpenSSH. Esse usuário não é mal-intencionado. Recomendamos que os clientes atualizem seus alertas para ignorar essa conta de usuário inesperado.

Como fazer girar a entidade de serviço para o pool de nós do Windows?

Os pools de nós do Windows não são suportados pela rotação da entidade de serviço. Para atualizar a entidade de serviço, crie um novo pool de nós do Windows e migre o pods do pool mais antigo para o novo. Depois que os pods são migrados para o novo pool, exclua o pool do nó mais antigo.

Em vez de entidades de serviço, use identidades gerenciadas, que são essencialmente wrappers em volta de entidades de serviço. Para obter mais informações, confira Usar identidades gerenciadas no Serviço de Kubernetes do Azure.

Como altero a senha do administrador para nós do Windows Server em meu cluster?

Ao criar o cluster AKS, você especifica os parâmetros --windows-admin-password e --windows-admin-username para definir as credenciais de administrador para qualquer nó do Windows Server no cluster. Se você não especificou as credenciais de administrador quando criou um cluster usando o portal do Azure ou quando configurou --vm-set-type VirtualMachineScaleSets e --network-plugin azure usando a CLI do Azure, o nome de usuário terá, como padrão, azureuser e uma senha aleatória.

Para alterar a senha do administrador, use o comando az aks update:

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --windows-admin-password $NEW_PW

Importante

A execução da operação az aks update atualiza apenas os pools de nós do Windows Server e causará uma reinicialização. Os pools de nós do Linux não são afetados.

Quando você altera --windows-admin-password, a nova senha precisa ter pelo menos 14 caracteres e atender aos requisitos de senha do Windows Server.

Quantos pools de nós posso criar?

Um cluster do AKS com pools de nós do Windows não tem um limite de recursos do AKS diferente do padrão especificado para o serviço AKS. Para obter mais informações, confira Cotas, restrições de tamanho de máquina virtual e disponibilidade de região no AKS (Serviço de Kubernetes do Azure).

Como posso nomear meus pools de nós do Windows?

Um pool de nós do Windows pode ter um nome de seis caracteres.

Todos os recursos têm suporte com nós do Windows?

No momento, não há suporte para kubenet com nós do Windows.

Posso executar controladores de entrada em nós do Windows?

Sim, um controlador de entrada que dá suporte a contêineres do Windows Server pode ser executado em nós do Windows no AKS.

Meus contêineres do Windows Server podem usar a gMSA?

O suporte à gMSA (conta de serviço gerenciado por grupo) está geralmente disponível para Windows no AKS. Consulte Habilitar as GMSA (Contas de Serviço Gerenciado de Grupo) para seus nós do Windows Server no cluster do AKS (Serviço de Kubernetes do Azure)

Posso usar Azure Monitor para contêineres com nós e contêineres do Windows?

Sim, você pode. No entanto, o Azure Monitor está em versão prévia pública para coletar logs (stdout, stderr) e métricas de contêineres do Windows. Você também pode anexar à transmissão ao vivo de logs stdout de um contêiner do Windows.

Há alguma limitação no número de serviços em um cluster com nós do Windows?

Um cluster com nós do Windows pode ter aproximadamente 500 serviços (ou menos) antes de encontrar esgotamento de porta. Essa limitação se aplica a um Serviço de Kubernetes com a Política de Tráfego Externa definida como "Cluster".

Quando a política de tráfego externo em um Serviço é configurada como Cluster, o tráfego passa por um NAT de origem adicional no nó que também resulta na reserva de uma porta do pool de portas dinâmicas TCPIP. Esse pool de portas é um recurso limitado (~portas de 16K por padrão) e muitas conexões ativas com Serviços podem levar ao esgotamento dinâmico do pool de portas, resultando em quedas de conexão.

Se o Serviço Kubernetes estiver configurado com a Política de Tráfego Externa definida como "Local", os problemas de esgotamento da porta provavelmente não ocorrerão em 500 serviços.

Posso usar o Benefício Híbrido do Azure com nós do Windows?

Sim. O Benefício Híbrido do Azure para Windows Server reduz os custos operacionais, o que permite que você traga sua licença do Windows Server local para nós do Windows do AKS.

O Benefício Híbrido do Azure pode ser usado em todo o cluster do AKS ou em nós individuais. Para nós individuais, você precisa navegar até o grupo de recursos do nó e aplicar o Benefício Híbrido do Azure diretamente aos nós. Para obter mais informações sobre como aplicar o Benefício Híbrido do Azure a nós individuais, consulte Benefício Híbrido do Azure para Windows Server.

Para usar o Benefício Híbrido do Azure em um novo cluster do AKS, execute o comando az aks create e use o argumento --enable-ahub.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-sku Standard \
    --windows-admin-password 'Password1234$' \
    --windows-admin-username azure \
    --network-plugin azure
    --enable-ahub

Para usar o Benefício Híbrido do Azure em um cluster do AKS existente, execute o comando az aks update e atualize o cluster usando o argumento --enable-ahub.

az aks update \
    --resource-group myResourceGroup
    --name myAKSCluster
    --enable-ahub

Para verificar se o Benefício Híbrido do Azure está definido nos nós do Windows no cluster, execute o comando az vmss show com os argumentos --name e --resource-group para consultar o conjunto de dimensionamento de máquinas virtuais. Para identificar o grupo de recursos no qual o conjunto de dimensionamento do pool de nós do Windows foi criado, execute o comando az vmss list -o table.

az vmss show --name myScaleSet --resource-group MC_<resourceGroup>_<clusterName>_<region>

Se os nós do Windows no conjunto de dimensionamento tiverem o Benefício Híbrido do Azure habilitado, a saída de az vmss show será semelhante à seguinte:

""hardwareProfile": null,
    "licenseType": "Windows_Server",
    "networkProfile": {
      "healthProbe": null,
      "networkApiVersion": null,

Como altero o fuso horário de um contêiner em execução?

Para alterar o fuso horário de um contêiner do Windows Server em execução, conecte-se ao contêiner em execução com uma sessão do PowerShell. Por exemplo:

kubectl exec -it CONTAINER-NAME -- powershell

No contêiner em execução, use Set-TimeZone para definir o fuso horário do contêiner em execução. Por exemplo:

Set-TimeZone -Id "Russian Standard Time"

Para ver o fuso horário atual do contêiner em execução ou uma lista disponível de fusos horários, use Get-TimeZone.

Posso manter a afinidade de sessão das conexões de cliente com os pods usando contêineres do Windows?

Embora a manutenção da afinidade de sessão de conexões de cliente com pods usando contêineres do Windows vá ter suporte na versão do sistema operacional Windows Server 2022, você atualmente obtém afinidade de sessão por IP do cliente com a limitação, do pod desejado, de execução de uma única instância por nó e com a configuração do serviço do Kubernetes para direcionar o tráfego para o pod no nó local.

Use a seguinte configuração:

  1. Use um cluster AKS que executa uma versão mínima de 1.20.
  2. Restrinja seu pod para permitir apenas uma instância por nó do Windows. Você pode conseguir isso usando a antiafinidade na configuração de implantação.
  3. Em sua configuração de serviço Kubernetes, defina externalTrafficPolicy=Local. Isso faz com que o serviço do Kubernetes direcione tráfego somente para podes no nó local.
  4. Em sua configuração de serviço do Kubernetes, defina sessionAffinity: ClientIP. Isso fará com que o Azure Load Balancer seja configurado com afinidade de sessão.

Próximas etapas

Para dar os primeiros passos com os contêineres do Windows Server no AKS, confira Criar um pool de nós que executa o Windows Server no AKS.