Compartilhar via


Posicionamento de recursos no Kubernetes do Nexus do Operador do Azure

As instâncias do Nexus do Operador são implantadas no local do cliente. Cada instância é composta por um ou mais racks de servidores bare-metal.

Quando um usuário cria um Cluster kubernetes do Nexus (NKS), ele especifica uma contagem e uma SKU (unidade de manutenção de estoque) para máquinas virtuais (VM) que compõem o Plano de Controle do Kubernetes e um ou mais Pools de Agentes. Os pools de agentes são o conjunto de nós de trabalho no qual as funções de rede conteinerizadas de um cliente são executadas.

A plataforma Nexus é responsável por decidir o servidor bare-metal no qual cada VM NKS é iniciada.

Como a plataforma Nexus agenda uma VM do Cluster Kubernetes do Nexus

Primeiro, o Nexus identifica o conjunto de possíveis servidores bare metal que atendem a todos os requisitos de recursos da SKU de VM do NKS. Por exemplo, se o usuário especificou um SKU de VM NC_G48_224_v1 para o pool de agentes, o Nexus coleta os servidores bare-metal que têm capacidade disponível para 48 vCPU, 224 Gi de RAM etc.

Em seguida, o Nexus analisa o campo AvailabilityZones do pool de agentes ou do painel de controle que está sendo agendado. Se esse campo não estiver vazio, o Nexus filtrará a lista de servidores bare-metal em potencial apenas para esses servidores nas zonas de disponibilidade especificadas (racks). Esse comportamento é uma restrição de agendamento rígido. Se não houver servidores bare-metal na lista filtrada, o Nexus não agendará a VM NKS e o cluster não será provisionado.

Depois que o Nexus identifica uma lista de possíveis servidores bare-metal nos quais colocar a VM NKS, o Nexus escolhe um dos servidores bare-metal depois de aplicar as seguintes regras de classificação:

  1. Prefira servidores bare-metal em zonas de disponibilidade (racks) que não tenham VMs NKS desse cluster NKS. Em outras palavras, espalhe as VMs NKS para um cluster NKS entre zonas de disponibilidade.

  2. Prefira servidores bare-metal em uma única zona de disponibilidade (rack) que não tenham outras VMs NKS do mesmo cluster NKS. Em outras palavras, espalhe as VMs do NKS para um cluster NKS entre servidores bare-metal dentro de uma zona de disponibilidade.

  3. Se a SKU de VM NKS for NC_G48_224_v1 ou NC_P46_224_v1, prefira servidores bare metal que já abriguem NC_G48_224_v1 ou NC_P46_224_v1 VMs NKS de outros clusters NKS. Em outras palavras, agrupe as VMs extra-grandes de diferentes clusters NKS nos mesmos servidores bare-metal. Essa regra “empacota” as VMs extragrandes a fim de reduzir a fragmentação dos recursos de computação disponíveis.

Cenários de posicionamento de exemplo

As seções a seguir destacam o comportamento que os usuários do Nexus devem esperar ao criar clusters NKS em um ambiente do Operator Nexus.

Dica: você pode ver para qual servidor bare-metal suas VMs NKS foram agendadas examinando a propriedade nodes.bareMetalMachineId do recurso KubernetesCluster do NKS ou exibindo a coluna "Host" na exibição de Nós de Cluster do Kubernetes no Portal do Azure.

Uma captura de tela mostrando o servidor bare-metal para VMs NKS.

O exemplo de ambiente Nexus do Operador traz estas especificações:

  • Oito racks de 16 servidores bare-metal
  • Cada servidor bare-metal contém duas células NUMA
  • Cada célula NUMA fornece 48 CPU e 224 Gi de RAM

Ambiente vazio

Considerando um ambiente do Nexus do Operador vazio com a capacidade fornecida, criamos três clusters do Kubernetes do Nexus de diferentes tamanhos.

Os Clusters NKS têm essas especificações e presumimos para fins deste exercício que o usuário cria os três Clusters na seguinte ordem:

Cluster A

  • Painel de controle, SKU NC_G12_56_v1, três contagens
  • Pool de agentes nº 1, NC_P46_224_v1 SKU, 24 contagens
  • Pool de agentes nº 2, NC_G6_28_v1 SKU, seis contagens

