Estimando o tamanho do cluster - Nós

Concluído

Agora você precisa determinar que tipo de nós de máquina virtual (VM) você precisa e quantos nós você precisa executar.

De que tamanho você precisa de máquinas virtuais?

No Serviço Kubernetes do Azure (AKS), cada nó em seu cluster é uma VM do Azure. As VMs vêm em várias especificações para ajudar a suportar as demandas de diferentes tipos de aplicativos. Alguns aplicativos podem precisar de mais poder de processamento ou memória, ou armazenamento mais rápido. Você precisa selecionar uma categoria de VM e uma instância que atenda às necessidades do seu aplicativo.

Você quer ter certeza de que o tipo tem memória suficiente e poder de processamento para seu aplicativo. Lembre-se de que nem toda a memória e o poder de processamento estão disponíveis para seu aplicativo. Parte dessa energia é necessária para o sistema operacional e para os componentes do sistema Kubernetes. O AKS reserva automaticamente uma certa quantidade de memória e poder de processamento para garantir que esses componentes críticos do sistema possam operar conforme necessário.

O tipo de VM padrão implantado como parte de um cluster AKS é a máquina virtual de uso geral D2 v3, uma VM de dois núcleos com 8 gigabytes de memória. O AKS reserva 100 milinúcleos de processador e 3,55 GiB de memória, deixando 1.900 milinúcleos (1,9 núcleos) e 5,45 Gi de memória livre para a sua aplicação.

Gorjeta

A quantidade de processador e memória reservados varia dependendo do tipo de VM selecionado. Essa quantidade se torna proporcionalmente menor à medida que o tamanho da VM aumenta.

Outra consideração são os recursos irrecuperáveis. Imagine que você implanta três aplicativos em um nó D2 v3. Cada uma dessas aplicações requer 600 milinúcleos de processador e 500Mi de memória. Depois de implantar esses aplicativos, 100 milinúcleos de processador permanecem e há cerca de 2,05 GiB de memória não utilizada. Se você implantou uma quarta instância do aplicativo, precisará enviá-la para um novo nó porque os 100 milinúcleos restantes não são suficientes. No entanto, isso deixa 2 GiB de memória no nó que não pode ser usado. Esse recurso de memória é conhecido como encalhado.

Uma opção de VM ideal é aquela com capacidade suficiente para executar suas cargas de trabalho sem deixar os recursos perdidos. Se as cargas de trabalho aumentarem e reduzirem dinamicamente, você precisará de recursos suficientes para cobrir cenários de uso típicos, mas a flexibilidade para aumentar a escala quando necessário.

De quantos nós você precisa?

Seu aplicativo deve estar sempre disponível e capaz de lidar com falhas dos nós subjacentes. Você pode fornecer resiliência com várias réplicas do aplicativo espalhadas por vários nós.

O AKS tem pools de nós, que são grupos de VMs do mesmo tipo. Você pode ter vários pools de nós. Por exemplo, você pode ter um pool de nós que contenha VMs de uso geral, um pool de nós com VMs otimizadas para memória e um pool de nós com VMs equipadas com GPU. Em seguida, você pode usar o recurso de agendamento nativo do Kubernetes para garantir que suas cargas de trabalho sejam implantadas no pool de nós e no tipo de VM apropriados.

Os pools de nós podem suportar um de dois modos: Sistema ou Usuário. Os pools de nós do sistema executam pods críticos do sistema que são essenciais para a operação do cluster Kubernetes, incluindo serviços como drivers de armazenamento, DNS ou servidores de métricas. Os pools de nós de usuário executam seus aplicativos.

Em uma configuração padrão, um cluster AKS contém um único pool de nós do sistema, que é usado para executar tudo. Se desejar, você pode adicionar pools extras de nós de Sistema ou Usuário e configurar seus pods de aplicativo para serem executados exclusivamente nos pools de nós de Usuário. Os pods críticos do sistema são executados apenas nos pools de nós do sistema. O uso de pools de nós Sistema e Usuário pode impedir que aplicativos configurados incorretamente afetem a operação de serviços críticos do sistema e potencialmente causem falha no cluster.

O Kubernetes também pode adicionar ou remover nós quando necessário. Se você planeja usar esse recurso, precisará definir um limite superior para o número máximo de nós para os quais o Kubernetes pode ser dimensionado. Em seguida, planeje seu design de rede em torno desse número máximo. Lembre-se de que você precisa levar em conta pelo menos um nó extra por cluster para permitir que o processo de atualização seja executado corretamente.

Gorjeta

Você pode configurar o número de nós atualizados em um determinado momento, sendo um o valor padrão. A atualização de mais de um nó de cada vez pode diminuir o tempo total necessário para atualizar um cluster. Você precisa levar em conta nós extras como parte do seu planejamento.

Quantos nós você deve executar?

Para determinar o número de nós a serem executados, você precisa entender os requisitos de processador e memória do aplicativo. A equipe de desenvolvimento forneceu os resultados de seus testes de desempenho com detalhes de quanto processador e memória os serviços precisam. Os resultados incluem os requisitos da linha de base, juntamente com os montantes máximos para os períodos mais movimentados:

Serviço Processador min / max Memória min / max
Front-end do site 250 m / 1000 m 250 mi / 1 gi
API de identidade 100 m / 500 m 250 mi / 500 mi
API do Catálogo 500 m - 1000 m 1 Gi / 1 Gi
API de pedidos 100 m - 1000 m 100 mi / 1 gi
Ajudante de encomendas 100 m - 1000 m 100 mi / 1 gi
API de carrinho de compras 100 m - 1000 m 500 mi / 500 mi
Marketing API 250 m - 750 m 500 mi / 1 gi
API de Localizações 100 m - 500 m 100 mi / 500 mi

Gorjeta

  • O Kubernetes mede o uso do processador em milinúcleos, ou milésimos de núcleo. Portanto, 100m equivale a um décimo de um núcleo, e 1000m equivale a um único núcleo de processador.
  • Você pode medir a memória de várias maneiras. Os exemplos no gráfico de resultados de testes de desempenho usam Mi e Gi, que são o poder de dois equivalentes de Megabyte e Gigabyte. 500Mi é geralmente referido como 500 Megabytes e 1Gi é geralmente referido como 1 Gigabyte.

Dimensionando seus nós

Você determinou o número mínimo de réplicas que cada serviço deve executar e o número mínimo de núcleos de processador e memória que cada serviço requer. Este cálculo dá-lhe um valor de 1,5 núcleos e 2,8 Gi de memória como ponto de partida. Quando o aplicativo é dimensionado até seu número máximo de réplicas e está usando seu número máximo de núcleos de processador e quantidade de memória, ele precisa de 53 núcleos e 50 GB de memória.

Nesse cenário, as cargas de trabalho são intensivas de CPU. Se você optar pela VM de uso geral padrão D2 v3, precisará de um grande número delas para atender aos requisitos de processador da carga de trabalho. Essa configuração resultaria em uma grande quantidade de memória não utilizada nas VMs. Vamos considerar um tipo de VM destinado a cargas de trabalho de computação intensiva. Por exemplo, algo da série Fsv2 precisaria de menos VMs para atender aos requisitos do processador e teria uma quantidade menor de memória não utilizada.

O tipo de VM F8s v2 tem 8 núcleos e 16 GB de memória. Com as reservas de recursos do AKS, você tem 7820 milinúcleos e 12,65 Gi para cada nó. Ao executar em escala máxima, você precisaria de sete VMs para lidar com as cargas de trabalho.

Agora, você precisa dar uma olhada na rede.