
Com o aumento da demanda por aplicações, é preciso que as equipes de desenvolvimento e operações saibam garantir escalabilidade ao mesmo tempo que utilizam recursos de forma eficiente. Continue a leitura e conheça uma ferramenta capaz de ajudar nesse desafio.
O sucesso de aplicações em ambientes de contêineres está diretamente ligado com a escalabilidade e a eficiência. Nos cenários atuais, em que o dimensionamento ideal e o custo da alocação de recursos são desafios para os negócios, é essencial conhecer e entender tecnologias capazes de otimizar o funcionamento do Kubernetes (K8s).
No artigo de hoje, você vai se familiarizar com o Horizontal Pod Autoscaler e entender como ele pode trazer vantagens competitivas para sua operação.
O que é Horizontal Pod Autoscaler (HPA)?
O Horizontal Pod Autoscaler é uma forma de escalonamento automático que aumenta ou diminui o número de pods em um Deployment, ReplicaSet ou StatefulSet com base na utilização de recursos (como CPU e memória). Através desse ajuste automático, é possível implementar mais eficiência na maneira que as aplicações respondem a mudanças na carga de trabalho.
Dizemos que esse escalonamento é horizontal pois ele afeta a quantidade de pods lançados em vez de alterar o tamanho do pod (vertical - VPA).
Como o HPA funciona?
O HPA monitora métricas de utilização e, com base em um conjunto de regras configuradas, aumenta ou diminui o número de pods. Imagine uma situação em que um HPA esteja configurado com o target em 70%. Caso a utilização da CPU exceda o target definido durante um determinado período de tempo, o Horizontal Pod Autoscaler entra em ação e pode decidir escalar mais pods.
Na prática, o HPA atua em um loop que pode ser definido em 5 etapas:
1. O Horizontal Pod Autoscaler monitora continuamente o servidor de métricas para o uso de recursos.
2. Com base no uso de recursos coletados, o HPA calcula o número desejado de réplicas necessárias.
3. Em seguida, o HPA decide escalar a aplicação.
4. Por fim, o HPA altera esse número.
5. Como o HPA está monitorando continuamente, o processo se repete a partir do passo 1.
As decisões de escalonamento do Horizontal Pod Autoscaler são tomadas a partir de métricas que podem ser personalizadas ou fornecidas externamente. Na seção a seguir, vamos entender melhor sobre algumas dessas métricas.
Quais métricas são mais eficazes para configurar o HPA no Kubernetes?
A eficácia das métricas escolhidas depende das características específicas da aplicação e das necessidades de escalabilidade. Separamos aqui as métricas mais comuns e eficazes para se utilizar na configuração do Horizontal Pod Autoscaler.
CPU utilization:
Monitorar a utilização da CPU é uma métrica fundamental para determinar a carga de trabalho da sua aplicação. Quando a CPU atinge um determinado limite, o HPA pode escalar automaticamente o número de réplicas para lidar com a demanda.
Memory utilization:
Assim como a CPU, monitorar a utilização de memória é importante para garantir que a sua aplicação tenha recursos suficientes para funcionar adequadamente. O HPA pode ser configurado para escalar com base na utilização de memória.
Métricas de desempenho da aplicação:
Além das métricas de recursos do sistema, também é útil considerar métricas de desempenho da aplicação, como o tempo de resposta de solicitações, o número de erros ou qualquer outra métrica que indique a saúde e eficiência da sua aplicação.
Métricas de tráfego de rede:
Em algumas situações, monitorar o tráfego de rede pode ser crucial para determinar quando escalar a aplicação. Se a sua aplicação lida com picos de tráfego, configurar o HPA com base em métricas de tráfego de rede pode ser benéfico.
Métricas personalizadas (Custom Metrics):
Em certos casos, pode ser necessário definir métricas personalizadas, como o número de requisições por segundo, o tempo de resposta de uma API ou qualquer outra métrica específica do seu aplicativo. O Kubernetes oferece suporte para métricas personalizadas, permitindo que você ajuste o HPA de acordo com as necessidades da sua aplicação.
É importante que as métricas escolhidas sejam relevantes para o comportamento da aplicação. Elas também devem fornecer uma indicação clara da demanda e do desempenho.
Como exemplo, KEDA é um mecanismo de HPA Operator orientado a eventos onde é possível personalizar métricas como quantidades de mensagens em uma fila ou quantidade de shards como parâmetros de escalabilidade.
Quais os benefícios do Horizontal Pod Autoscaler?
A seguir, destacamos algumas vantagens da implementação do HPA com Kubernetes.
Eficiência na utilização de recursos
Utilizando o HPA, é possível garantir que os recursos estão sendo utilizados de maneira eficiente. Na prática, isso significa que você não estará pagando por recursos desnecessários e que sua aplicação pode escalar de acordo com a demanda.
Resiliência
O Kubernetes, juntamente com o HPA, oferece uma infraestrutura resiliente. Em caso de falhas, o sistema pode reiniciar pods automaticamente, garantindo que sua aplicação permaneça disponível.
Flexibilidade
O HPA, em combinação com o Kubernetes, permite que as equipes ajustem rapidamente suas aplicações a novas demandas, seja aumentando ou diminuindo a capacidade de processamento.
Melhoria na performance
Com a escalabilidade automática, suas aplicações podem responder mais rapidamente a picos de demanda, melhorando a experiência do usuário e a performance geral do sistema.
Otimize seus recursos e melhore o desempenho da sua aplicação com a K-IARA!
A K-IARA é uma solução de rightsizing de Kubernetes capaz de aprender e reagir adequadamente conforme o comportamento e demandas da sua aplicação.
O Autopilot da K-IARA integra com suas políticas de escalonamento do HPA (Horizontal Pod Autoscaler) para implementar automaticamente recomendações de dimensionamento personalizado com base no uso real em produção.
Como resultado, você alcança seus objetivos de custo e garante desempenho aprimorado para sua aplicação.
Saiba mais sobre como economizar em até 60% no uso de recursos do K8s! Clique aqui e fale com os especialistas da RealCloud.
Comments