Métricas personalizadas e externas para cargas de trabalho de escalonamento automático

Esta página aborda métricas personalizadas e externas, que o escalonador automático de pod horizontal pode usar para aumentar ou diminuir automaticamente o número de réplicas de uma determinada carga de trabalho.

Ao contrário do escalonador automático de pod vertical, o escalonador automático de pod horizontal altera as solicitações configuradas das cargas de trabalho. Ele só dimensiona o número de réplicas.

As métricas personalizadas e externas permitem que as cargas de trabalho se adaptem às condições além si de mesmas. Considere um aplicativo que extrai tarefas de uma fila e as conclui. O aplicativo pode ter o objetivo de nível de serviço (SLO, na sigla em inglês) de tempo de processamento de uma tarefa ou de um número de tarefas pendentes. Se a fila estiver aumentando, mais réplicas da carga de trabalho poderão atender ao SLO da carga de trabalho. Se a fila estiver vazia ou diminuindo mais rapidamente do que o esperado, talvez seja possível economizar. Para isso, execute menos réplicas, sem deixar de atender ao SLO da carga de trabalho.

As métricas externas e personalizadas diferem umas das outras:

  • Uma métrica personalizada é relatada no aplicativo em execução no Kubernetes. Para saber mais, consulte Métricas personalizadas neste tópico.
  • 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. Para informações, a métrica pode ser informada no Cloud Monitoring ou no Pub/Sub.

As duas métricas também funcionam na outra direção. Por exemplo, um número baixo de tarefas em uma fila pode indicar que o aplicativo tem um bom desempenho e pode ser qualificado para o escalonamento automático para baixo.

Para saber mais, consulte Métricas personalizadas ou Métricas externas neste tópico.

Métricas personalizadas

Seu aplicativo pode relatar uma métrica personalizada para o Cloud 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.

É possível que uma métrica personalizada seja selecionada para qualquer um dos itens a seguir:

  • Um nó, pod ou qualquer tipo de objeto do Kubernetes, incluindo um CustomResourceDefinition (CRD).
  • O valor médio de uma métrica relatada por todos os pods em uma implantação

Para filtrar uma determinada métrica personalizada por rótulo, adicione um campo selector definido como a chave e o valor do rótulo. Por exemplo, é possível definir selector: "environment=prod" para agregar somente valores de métricas com o rótulo environment=prod. O seletor pode ser uma combinação binária de várias expressões de rótulo. Para mais informações, consulte Rótulos de métricas com base em registros na documentação do Monitoring.

Antes de usar métricas personalizadas, ative o Monitoring no projeto do Google Cloud e instale o adaptador do Stackdriver no cluster. Depois que as métricas personalizadas forem exportadas para o Monitoring, elas poderão acionar eventos de escalonamento automático por meio do escalonador automático de pod horizontal para alterar o formato da carga de trabalho.

As métricas personalizadas precisam ser exportadas do aplicativo em um formato específico. A IU do Monitoring inclui uma ferramenta de criação automática de métricas para ajudar você a criar métricas personalizadas automaticamente. Se você usar a ferramenta de criação automática para criar métricas personalizadas, o Monitoring as detectará automaticamente.

Para mais detalhes, consulte o tutorial sobre escalonamento automático de implantações com métricas personalizadas.

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 formato da carga de trabalho automaticamente.

Para mais detalhes, consulte o tutorial sobre escalonamento automático de implantações com métricas externas.

Como importar métricas

Para importar métricas para o Monitoring, é possível:

  • exportar as métricas do aplicativo usando a API Cloud Monitoring; ou
  • configurar o aplicativo para emitir métricas no formato do Prometheus. Em seguida, execute o adaptador do Prometheus para o Stackdriver (em inglês). Esse é um pequeno contêiner de arquivo secundário de código aberto que copia as métricas, converte-as no formato do Monitoring e as envia à API Monitoring.

Para mais informações, consulte Como criar métricas na documentação do Monitoring.

A seguir