Os buffers de capacidade ajudam a reduzir a latência de inicialização de pods para suas cargas de trabalho do Google Kubernetes Engine (GKE), permitindo que você gerencie de maneira proativa a capacidade extra no cluster. Ao reservar capacidade extra com antecedência, você ajuda a garantir que os nós tenham capacidade disponível quando necessário, reduzindo o tempo necessário para programar novos pods durante eventos de escalonamento.
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 de capacidade fornece capacidade pré-provisionada.
Os buffers de capacidade oferecem os seguintes benefícios:
- Minimizar a latência de escalonamento: ao usar buffers de capacidade, as cargas de trabalho críticas são executadas imediatamente em nós pré-provisionados. Os buffers de capacidade ajudam a eliminar o atraso associado à inicialização da VM e à extração de imagens, ajudando você a manter objetivos de nível de serviço (SLOs) rigorosos durante picos de tráfego.
- 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 a pré-inicialização de cargas de trabalho.
Recomendamos buffers de capacidade para cargas de trabalho sensíveis à latência que exigem escalonamento rápido, como 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.
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 a menor latência possível para o consumo inicial do buffer durante um evento de escalonamento vertical.
CRD CapacityBuffer
Para configurar um buffer de capacidade, crie uma definição de recurso personalizada (CRD) do 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 uma carga de trabalho escalonável existente, como uma implantação. O tamanho do buffer é ajustado dinamicamente enquanto a carga de trabalho de referência é escalonada.
- 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.
- 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.
A seguir
- Para saber como implementar um buffer de capacidade, consulte Configurar buffers de capacidade.