Cluster B

  • Painel de controle, SKU NC_G24_112_v1, cinco contagens
  • Pool de agentes nº 1, NC_P46_224_v1 SKU, 48 contagens
  • Pool de agentes nº 2, SKU NC_P22_112_v1, 24 contagens

Cluster C

  • Painel de controle, SKU NC_G12_56_v1, três contagens
  • Pool de agentes nº 1, NC_P46_224_v1 SKU, 12 contagens, AvailabilityZones = [1,4]

Aqui está uma tabela resumindo o que o usuário precisa ver depois de iniciar os Clusters A, B e C em um ambiente vazio do Nexus do Operador.

Cluster pool SKU Contagem total Nº de racks esperados Nº de racks reais Nº de VMs esperadas por rack Nº de VMs reais por rack
Um Painel de Controle NC_G12_56_v1 3 3 3 1 1
Um Pool de agentes nº 1 NC_P46_224_v1 24 8 8 3 3
Um Pool de agentes nº 2 NC_G6_28_v1 6 6 6 1 1
B Painel de Controle NC_G24_112_v1 5 5 5 1 1
B Pool de agentes nº 1 NC_P46_224_v1 48 8 8 6 6
B Pool de agentes nº 2 NC_P22_112_v1 24 8 8 3 3
C Painel de Controle NC_G12_56_v1 3 3 3 1 1
C Pool de agentes nº 1 NC_P46_224_v1 12 2 2 6 6

Há oito racks, de modo que as VMs para cada pool sejam distribuídas em até oito racks. Os pools com mais de oito VMs exigem várias VMs por rack distribuídas em diferentes servidores bare-metal.

O pool de agentes nº 1 do Cluster C tem 12 VMs restritas a AvailabilityZones [1, 4]. Portanto, ele tem 12 VMs em 12 servidores bare-metal, seis em cada um dos racks 1 e 4.

VMs extra-grandes (a SKU NC_P46_224_v1) de clusters diferentes são colocadas nos mesmos servidores bare-metal (consulte a regra nº 3 em Como a plataforma Nexus agenda uma VM do Cluster Kubernetes do Nexus).

Aqui está uma visualização de um layout que o usuário pode ver depois de implantar os Clusters A, B e C em um ambiente vazio.

Diagrama mostrando o possível layout das VMs após a primeira implantação.

Ambiente meio cheio

Agora, executamos um exemplo de como iniciar outro Cluster NKS quando o ambiente de destino estiver meio cheio. O ambiente de destino fica preenchido pela metade depois que os Clusters A, B e C são implantados nele.

O Cluster D tem as seguintes especificações:

  • Painel de controle, SKU NC_G24_112_v1, cinco contagens
  • Pool de agentes nº 1, NC_P46_224_v1 SKU, 24 contagens, AvailabilityZones = [7,8]
  • Pool de agentes nº 2, SKU NC_P22_112_v1, 24 contagens

Aqui está uma tabela resumindo o que o usuário precisa ver depois de iniciar o Cluster D no ambiente do Nexus do Operador preenchido pela metade que é criado após a inicialização dos Clusters A, B e C.

Cluster pool SKU Contagem total Nº de racks esperados Nº de racks reais Nº de VMs esperadas por rack Nº de VMs reais por rack
D Painel de Controle NC_G12_56_v1 5 5 5 1 1
D Pool de agentes nº 1 NC_P46_224_v1 24 2 2 12 12
D Pool de agentes nº 2 NC_P22_112_v1 24 8 8 3 3

O pool de agentes nº 1 do Cluster D tem 12 VMs restritas a AvailabilityZones [7, 8]. Portanto, ele tem 12 VMs em 12 servidores bare-metal, seis em cada um dos racks 7 e 8. Essas VMs chegam em servidores bare-metal que também hospedam VMs extragrandes de outros clusters, devido à regra de classificação que agrupa as VMs extragrandes de diferentes clusters nos mesmos servidores bare-metal.

Se uma VM do painel de controle do Cluster D chegar no rack 7 ou 8, será provável que uma VM do pool de agentes nº 1 do Cluster D chegue no mesmo servidor bare-metal da VM do painel de controle do Cluster D. Esse comportamento ocorre devido ao pool de agentes nº 1 ser “fixado” nos racks 7 e 8. As restrições de capacidade nesses racks fazem com que o agendador colecione uma VM do plano de controle e uma VM do Pool de Agentes nº 1 do mesmo cluster NKS.

O pool de agentes nº 2 do Cluster D tem três VMs em diferentes servidores bare-metal em cada um dos oito racks. Como resultado, há restrições de capacidade devido ao fato de o pool de agentes nº 1 do Cluster D estar fixado nos racks 7 e 8. Portanto, as VMs do pool de agentes nº 1 do Cluster D e do pool de agentes nº 2 são colocadas nos mesmos servidores bare-metal, nos racks 7 e 8.

Aqui está uma visualização de um layout que o usuário pode ver depois de implantar os Clusters D no ambiente de destino.

Diagrama mostrando o possível layout das VMs após a segunda implantação.

Ambiente quase completo

Em nosso exemplo de ambiente de destino, quatro dos oito racks estão perto do limite de capacidade. Vamos tentar iniciar outro Cluster NKS.

O Cluster E tem as seguintes especificações:

  • Painel de controle, SKU NC_G24_112_v1, cinco contagens
  • Pool de agentes nº 1, NC_P46_224_v1 SKU, 32 contagens

Aqui está uma tabela resumindo o que o usuário precisa ver depois de iniciar o Cluster E no ambiente de destino.

Cluster pool SKU Contagem total Nº de racks esperados Nº de racks reais Nº de VMs esperadas por rack Nº de VMs reais por rack
E Painel de Controle NC_G24_112_v1 5 5 5 1 1
E Pool de agentes nº 1 NC_P46_224_v1 32 8 8 4 3, 4 ou 5

O pool de agentes nº 1 do Cluster E será distribuído de maneira irregular em todos os oito racks. Os racks 7 e 8 terão três VMs NKS do Pool de Agentes nº 1 em vez das quatro VMs NKS esperadas porque não há mais capacidade para as VMs de SKU extra-grandes nesses racks depois de agendar clusters A a D. Como os racks 7 e 8 não têm capacidade para o quarto SKU extra-grande no Pool de Agentes nº 1, cinco VMs NKS cairão nos dois racks menos utilizados. No exemplo, esses racks menos utilizados eram os racks 3 e 6.

Aqui está uma visualização de um layout que o usuário pode ver depois de implantar os Clusters E no ambiente de destino.

Diagrama mostrando o possível layout das VMs após a terceira implantação.

Posicionamento durante uma atualização de runtime

Desde abril de 2024 (Nuvem de Rede versão 2304.1), as atualizações de runtime são feitas por meio de uma estratégia rack a rack. A imagem dos servidores bare-metal do rack 1 é refeita de uma só vez. O processo de atualização é colocado em pausa até que todos os servidores bare-metal sejam reiniciados com êxito e informem ao Nexus que estão prontos para receber cargas de trabalho.

Observação

É possível instruir o Operador Nexus a apenas refazer a imagem de uma parte dos servidores bare-metal em um rack de uma só vez, no entanto, o padrão é refazer a imagem de todos os servidores bare-metal em um rack em paralelo.

Quando um servidor bare-metal individual é reimageado, todas as cargas de trabalho em execução nesse servidor bare-metal, incluindo todas as VMs NKS, perdem energia e conectividade. Os contêineres de carga de trabalho em execução em VMs NKS, por sua vez, perderão energia e conectividade. Após um minuto sem conseguir acessar esses contêineres de carga de trabalho, o plano de controle do Kubernetes do cluster NKS marcará os pods correspondentes como não saudáveis. Se os pods forem membros de um Deployment ou StatefulSet, o plano de controle do Kubernetes do cluster NKS tentará iniciar pods de substituição para trazer a contagem de réplicas observada do Implantação ou StatefulSet de volta à contagem de réplicas desejada.

Os novos Pods só serão iniciados se houver capacidade disponível para o Pod nas VMs NKS íntegras restantes. A partir de abril de 2024 (versão 2304.1 do Network Cloud), novas VMs NKS não são criadas para substituir as VMs NKS que estavam no servidor bare metal que está sendo recriado.

