Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Ative preempção

Última atualização: Jun 27, 2026

ACK Scheduler Quando os recursos do cluster estão escassos, tarefas de alta prioridade podem falhar devido à falta de capacidade disponível. Com a preempção ativada, o ACK Scheduler simula a disponibilidade de recursos e remove pods de baixa prioridade para liberar capacidade computacional, permitindo que tarefas de alta prioridade iniciem rapidamente.

Antes de começar

Leia Prioridade e preempção de pods para entender PriorityClass, priorityClassName e como a prioridade do pod afeta a ordem de agendamento e remoção.

Como funciona a preempção

Com a preempção ativada, o ACK Scheduler segue este procedimento:

  1. Especifique a prioridade da tarefa: adicione priorityClassName às configurações dos pods.

    Componentes do sistema, como kube-proxy e etcd, geralmente usam a PriorityClass system-node-critical. A maioria executa como DaemonSets e não é removida por padrão.
  2. Simule a preempção: ao detectar um pod pendente que não pode ser agendado, o ACK Scheduler simula se a remoção de pods de baixa prioridade liberaria recursos suficientes.

  3. Remova com segurança os pods de baixa prioridade: após o ACK Scheduler acionar a preempção, o kubelet remove os pods identificados e libera recursos para o pod de alta prioridade.

  4. Reagende os pods removidos: controladores como Deployments recriam os pods removidos e os agendam em outros nós. Se os recursos continuarem insuficientes, os pods permanecem pendentes.

Políticas de preempção

O ACK Scheduler oferece suporte às seguintes políticas de preempção, configuráveis pelo parâmetro PreemptionAlgorithm.

Política

Descrição

Default

Política de preempção padrão do Kubernetes. Tenta primeiro o agendamento direto e, quando os recursos são insuficientes, simula a remoção de pods de baixa prioridade. Consulte Prioridade e preempção de pods.

ElasticQuota

Realiza preempção com base na ElasticQuotaTree. Veja Detalhes da política ElasticQuota.

Auto

Prioriza ElasticQuota e reverte para Default quando ElasticQuota não surte efeito.

None

Desativa a preempção.

A figura a seguir ilustra como a política entra em vigor.

image

Detalhes da política ElasticQuota

Quando a política ElasticQuota está ativa, o ACK Scheduler executa a preempção em três etapas:

  1. Identifique a lista de preempção: diferentemente das tarefas comuns, o ACK Scheduler combina todos os pods pendentes de um gang em uma única lista de preempção. O gang só é processado se todos os pods puderem ser agendados via preempção. Caso algum pod tenha alta prioridade, todo o gang é tratado como alta prioridade.

  2. Identifique os nós viáveis: o ACK Scheduler determina os nós candidatos:

    • Se vários pods no gang exigirem preempção, qualquer nó compatível com pelo menos um pod é adicionado ao pool de candidatos. Em seguida, o ACK Scheduler libera recursos para os pods restantes.

    • Quando apenas um pod exige preempção, o ACK Scheduler filtra os nós Unschedulable para identificar aqueles com recursos insuficientes ou incompatíveis.

  3. Simule a preempção: o ACK Scheduler filtra os pods elegíveis para preempção nos nós viáveis. Um pod é elegível se ambas as condições forem atendidas:

    Em seguida, o ACK Scheduler aplica as regras da ElasticQuotaTree:

    • Se o pod preemptor pertencer a uma Quota:

      • Uso atual da Quota igual ou inferior à garantia Min: o pod pode preemptar pods de outras Quotas que utilizem recursos acima de sua garantia Min.

      • Uso atual da Quota superior à garantia Min: o pod só pode preemptar pods de menor prioridade dentro da própria Quota (preempção intra-quota).

    • Se o pod preemptor não pertencer a nenhuma Quota: a preempção não é permitida.

    Após identificar os pods a serem preemptados, o ACK Scheduler simula a remoção deles e o reagendamento do pod preemptor. Se a simulação for bem-sucedida, os pods são removidos e reagendados. Em caso de falha, a preempção é encerrada.

Ative preempção

Personalize os parâmetros do agendador e defina preemptionAlgorithm como Default, ElasticQuota, Auto ou None. O valor padrão é Auto.

Próximos passos