Como estimar o tamanho do cluster: Nós
Agora, você precisa determinar que tipo de nós de máquina virtual (VM) você precisa e quantos nós você precisa executar.
Você precisa de máquinas virtuais de que tamanho?
No AKS (Serviço de Kubernetes do Azure), cada nó em seu cluster é uma VM do Azure. As VMs vêm com várias especificações que ajudam a atender às demandas de diferentes tipos de aplicativos. Alguns aplicativos talvez precisem de mais capacidade de processamento, mais memória ou um armazenamento mais rápido. Você precisa selecionar uma categoria e uma instância de VM que atendam às necessidades do seu aplicativo.
Você vai querer se certificar de que o tipo selecionado tenha memória e capacidade de processamento suficientes para o seu aplicativo. Tenha em mente que nem toda a memória e capacidade de processamento estarão disponíveis para o seu aplicativo. Uma parte dessa capacidade será necessária para o sistema operacional e os componentes do sistema do Kubernetes. O AKS reserva automaticamente uma determinada quantidade de memória e capacidade de processamento para garantir que esses componentes críticos do sistema possam operar conforme o necessário.
O tipo de VM padrão implantado como parte de um cluster do 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 livres para seu aplicativo.
Dica
A quantidade reservada de processador e memória irá variar dependendo do tipo de VM que você selecionar. Essa quantidade se torna proporcionalmente menor à medida que o tamanho da VM aumenta.
Outro fator a se levar em conta são os recursos encalhados. Imagine que você implantou três aplicativos em um nó D2 v3. Cada um desses aplicativos requer 600 milicores de processador e 500 Mi de memória. Após implantar esses aplicativos, restam 100 milinúcleos de processador e 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 no nó 2 GiB de memória que não podem ser utilizados. Esse recurso de memória é descrito como encalhado.
Uma escolha ideal de VM é aquela com capacidade suficiente para executar suas cargas de trabalho sem deixar nenhum recurso encalhado. Se as cargas de trabalho forem ampliadas e reduzidas dinamicamente, você vai querer contar com recursos suficientes para abranger situações de uso típicas, mas com a flexibilidade de ampliá-las sempre que necessário.
De quantos nós você precisa?
Seu aplicativo deve estar sempre disponível e ser capaz de gerenciar as falhas de nós subjacentes. Você pode fornecer resiliência com múltiplas réplicas do aplicativo distribuídas 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 GPUs. Você também 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 ser compatíveis com um de dois modos: De Sistema ou de Usuário. Os pools de nós de Sistema executam pods de sistema críticos, que são essenciais para o funcionamento do seu cluster do 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 do AKS contém um único pool de nós de Sistema, que é usado para executar tudo. Se quiser, você pode adicionar mais pools de nós de Sistema ou de Usuário e configurar seus pods de aplicativo para serem executados exclusivamente nos pools de nós de Usuário. Os pods de sistema críticos são executados somente nos pools de nós de Sistema. O uso de pools de nós de Sistema e de Usuário pode impedir que aplicativos configurados incorretamente afetem a operação de serviços críticos do sistema e, possivelmente, causem falhas no cluster.
O Kubernetes também pode adicionar ou remover nós sempre que necessário. Se estiver planejando usar esse recurso, você precisa definir um limite superior para o número máximo de nós que o Kubernetes pode adicionar. Em seguida, planeje o design da sua rede com base nesse número máximo. Tenha em mente que você precisa garantir pelo menos um nó extra por cluster para permitir que o processo de atualização seja executado corretamente.
Dica
Você pode configurar o número de nós que são atualizados em um determinado momento, sendo que um é o valor padrão. Atualizar mais de um nó por vez pode diminuir o tempo total necessário para atualizar um cluster. Você precisa garantir 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 lhe forneceu os resultados de seus testes de desempenho, incluindo os detalhes da quantidade de memória e processador necessária para o serviço. Os resultados incluem os requisitos da linha de base, juntamente com os valores máximos para períodos mais movimentados:
Serviço | Capacidade mín./máx. do processador | Capacidade mín./máx. de memória |
---|---|---|
Front-end do site | 250 m / 1000 m | 250 Mi / 1 Gi |
API de identidade | 100 m / 500 m | 250 Mi / 500 Mi |
API de catálogo | 500 m - 1000 m | 1 Gi / 1 Gi |
API de pedidos | 100 m - 1000 m | 100 Mi / 1 Gi |
Auxiliar de pedidos | 100 m - 1000 m | 100 Mi / 1 Gi |
API de carrinho | 100 m - 1000 m | 500 Mi / 500 Mi |
API de marketing | 250 m - 750 m | 500 Mi / 1 Gi |
API de locais | 100 m - 500 m | 100 Mi / 500 Mi |
Dica
- No Kubernetes, o uso do processador é medido em milicores ou em milésimos de um núcleo. Portanto, 100 m equivale a um décimo de um núcleo e 1.000 m é igual a um único núcleo de processador.
- Você pode medir a memória de várias maneiras. Os exemplos no gráfico de resultados dos testes de desempenho usam Mi e Gi, que são a capacidade de dois equivalentes de Megabyte e Gigabyte. 500 Mi geralmente é mencionado como 500 Megabytes e 1 Gi 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 necessários para cada serviço. Esse cálculo fornece uma figura de 1,5 núcleos e 2,8 Gi de memória como ponto de partida. Quando o aplicativo escalar verticalmente para seu número máximo de réplicas e estiver usando seu número máximo de núcleos de processador e quantidade de memória, ele precisará de 53 núcleos e 50 GB de memória.
Nesse cenário, as cargas de trabalho têm um uso intensivo de CPU. Se tiver optado pela VM de uso geral padrão D2 v3, você vai precisar de um grande número de VMs 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 pensar em um tipo de VM destinado a cargas de trabalho com uso intensivo de computação. Por exemplo, um esquema 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ó. Quando estivesse executando na escala máxima, você precisaria de sete VMs para lidar com as cargas de trabalho.
Agora, você precisa examinar a rede.