Personalize comportamentos do kube-scheduler, como binpack, agendamento com base em carga e preempção, para controlar o posicionamento de pods no cluster.
Pré-requisitos
Crie um cluster ACK Pro, cluster ACK Edge Pro, cluster ACK Lingjun ou cluster ACK Serverless Pro com Kubernetes 1.20 ou posterior. Para atualizar a versão do Kubernetes, atualize o cluster manualmente.
Limitações
Versões do kube-scheduler compatíveis com parâmetros personalizados em clusters ACK Pro e clusters ACK Edge Pro, por versão do Kubernetes:
Clusters ACK Serverless Pro e ACK Lingjun com o kube-scheduler instalado também aceitam parâmetros personalizados.
|
Versão do Kubernetes |
Versão do kube-scheduler |
|
≥ 1,28 |
Todas as versões |
|
1,26 |
≥ v1.26.3-aliyun-6.8.7.5a563072 |
|
1.24 |
≥ 1.24.6-ack-3.1 |
|
1.22 |
≥ 1.22.15-ack-2.0 |
|
1.20 |
≥ v1.20.11-9.0-bcaa6001-aliyun |
Procedimento
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, localize o cluster desejado e clique no nome dele. No painel de navegação à esquerda, clique em Add-ons.
-
Na aba Core Components, localize Kube Scheduler e clique em Configuration. Configure os parâmetros na caixa de diálogo Kube Scheduler Parameters.
Os parâmetros disponíveis variam conforme a versão do kube-scheduler. Para recursos específicos de cada versão, consulte Container Service for Kubernetes:kube-scheduler.
Parâmetro
Descrição
Tipo
Valor válido
Valor padrão
Enable Virtual Node-based Pod Scheduling
Define se os pods devem ser agendados em nós virtuais com base na afinidade de nó e nas restrições de distribuição de pods.
bool
true
false
true
podMaxBackoffSeconds
Intervalo máximo de backoff (em segundos) entre tentativas de agendamento para um pod com falha. O intervalo entre duas tentativas deve exceder este valor.
int
[1,100000]
10
Preferably Use Bin Packing During Pod Scheduling
Indica se o algoritmo binpack deve ser ativado.
Para exemplos de configuração, consulte Parâmetros personalizados de binpack.
bool
false
true
false
binpackPluginWeight
Peso da pontuação do nó pelo plug-in binpack. Requer a opção Preferably Use Bin Packing During Pod Scheduling.
int
[1,100000]
100
binpackResourceWeight
Peso de cada recurso no cálculo da pontuação do nó pelo plug-in binpack. Exige que Preferably Use Bin Packing During Pod Scheduling esteja habilitado.
resourceName: string
resourceWeight: int
resourceName: apenas letras, dígitos, pontos (.), barras (/) e hifens (-).
resourceWeight: inteiro de 1 a 10000.
cpu:1
memory:1
scorePluginWeights
Peso de cada plug-in de pontuação no cálculo da nota do nó.
NotaO peso do plug-in NodeResourceFit entra em conflito com o peso do plug-in binpack. Caso selecione Preferably Use Bin Packing During Pod Scheduling (Pods Are Evenly Distributed among Nodes When Unselected), não defina um peso para NodeResourceFit neste parâmetro.
plugin: string
weight: int
Somente plug-ins listados no menu suspenso plugin estão disponíveis.
weight: inteiro de 1 a 10000.
plugin: NodeAffinity
weight: 100
percentageOfNodesToScore
Percentual de nós adequados para o agendamento de pods.
Valor padrão: 0. Quando definido como 0, entre 5% e 50% dos nós são pontuados conforme o tamanho do cluster.
int
[0,100]
0
Node scoring for GPU sharing
Ao usar agendamento com GPU compartilhada (requer o pacote de IA), direciona pods acelerados por GPU para GPUs com maiores solicitações de memória e computação.
bool
false
true
true
Load-aware scoring during pod scheduling (loadAwareResourceWeight)
Habilita o agendamento com base na carga real dos nós. Requer o componente ack-koordinator.
bool
false
true
false
loadAwareThreshold
Defina o limiar para filtragem de nós.
O valor é composto pelos campos resourceName e resourceWeight.
resourceName: Os valores válidos são cpu e memory.
threshold: Valores válidos variam de 0 a 100.
Por padrão, esse campo fica vazio, desativando a filtragem de nós.
resourceName: cpu
threshold: 80
loadAwareResourceWeight
Especifique o peso do recurso usado no cálculo da pontuação do nó para ordenação. Disponível após selecionar Specifies whether to enable load-aware node scoring during pod scheduling.
Composto pelos campos resourceName e resourceWeight.
resourceName: O esquema do parâmetro resourceName é validado. Apenas
cpuoumemorysão aceitos.resourceWeight: Inteiros de 1 a 100.
cpu=1
memory=1
loadAwareAggregatedUsageAggregationType
Tipo de agregação de dados para as estatísticas. Opções válidas:
avg: calcula a média.
p50: considera 50% das estatísticas.
p90, p95 e p99: consideram, respectivamente, 90%, 95% e 99% das estatísticas.
enum
avg
p50
p90
p95
p99
avg
preemptionAlgorithm
O ACK Scheduler decide se deve remover pods de menor prioridade via simulação de recursos, priorizando a inicialização rápida de cargas de alta prioridade. Estratégias suportadas:
Default: preempção padrão da comunidade Kubernetes
ElasticQuota: preempção baseada em ElasticQuotaTree
Auto: política adaptativa conforme as especificações do cluster
None: desativa a preempção
Consulte Enable preemption.
enum
Default
ElasticQuota
Auto
None
Auto
enableReservation
Ativa a reserva de recursos.
boolean
true
false
false
featureGates
Feature gates habilitados pelo scheduler. Para suporte por versão, veja a documentação do kube-scheduler.
string
N/A
O ACK utiliza os mesmos feature gates do Kubernetes open source.
O exemplo a seguir ilustra uma configuração típica de binpack.
Parâmetros personalizados de binpack
Binpack versus algoritmo spread
Dimensão | binpack | spread |
Política de agendamento |
|
|
Característica | Minimiza a fragmentação de recursos nos nós. |
|
Cenários | Ideal para aumentar a utilização de recursos dos nós. | Recomendado para cargas de trabalho de alta disponibilidade. |
Configurar parâmetros personalizados de binpack
Selecione Preferably Use Bin Packing During Pod Scheduling e defina o peso do plug-in binpack. Um peso maior eleva a probabilidade de colocar pods no mesmo nó. Especifique os nomes dos recursos e seus respectivos pesos para o cálculo da pontuação do nó; quanto maior o peso, maior a influência desse recurso no agendamento.
Na aba Core Components da página Add-ons, localize Kube Scheduler e clique em Configuration para ajustar os parâmetros de binpack.
Parâmetro | Descrição |
Preferably Use Bin Packing During Pod Scheduling | Habilita o algoritmo binpack. |
binpackPluginWeight | Peso da pontuação do nó atribuído pelo plug-in binpack. Na maioria dos casos, mantenha o valor padrão. Se o agendamento não ocorrer como esperado, aumente o peso (por exemplo, 200). Consulte peso do binpack. |
Nomes e pesos dos recursos para o cálculo da pontuação binpack do nó. | Veja Enabling bin packing using MostAllocated strategy.
|
Caso ative Preferably Use Bin Packing During Pod Scheduling sem definir resourceName e resourceWeight, o sistema aplica automaticamente as configurações padrão de CPU e memória mostradas abaixo para calcular a pontuação do nó. Os valores padrão são resourceName cpu com resourceWeight 1 e resourceName memory com resourceWeight 1.

Referências
Para agendar pods com base no uso real de recursos em vez dos valores solicitados, ative o agendamento com base em carga.