Nesta página, descrevemos as maneiras de aumentar ou diminuir automaticamente o número de réplicas de uma determinada carga de trabalho usando métricas personalizadas, externas ou do Prometheus.
Por que fazer escalonamento automático com base em métricas
Considere um aplicativo que extrai tarefas de uma fila e as conclui. O aplicativo pode ter um objetivo de nível de serviço (SLO) de tempo para processar uma tarefa ou para o número de tarefas pendentes. Se a fila estiver aumentando, mais réplicas da carga de trabalho poderão atender ao SLO. Se a fila estiver vazia ou diminuindo mais rapidamente do que o esperado, é possível economizar dinheiro executando menos réplicas, enquanto atende ao SLO das cargas de trabalho.
Sobre métricas personalizadas, Prometheus e externas
É possível escalonar cargas de trabalho com base em métricas personalizadas, Prometheuss ou externas.
Uma métrica personalizada é relatada no aplicativo em execução no Kubernetes. Para saber mais, consulte Métricas personalizadas e do Prometheus.
As métricas do Serviço gerenciado para o Prometheus são consideradas um tipo de métrica personalizada.
Uma métrica externa é relatada em um aplicativo ou serviço que não está em execução no cluster, mas que afeta o aplicativo do Kubernetes. Por exemplo, é possível fazer o escalonamento automático em qualquer métrica no Cloud Monitoring, incluindo o Pub/Sub ou o Dataflow. As métricas do Prometheus contêm dados omitidos do cluster que podem ser usados para escalonamento automático. Para saber mais, consulte Métricas externas.
Métricas personalizadas e do Prometheus
Recomendamos que você use o Managed Service para Prometheus para criar e gerenciar métricas personalizadas. É possível usar a linguagem de consulta do Prometheus (PromQL, na sigla em inglês) para consultar todas as métricas no Monitoring. Para mais informações, consulte Escalonamento automático horizontal de pods para o Managed Service para Prometheus.
Seu aplicativo pode relatar uma métrica personalizada para o Monitoring. É possível configurar o Kubernetes para responder a essas métricas e escalonar a carga de trabalho automaticamente. Por exemplo, é possível escalonar o aplicativo com base em métricas como consultas por segundo, gravações por segundo, desempenho de rede, latência ao se comunicar com outro aplicativo ou outras métricas pertinentes para a carga de trabalho. Para mais informações, consulte Otimizar o escalonamento automático de pods com base em métricas.
Métricas externas
Se você precisar escalonar a carga de trabalho com base no desempenho de um aplicativo ou de um serviço fora do Kubernetes, configure uma métrica externa. Por exemplo, talvez seja necessário aumentar a capacidade do aplicativo para ingerir mensagens do Pub/Sub se o número de mensagens não entregues estiver crescendo. O aplicativo externo precisa exportar a métrica para uma instância do Monitoring que o cluster possa acessar. A tendência de cada métrica ao longo do tempo faz com que o escalonador automático de pod horizontal altere o número de réplicas na carga de trabalho automaticamente. Para mais informações, consulte Otimizar o escalonamento automático de pods com base em métricas.
Importar métricas para o Monitoring
Para importar métricas para o Monitoring, é possível:
- Configure o Serviço gerenciado para o Prometheus (recomendado) ou
- Exporte as métricas do aplicativo usando a API Cloud Monitoring.
A seguir
- Saiba como ativar o escalonamento automático horizontal de pods para o Managed Service para Prometheus.
- Saiba mais sobre o escalonamento automático horizontal de pods.
- Saiba mais sobre o Escalonamento automático vertical de pods.