Voltar

Cargas de IA estão forçando o autoscaling do Kubernetes a repensar a divisão entre scheduler e autoscaler

Aprofundamento CEVIU

Aprofundamento

O problema descrito pela CNCF é conhecido de quem opera GPU em cluster: o pod fica pending sem que a região tenha acabado de fato com a capacidade. O autoscaler responde à pergunta para a qual foi feito (adiciono um node?), mas o scheduler pode recusar o node que ele escolheu. Resultado: acelerador caro parado e job sem rodar.

O artigo aponta três frentes. Em reservations, o autoscaler precisa considerar capacidade já comprometida e paga. Em topology, o que importa é a ligação entre dispositivos (NUMA, PCIe, links entre aceleradores), não só a contagem. No sharing, partitionable devices e consumable capacity permitem entregar fração de um dispositivo em vez dele inteiro. O Dynamic Resource Allocation (DRA) dá ao scheduler claims estruturados, e autoscalers com suporte a DRA começam a usar a mesma informação, mas a adoção varia conforme a implementação.

Linguagem comum não resolve tudo. Em gang scheduling, o scheduler já aprende a tratar um grupo como unidade, via Workload e PodGroup (beta e desabilitados por padrão). O autoscaler ainda raciocina pod a pod. A ponte atual é o provisioning request, que com Kueue pede a capacidade do grupo inteiro de uma vez, em regime de melhor esforço e dependente do provedor.

O que mudou

A cobertura anterior do CEVIU acompanhou as peças separadas. Em 30 de março de 2026, a matéria sobre Alocação Dinâmica de Recursos mostrou o DRA como base para gerenciar GPUs e TPUs por solicitações. Em 15 de maio de 2026, a matéria sobre o Kubernetes v1.36 trouxe a divisão da API de Workload e o novo PodGroup para scheduling de workloads. Agora a discussão sobe um degrau: o lado do scheduler avançou, e o gargalo passa a ser o autoscaler acompanhar esse vocabulário. Há uma proposta pública na SIG-Autoscaling para APIs de integração entre os dois.

Por que isso importa

Para quem faz plataforma e FinOps, pod pending com GPU ociosa é custo direto. A dica prática do artigo: antes de concluir que a capacidade acabou, verifique se scheduler e autoscaler concordam sobre o que é um node utilizável. Em inferência, com carga em rajadas, um node frio custa caro.

Linha do tempo

  1. CEVIU cobre a Alocação Dinâmica de Recursos do Kubernetes para GPUs e TPUs.

  2. Kubernetes v1.36 divide a API de Workload e introduz o PodGroup para scheduling de workloads.

  3. Artigo da CNCF discute como cargas de IA forçam scheduler e autoscaler a se integrarem.

Perguntas frequentes

Por que um pod com GPU fica pending mesmo havendo capacidade?

Porque o node que o autoscaler aceita adicionar pode não ser o que o scheduler aceita usar. Os dois laços decidem com informações diferentes sobre o hardware. O acelerador fica ocioso enquanto o pod espera.

O que o DRA muda nesse cenário?

Em vez de um número simples de GPUs, o workload registra um claim estruturado, como um acelerador junto com a placa de rede que o alimenta. O scheduler lê esse claim direto. Autoscalers com suporte a DRA começam a usá-lo ao simular capacidade, mas o suporte varia.

O que é gang scheduling e por que o autoscaler atrapalha?

É o modelo tudo ou nada: todos os pods de um job grande são agendados juntos ou nenhum. O scheduler já evolui para isso com Workload e PodGroup. O autoscaler ainda raciocina pod a pod e pode criar nodes para parte do grupo, desperdiçando capacidade se o job não inicia.

Como o provisioning request ajuda?

Ele permite pedir ao autoscaler a capacidade do grupo inteiro de uma vez. Com um admission check configurado, o Kueue reserva quota, cria o pedido, espera a capacidade ficar pronta e então admite o workload. O scale-up atômico é de melhor esforço e depende do provedor.

Fontes

Avalie este artigo:
Categoria
CEVIU DevOps
Publicado
21 de outubro de 2026
Editoria
CEVIU DevOps

Quer receber mais sobre CEVIU DevOps?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser