O ACK estende o agendamento do Kubernetes com políticas para jobs, topologia, QoS e desescalonamento.
Antes de começar
-
Selecione uma política de agendamento com base na sua função e no cenário de negócios:
Engenheiros de O&M focam no custo do cluster e na maximização da utilização de recursos, garantindo alta disponibilidade, equilibrando a carga dos nós e evitando pontos únicos de falha (SPOFs).
Desenvolvedores de aplicações precisam de implantação e gerenciamento simplificados, além de recursos adequados, como CPU, GPU e memória, para garantir o desempenho das aplicações.
-
Para usar as políticas de agendamento do ACK de forma eficaz, familiarize-se com o Kubernetes Scheduler, Rótulos de nó, Evicção por pressão no nó e Restrições de distribuição de topologia de Pod.
O agendador do ACK utiliza a mesma política padrão do agendador Kubernetes open source, composta pelos plug-ins de Filtro e Pontuação.
Políticas de agendamento nativas do Kubernetes
As políticas de agendamento nativas do Kubernetes dividem-se em duas categorias: agendamento de nós e agendamento entre pods.
Políticas de agendamento de nós: agendam pods em nós que correspondem a características específicas e condições de recursos.
Políticas de agendamento entre pods: controlam a distribuição de pods para otimizar a implantação e garantir a alta disponibilidade da aplicação.
|
Política |
Descrição |
Cenário |
|
Rotule nós com pares chave-valor e use nodeSelector para agendar pods nos nós correspondentes. Por exemplo, agendar pods em nós específicos ou agendar pods em um pool de nós específico. |
Método básico de seleção de nós incompatível com recursos de agendamento mais complexos, como regras flexíveis. |
|
|
Mais flexível e granular que o nodeSelector. Inclui, por exemplo, a regra rígida |
Agenda pods em nós com características específicas, como regiões, tipos de dispositivo e hardware. Regras de anti-afinidade distribuem os pods entre vários nós. |
|
|
Um taint consiste em uma chave, valor e efeito (efeitos comuns: |
|
|
|
Os rótulos dos pods determinam o agendamento pod-nó. Compatível com a regra de afinidade |
|
Políticas de agendamento do ACK
O ACK estende o agendamento do Kubernetes para atender a requisitos como scale-out ordenado com scale-in reverso e agendamento ciente de carga baseado no uso real de recursos do nó.
Configure agendamento de recursos baseado em prioridade
Função indicada: Engenheiros de O&M de cluster.
Descrição: Em clusters com tipos de instância mistos, como instâncias ECS e instâncias de contêiner elásticas, e métodos de faturamento variados, como assinatura, pagamento conforme o uso e instâncias preemptíveis, configure o agendamento de recursos baseado em prioridade. Isso define a ordem de seleção de nós para o agendamento de pods e inverte essa ordem durante o scale-in.
|
Política |
Descrição |
Cenário |
Referência |
|
Agendamento de recursos personalizado baseado em prioridade |
Especifique um valor personalizado de O scale-in reverte essa ordem: primeiro instâncias de contêiner elásticas, depois instâncias ECS pagas conforme o uso e, finalmente, instâncias ECS por assinatura. |
|
Agendamento de prioridade personalizada para recursos elásticos |
Agendamento de jobs
Função indicada: Engenheiros de O&M de cluster.
Descrição: O agendador padrão não é adequado para jobs em lote. O ACK oferece suporte a gang scheduling e capacity scheduling para jobs em lote.
|
Política |
Descrição |
Cenário |
Referência |
|
Gang Scheduling |
Todos os pods relacionados são agendados juntos ou nenhum deles é agendado, impedindo que processos anormais bloqueiem o grupo. |
|
|
|
Capacity Scheduling |
Reserva recursos para namespaces ou grupos de usuários específicos e melhora a utilização por meio do compartilhamento de recursos quando os recursos do cluster estão limitados. |
Em clusters multilocatários, ciclos de vida de recursos e padrões de uso variados levam à baixa utilização. O compartilhamento e a recuperação de recursos melhoram a utilização geral. |
Agendamento ciente de topologia
Função indicada: Engenheiros de O&M de cluster.
Descrição: Cargas de trabalho de machine learning e big data exigem comunicação intensa entre pods, mas o agendador padrão distribui os pods uniformemente pelo cluster, aumentando o tempo de conclusão dos jobs. Os mecanismos nativos de afinidade não conseguem tentar novamente em múltiplos domínios de topologia.
|
Descrição |
Cenário |
Referência |
|
O agendador usa rótulos de gang scheduling para garantir que todas as solicitações de recursos dos pods sejam atendidas simultaneamente. O agendamento ciente de topologia itera pelos domínios de topologia para encontrar um que atenda a todos os requisitos dos pods. Associe pools de nós a conjuntos de implantação para agendar pods em instâncias ECS no mesmo conjunto de implantação de baixa latência, melhorando o desempenho do job. |
Em jobs de machine learning ou big data, os pods precisam de comunicação frequente. O agendador itera pelos domínios de topologia para encontrar um que satisfaça todos os requisitos dos pods, reduzindo o tempo de conclusão do job. |
Agendamento ciente de carga
Função indicada: Engenheiros de O&M de cluster e desenvolvedores de aplicações.
Descrição: O agendador nativo atribui pods com base na alocação de recursos, não no uso real. Como as cargas dos nós mudam dinamicamente com o tráfego e as cargas de trabalho, o agendador nativo não consegue detectar as cargas de recursos em tempo real.
|
Descrição |
Cenário |
Referência |
|
O agendador do ACK monitora o histórico de carga dos nós e estima o uso de recursos de novos pods para agendá-los em nós com menor carga, prevenindo falhas causadas por nós sobrecarregados. |
Aplicações sensíveis a carga, latência de acesso ou QoS de recursos. |
Usar desescalonamento de hotspots ciente de carga para evitar desequilíbrio na carga dos nós.
Agendamento ciente de QoS
Função indicada: Engenheiros de O&M de cluster e desenvolvedores de aplicações.
Descrição: As classes de QoS do Kubernetes (Guaranteed, Burstable, BestEffort) determinam a prioridade de evicção de pods quando os recursos do nó são insuficientes. O ACK adiciona agendamento ciente de SLO para melhorar o desempenho de aplicações sensíveis à latência, garantindo simultaneamente o acesso a recursos para jobs de menor prioridade.
|
Política |
Descrição |
Cenário |
Referência |
|
CPU Burst |
O SO pode limitar o uso de CPU do contêiner dentro de um ciclo (throttling de CPU). O CPU Burst permite que contêineres ociosos acumulem fatias de tempo de CPU e ultrapassem temporariamente o limite de CPU durante picos de demanda, melhorando o desempenho e reduzindo a latência. |
|
|
|
Agendamento de CPU ciente de topologia |
Fixa pods sensíveis a CPU em núcleos específicos para evitar degradação de desempenho causada por troca frequente de contexto e acesso à memória cross-NUMA. |
|
|
|
Agendamento de GPU ciente de topologia |
Quando múltiplos pods intensivos em GPU são executados simultaneamente, eles podem competir por recursos de GPU e alternar entre GPUs ou nós NUMA, degradando o desempenho. O agendamento de GPU ciente de topologia atribui cargas de trabalho a GPUs específicas, reduzindo o acesso à memória cross-NUMA e melhorando o desempenho. |
|
|
|
Sobrecarga dinâmica de recursos |
Recupera recursos alocados, mas não utilizados pelos pods, e agenda-os para jobs de baixa prioridade para permitir sobrecarga. Use as seguintes políticas de QoS de nó único em conjunto para evitar que as aplicações afetem umas às outras:
|
Melhora a utilização de recursos do cluster por meio de colocalização. Cenários típicos incluem treinamento e inferência de modelos de ML, processamento e análise de big data em lote, serviços online e backup offline. |
|
|
Modifique dinamicamente os parâmetros de recursos de um pod |
No Kubernetes 1.27 ou anterior, modificar parâmetros do contêiner exige excluir e recriar o pod. O ACK permite modificar limites de CPU, memória e IOPS de disco sem reiniciar o pod. |
Ajustes temporários de recursos de CPU ou memória. |
Desescalonamento
Função indicada: Engenheiros de O&M de cluster e desenvolvedores de aplicações.
Descrição: À medida que as condições do cluster mudam, os pods em execução podem precisar migrar para nós mais adequados.
|
Política |
Descrição |
Cenário |
Referência |
|
Desescalonamento |
Reagenda pods mal posicionados para nós ideais quando hotspots se formam devido ao uso desigual de recursos ou mudanças nos atributos dos nós, garantindo alta disponibilidade e eficiência da carga de trabalho. |
|
|
|
Trabalhar com desescalonamento de hotspots ciente de carga |
Combina agendamento ciente de carga e desescalonamento de hotspots para monitorar as cargas dos nós e reequilibrar automaticamente os nós que excedem o limiar de carga. |
Faturamento
O agendamento do ACK gera cobranças pelo gerenciamento do cluster e recursos de nuvem com base nas regras de faturamento. Taxas adicionais de componentes de agendamento:
O agendador padrão do ACK (kube-scheduler) é gratuito para instalação e uso.
O agendamento e desescalonamento de recursos do ACK baseiam-se no ack-koordinator. O ack-koordinator é gratuito para instalação e uso, mas pode gerar taxas adicionais em cenários específicos. Consulte ack-koordinator (FKA ack-slo-manager).
FAQ
Para problemas de agendamento, consulte o FAQ de Agendamento.
Referências
Para introdução e notas de lançamento do kube-scheduler e ack-koordinator, consulte Container Service for Kubernetes:kube-scheduler e ack-koordinator (FKA ack-slo-manager).
Para personalizar o comportamento do kube-scheduler, consulte Personalizar parâmetros do agendador.
Para melhores práticas de agendamento, como arquitetura de colocalização, consulte Melhores práticas para agendamento de recursos.
Ative os insights de custos para visualizar o uso de recursos, alocação de custos e recomendações de economia para clusters ACK.
Para agendamento de GPU e isolamento de memória, consulte Compartilhamento de GPU.
Para agendamento de nós virtuais, consulte Agendar um pod em um nó virtual.