Autoscaling
O Autoscaling representa o paradigma de capacidade elástica dentro do produto de Kubernetes da Magalu Cloud, sendo fundamental para a otimização de recursos das aplicações e custo de infraestrutura. O mecanismo baseia-se na atuação do componente Cluster Autoscaler (CA). Ao identificar Pods em estado pendente (Pending) devido à insuficiência de recursos ou, também, a subutilização de recursos (Node Pools com recursos sobressalentes), o CA coordena o provisionamento automático de Nodes no respectivo Node Pool, sempre respeitando os limites mínimo e máximo configurados para garantir a responsividade durante picos de demanda e a eficiência de custos em momentos de baixa atividade.
Ao optar por um Node Pool com Autoscaling ativado, você deverá informar alguns parâmetros:
- Número inicial de réplicas (
replicas): a quantidade de Nodes no Node Pool para serem criados. - Número mínimo de réplicas (
min_replicas): número mínimo de réplicas, que pode ser 0. - Número máximo de réplicas (
max_replicas): número máximo de réplicas gerenciadas pelo Node Pool.
O produto de Kubernetes da MGC suporta escalar Node Pools para 0 réplicas (scale to zero). Para isso, marque o campo min_replicas para 0.
Para desescalar completamente um Node Pool para 0 réplicas, marque ambos os campos replicas e min_replicas para 0.
- 🖥️ Console
- >_ CLI
- Na tela do produto Kubernetes, escolha o Cluster desejado.
- Selecione a aba "Node Pools".
- Clique em "Criar Node Pool".
- Informe o nome do Node Pool.
- Caso deseje, escolha a opção para utilizar máquinas virtuais com GPU.
- Escolha o tipo de instância para o Node Pool.
- Escolha a opção "Autoscale".
- Definida o número inicial, mínimo e máximo de réplicas.
- Clique em "Criar Node Pool".
- Na tela de listagem de Node Pools, aguarde até que o status do Node Pool esteja como
Criado.
Com a CLI da MGC, execute o comando abaixo para criar um Node Pool utilizando ID do seu Cluster Kubernetes:
mgc kubernetes nodepool create \
--name meu-nodepool \
--cluster-id <cluster-id> \
--replicas 1 \
--auto-scale.min-replicas 1 \
--auto-scale.max-replicas 3 \
--flavor BV2-2-40 \
Agora, caso haja Pods em estado pendente (Pending) em seu Cluster devido a falta de recursos computacionais, o Node Pool será escalado até que não haja mais Pods nesse estado ou que o número máximo de réplicas seja atingido.
Da mesma forma, caso haja recursos computacionais sobressalentes e nenhum Pod em estado pendente, o Node Pool será desescalado para comportar os Pods de maneira eficiente até chegar no número mínimo de réplicas.