Como fazer o escalonamento automático de instâncias de contêiner

No Knative serving, cada revisão é escalonada automaticamente para o número de instâncias de contêiner necessárias para processar todas as solicitações recebidas. Por padrão, quando uma revisão não recebe nenhum tráfego, ela é escalonada para zero instância de contêiner. No entanto, é possível alterar esse padrão para especificar que uma instância seja mantida inativa ou "morna" usando a configuração de instâncias mínimas.

O número de instâncias programadas é afetado pela:

Em alguns casos, convém limitar o número total de instâncias de contêiner que podem ser iniciadas, por motivos de controle de custos ou para melhor compatibilidade com outros recursos usados pelo serviço. Por exemplo, seu serviço do Knative serving pode interagir com um banco de dados que só pode lidar com um determinado número de conexões abertas simultâneas.

Sobre o máximo de instâncias de contêiner

É possível usar a configuração máxima de instâncias de contêiner para limitar o número total de instâncias que podem ser iniciadas em paralelo, conforme documentado em Como configurar um número máximo de instâncias de contêiner.

Como exceder o máximo de instâncias

Em circunstâncias normais, a revisão é ampliada criando novas instâncias para sustentar a carga do tráfego de entrada. No entanto, quando você define um limite máximo de instâncias, em alguns cenários, não há instâncias suficientes para atender a essa carga de tráfego. Nesse caso, as solicitações de entrada serão enfileiradas por até 60 segundos. Durante essa janela de 60 segundos, se uma instância concluir o processamento de solicitações, ela ficará disponível para processar solicitações enfileiradas. Se nenhuma instância estiver disponível durante a janela de 60 segundos, a solicitação falhará com um código de erro 429 no Cloud Run.

Garantias de escalonamento

O máximo de instâncias é um limite superior. Definir um limite alto não significa que a revisão será escalonada conforme o número especificado de instâncias de contêiner. Isso significa apenas que o número de instâncias de contêiner não pode exceder o limite em nenhum momento.

Picos de tráfego

Em alguns casos, como aumento rápido de tráfego, o Knative serving pode, por um curto período, criar um pouco mais instâncias de contêiner do que o valor especificado de instâncias máximas. Se o serviço não puder tolerar esse comportamento temporário, considere uma margem de segurança e defina um valor de instâncias máximas mais baixo.

Implantações

Quando você implanta uma nova revisão, a veiculação do Knative serving migra gradualmente o tráfego da revisão antiga para a nova. Como os limites máximos de instâncias são definidos para cada revisão, é possível exceder temporariamente o limite especificado durante o período após a implantação.

Instâncias ociosas e como minimizar inicializações a frio

Os recursos do Kubernetes só são consumidos quando uma instância está processando uma solicitação, mas isso não significa que a veiculação do Knative serving encerra imediatamente as instâncias depois de processar todas as solicitações. Para minimizar o impacto das inicializações a frio, a veiculação do Knative serving pode manter algumas instâncias inativas. Essas instâncias estão prontas para processar solicitações em caso de um pico repentino de tráfego.

Por exemplo, quando uma instância de contêiner termina de processar solicitações, ela pode permanecer inativa por um período caso outra solicitação precise ser processada. Uma instância de contêiner inativo pode manter os recursos, como conexões de banco de dados abertas. No entanto, para a Cloud Run, a CPU não estará disponível

Para manter as instâncias ociosas permanentemente disponíveis, use a configuração min-instance.

A seguir