Quando o servidor bare metal for recriado com êxito e puder aceitar novas VMs NKS, as VMs NKS que estavam originalmente no mesmo servidor bare metal serão reiniciadas no servidor bare metal recém-recuperado. Os contêineres de carga de trabalho podem então ser agendados para essas VMs NKS, potencialmente restaurando as Implantações ou StatefulSets que tinham Pods em VMs NKS que estavam no servidor bare-metal.

Observação

Esse comportamento pode parecer para o usuário como se as VMs NKS não tivessem sido "movidas" do servidor bare metal, quando, na verdade, uma nova instância de uma VM NKS idêntica foi iniciada no servidor bare metal recém-reimageado que manteve o mesmo nome de servidor bare metal de antes do reimageamento.

Práticas recomendadas

Ao trabalhar com o Nexus do Operador, tenha em mente as melhores práticas a seguir.

  • Evite especificar AvailabilityZones para um pool de agentes.
  • Inicie clusters NKS maiores antes dos menores.
  • Reduza a contagem de pool de agentes antes de reduzir o tamanho do SKU da VM.

Evite especificar AvailabilityZones para um pool de agentes

Como você pode dizer nos cenários de posicionamento acima, especificar AvailabilityZones para um Pool de Agentes é o principal motivo pelo qual as VMs NKS do mesmo cluster NKS acabariam no mesmo servidor bare-metal. Ao especificar AvailabilityZones, você "fixa" o Pool de Agentes em um subconjunto de racks e, portanto, limita o número de servidores bare-metal potenciais nesse conjunto de racks para outros clusters NKS e outras VMs do Pool de Agentes no mesmo cluster NKS para pousar.

Portanto, nossa primeira melhor prática é evitar especificar AvailabilityZones para um pool de agentes. Se você precisar fixar um pool de agentes em um conjunto de Zonas de Disponibilidade, torne esse conjunto o maior possível para minimizar o desequilíbrio que poderá ocorrer.

A única exceção a essa melhor prática é quando você tem um cenário com apenas duas ou três VMs em um pool de agentes. Você pode considerar a configuração de AvailabilityZones para esse pool de agentes como [1,3,5,7] ou [0,2,4,6] para aumentar a disponibilidade durante as atualizações de runtime.

Iniciar clusters NKS maiores antes dos menores

A partir de abril de 2024 e da versão do Network Cloud 2403.1, os clusters NKS são agendados na ordem em que são criados. Para empacotar com mais eficiência seu ambiente de destino, recomendamos que você crie clusters NKS maiores antes dos menores. Da mesma forma, recomendamos que você agende pools de agentes maiores antes dos menores.

Essa recomendação é importante para os pools de agentes que usam o SKU NC_G48_224_v1 ou NC_P46_224_v1 extragrande. Agendar os Pools de Agentes com a maior contagem dessas VMs de SKU extra-grandes cria um conjunto maior de servidores bare-metal sobre os quais outras VMs de SKU extra-grandes de Pools de Agentes em outros Clusters NKS podem agrupar.

Reduzir a contagem do Pool de Agentes antes de reduzir o tamanho da SKU da VM

Se você encontrar restrições de capacidade ao iniciar um cluster NKS ou pool de agentes, reduza a contagem do pool de agentes antes de ajustar o tamanho da SKU da VM. Por exemplo, se você tentar criar um cluster NKS com um pool de agentes com tamanho de SKU de VM NC_P46_224_v1 e uma Contagem de 24 e receber de volta uma falha ao provisionar o cluster NKS devido a recursos insuficientes, talvez você fique tentado a usar um tamanho de SKU de VM NC_P36_168_v1 e continuar com uma Contagem de 24. No entanto, devido aos requisitos para que as VMs de carga de trabalho sejam alinhadas a uma só célula NUMA em um servidor bare-metal, é provável que essa mesma solicitação resulte em falhas semelhantes de recursos insuficientes. Em vez de reduzir o tamanho do SKU da VM, considere a redução da contagem do pool de agentes para 20. Há uma chance melhor de a sua solicitação se ajustar à capacidade de recurso do ambiente de destino e a implantação geral ter mais núcleos de CPU do que se você reduzisse o SKU da VM.