Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Visão geral do descheduling

Última atualização: Jun 27, 2026

O descheduling é o processo de reagendar pods que correspondem a regras de evicção em um nó para outro. Em cenários com nós sobrecarregados devido à distribuição desigual de recursos no cluster, ou quando os pods não são agendados conforme a política predefinida por alterações nos atributos dos nós, use o descheduling para otimizar o uso de recursos e alocar os pods nos nós ideais. Isso garante a alta disponibilidade e a eficiência das cargas de trabalho no cluster.

Antes de começar

Observe os itens a seguir antes de usar o descheduling.

Após a leitura deste tópico, você conhecerá as seguintes informações sobre o descheduling:

  • Cenários de uso do descheduling.

  • Fluxo de trabalho do descheduling.

  • Termos relacionados ao descheduling, incluindo modelos de descheduling, as políticas Deschedule e Balance, e os evictors DefaultEvictor e MigrationController.

Importância do descheduling

O Kubernetes Scheduler agenda pods nos nós adequados com base no status atual do cluster. No entanto, esse status muda constantemente. Em alguns cenários, pode ser necessário migrar pods em execução para outros nós. Exemplos:

  • As cargas de trabalho no cluster não estão distribuídas uniformemente. Alguns nós ficam sobrecarregados, o que compromete seu desempenho.

  • A utilização geral de recursos do cluster está baixa e você deseja remover alguns nós para reduzir custos. Para isso, migre primeiro os pods desses nós para outros.

  • O cluster contém muitos fragmentos de recursos. Consequentemente, um nó pode não ter recursos ociosos suficientes, mesmo que o total de recursos no cluster ainda seja adequado. Nesse cenário, pods que solicitam grandes quantidades de recursos falham no agendamento, aumentando as despesas com recursos do cluster.

  • Taints ou rótulos são adicionados ou removidos de um nó. Nessa situação, alguns pods no nó deixam de corresponder à regra de afinidade. Migre esses pods para um nó cuja regra de afinidade seja compatível.

Por exemplo, considere uma aplicação com cargas de trabalho flutuantes em diferentes horários. Nós sobrecarregados podem surgir durante os horários de pico, comprometendo a qualidade do serviço da aplicação. Para resolver esse problema, use o recurso de descheduling para evictar pods anômalos e reduzir a carga do nó sobrecarregado, garantindo assim a qualidade do serviço.

Para atender a esse objetivo, o ack-koordinator fornece um módulo de descheduling chamado Koordinator Descheduler, executado como um Deployment nos nós. O Koordinator Descheduler foi desenvolvido com base no Descheduling Framework do Kubernetes Descheduler. Ele é compatível com todas as políticas de descheduling do Kubernetes Descheduler. Além disso, o Koordinator Descheduler otimiza o descheduling de pods em termos de políticas, métodos de evicção, controle de tráfego de evicção e processos de evicção. Para obter mais informações sobre as diferenças entre o Koordinator Descheduler e o Kubernetes Descheduler, consulte Koordinator Descheduler e Kubernetes Descheduler.

Fluxo de trabalho do descheduling

O Koordinator Descheduler opera periodicamente. Configure várias políticas de descheduling para filtrar, verificar e evictar pods que atendam às condições de evicção. A figura a seguir ilustra o funcionamento do Koordinator Descheduler.

image
  1. Percorra os modelos de descheduling e execute sequencialmente a política Deschedule ativada em cada modelo.

    1. Obtenha informações sobre nós, cargas de trabalho e pods.

    2. Compare os pods com as regras do Deschedule.

    3. Filtre, verifique e classifique os pods que atendem às regras de evicção.

    4. O evictor de pods ativado no modelo de descheduling envia uma solicitação de evicção de pod.

  2. Percorra novamente os modelos de descheduling e execute sequencialmente a política Balance ativada em cada modelo. O fluxo de trabalho é semelhante à Etapa 1.

As seções a seguir descrevem os termos utilizados no fluxo de trabalho de descheduling.

Modelo de descheduling

Configure um ou mais modelos de descheduling para atender a diferentes requisitos. Especifique a política de descheduling e o evictor de pods a serem usados em cada modelo, defina o escopo aplicável e configure parâmetros avançados para um tipo específico de pod.

O uso de políticas de descheduling permite aplicar diferentes estratégias de evicção de pods em diversos cenários. Por exemplo, para evictar pods expirados com TTLs diferentes em namespaces distintos, configure vários modelos de descheduling e defina um limiar para o TTL dos pods em cada namespace.

Durante o processo de descheduling, o Koordinator Descheduler percorre todos os modelos de descheduling e executa a política Deschedule em cada um. Após a execução de todas as políticas Deschedule, o Koordinator Descheduler percorre os modelos novamente e executa a política Balance em cada um.

Políticas de descheduling: Deschedule e Balance

Duas políticas de descheduling estão disponíveis: Deschedule e Balance. Essas políticas identificam os pods a serem evictados. Para obter mais informações sobre como configurar as políticas de descheduling e os recursos suportados por cada uma, consulte Aplicar a configuração.

  • Deschedule: O Koordinator Descheduler compara cada pod com a restrição de agendamento atual e evicta sequencialmente os pods correspondentes. Por exemplo, ele evicta, um a um, os pods que não correspondem à regra de afinidade ou anti-afinidade do nó.

  • Balance: O Koordinator Descheduler otimiza a distribuição de determinados pods ou de todos os pods no cluster e decide quais devem ser evictados. Por exemplo, ele evicta pods de nós sobrecarregados com base na utilização de recursos dos nós.

As políticas de descheduling são independentes entre si. O Koordinator Descheduler executa cada política para evictar pods com base nas regras de evicção correspondentes e, em seguida, filtra, verifica e classifica os pods. Restrições como capacidade do cluster, utilização de recursos e número de réplicas são consideradas durante a comparação dos pods com as regras de evicção. Depois de determinar os pods a serem evictados, o Koordinator Descheduler envia uma solicitação ao evictor de pods para realizar a evicção.

Evictors e controle de evicção

Os evictors no Koordinator Descheduler são responsáveis por evictar pods. Os seguintes evictors estão disponíveis: DefaultEvictor e MigrationController.

  • DefaultEvictor: evictor básico de pods que permite limitar o número máximo de pods a serem evictados. Use e configure o DefaultEvictor da mesma forma que no Kubernetes Descheduler. Para obter mais informações, consulte DefaultEvictor.

  • MigrationController: permite evictar e migrar pods de maneira segura, além de rastrear a evicção. Para obter mais informações sobre os parâmetros, consulte MigrationController.

Para obter mais informações sobre a diferença entre os dois evictors, consulte Ativar o recurso de descheduling.

Ativar o descheduling

Para obter mais informações sobre como instalar o componente ack-koordinator e ativar o descheduling, consulte Ativar o recurso de descheduling.

Também é possível configurar parâmetros avançados para o Koordinator Descheduler, modelos de descheduling, plug-ins de política de descheduling e plug-ins de evictor em um ConfigMap. Para obter mais informações, consulte Configurar parâmetros avançados.

Referências

  • Se você usa o Kubernetes Descheduler, recomendamos migrar para o Koordinator Descheduler. Para obter mais informações sobre as diferenças e como migrar, consulte Koordinator Descheduler e Kubernetes Descheduler.

  • O recurso de descheduling foi desenvolvido com base no Koordinator Descheduler do componente ack-koordinator. A instalação e o uso do componente ack-koordinator são gratuitos. No entanto, esse componente pode gerar custos em determinados cenários. Para obter mais informações, consulte Faturamento.