Sobre buffers de capacidade

Os buffers de capacidade ajudam a reduzir a latência de inicialização do pod para suas cargas de trabalho do Google Kubernetes Engine (GKE), permitindo que você declare proativamente níveis de capacidade ativa ou em espera no cluster. Ao declarar a capacidade extra com antecedência, você consegue inicializações mais rápidas e econômicas das cargas de trabalho.

Este documento explica como os buffers de capacidade funcionam. Para saber como ativar e usar buffers de capacidade, consulte Configurar buffers de capacidade.

Quando usar um buffer de capacidade

Use um buffer de capacidade para aplicativos sensíveis à latência de inicialização e que precisam ser escalonados rapidamente. Quando você tem aumentos repentinos no tráfego, um buffer ativo oferece capacidade pré-provisionada projetada para escalonamento de baixa latência. Quando você tem um aumento constante no tráfego, um buffer de espera oferece o agendamento de pods a um custo mais acessível do que o pré-provisionamento.

Os buffers de capacidade oferecem os seguintes benefícios:

  • Minimizar a latência de escalonamento: os buffers ativos fornecem VMs em execução, o que ajuda a minimizar a latência. Os buffers de espera são retomados rapidamente, oferecendo disponibilidade de capacidade mais rápida do que nós novos.
  • Provisionamento excessivo econômico: os buffers de capacidade ajudam a manter uma rede de segurança de tamanho fixo. Para cargas de trabalho em grande escala, essa abordagem costuma ser mais econômica do que outros métodos de provisionamento excessivo (por exemplo, reduzir as metas de utilização do HorizontalPodAutoscaler (HPA)), que podem aumentar a capacidade ociosa de maneira linear à medida que o cluster cresce.
  • Atender aos requisitos de carga de trabalho:você tem controle total sobre o tamanho do buffer de capacidade. As opções incluem incorporar daemonsets ou dados personalizados e controlar o pré-carregamento de imagens e o pré-início de cargas de trabalho para atender às suas necessidades.

Recomendamos buffers de capacidade para cargas de trabalho sensíveis à latência que exigem escalonamento rápido, como agentes de IA, inferência de IA, aplicativos de varejo durante eventos de vendas ou servidores de jogos durante o pico de atividade dos jogadores.

Não recomendamos buffers de capacidade para cargas de trabalho que não são sensíveis à latência de inicialização, como jobs de processamento em lote. Para essas cargas de trabalho, o provisionamento excessivo de recursos não traz nenhum benefício.

Como funcionam os buffers de capacidade

Implemente um buffer de capacidade usando um recurso personalizado CapacityBuffer do Kubernetes para definir um buffer de capacidade disponível. O escalonador automático de cluster do GKE monitora recursos CapacityBuffer e os trata como demanda pendente para garantir que a capacidade extra esteja disponível. Se o cluster não tiver capacidade suficiente para atender às solicitações de recursos definidas no buffer, o escalonador automático de clusters vai provisionar nós extras.

Quando uma carga de trabalho de alta prioridade é escalonada, o GKE a programa na capacidade disponível no buffer imediatamente. Esse agendamento imediato se aplica ao número de réplicas ou à quantidade de recursos reservada no buffer, evitando o atraso típico associado ao provisionamento de nós. Quando uma carga de trabalho usa uma unidade de buffer, o escalonador automático de cluster provisiona um novo nó para reabastecer o buffer.

Estratégias de buffer de capacidade

É possível configurar buffers de capacidade usando diferentes estratégias de provisionamento com base nos requisitos de latência e custo.

Buffer ativo

Um buffer ativo fornece VMs em execução para escalonamento de baixa latência de cargas de trabalho que se encaixam na capacidade reservada. Como os nós já estão prontos, eles oferecem latência mínima para o consumo inicial do buffer durante um evento de escalonamento vertical.

Recomendamos essa estratégia para cargas de trabalho críticas em que o tempo de escalonamento vertical é a prioridade máxima.

Buffer de espera

Um buffer de espera fornece VMs suspensas. A estratégia de espera é mais econômica do que a ativa, mas introduz um pequeno atraso para retomar a VM antes que ela aceite cargas de trabalho.

Recomendamos essa estratégia para cargas de trabalho que podem tolerar um pequeno atraso no escalonamento para otimizar o custo.

CRD CapacityBuffer

Para configurar um buffer de capacidade, crie uma CustomResourceDefinition (CRD) CapacityBuffer. É possível configurar o buffer de capacidade para atender a diferentes critérios:

  • Réplicas fixas: especifique um número fixo de pods de buffer. Essa configuração é a maneira mais simples de criar um buffer de tamanho conhecido.
  • Com base em porcentagem: defina o tamanho do buffer como uma porcentagem de um objeto escalonável que define um sub-recurso de escalonamento (como um Deployment, StatefulSet, ReplicaSet ou Job). O tamanho do buffer é ajustado dinamicamente à medida que a carga de trabalho de referência é escalonada. Não é possível definir um buffer baseado em porcentagem para modelos de pod porque eles não têm um campo de réplicas.
  • Limites de recursos: defina a quantidade total de CPU e memória que o buffer deve reservar. O controlador calcula quantos pods de buffer criar com base nas solicitações de recursos de um modelo de pod referenciado.

Para mais informações, consulte a documentação de referência do CRD CapacityBuffer.

Requisitos e limitações

Os buffers de capacidade têm os seguintes requisitos e limitações:

  • Os buffers de capacidade estão disponíveis para clusters do GKE que executam a versão 1.35.2-gke.1842000 ou mais recente para buffers ativos e a versão 1.35.2-gke.1842002 para buffers em espera.
  • Os buffers de capacidade só são compatíveis com cargas de trabalho que usam um modelo de faturamento baseado em nós. Os buffers de capacidade não são compatíveis com cargas de trabalho que usam o modelo de faturamento baseado em pods.
  • Recomendamos que você ative o provisionamento automático de nós nos seus clusters. Com o provisionamento automático de nós, o escalonador automático de cluster pode criar novos pools de nós com base nas solicitações de recursos no CapacityBuffer. Se você não ativar o provisionamento automático de nós, o escalonador automático de cluster só vai aumentar a escala dos pools de nós atuais.

Os buffers de espera têm as seguintes limitações adicionais:

A seguir