Binpack
Binpack é um complemento de agendamento de pods que permite que o agendador programe preferencialmente pods para nós com alta alocação de recursos. Isso reduz os fragmentos de recursos em cada nó e melhora a utilização dos recursos do cluster.
Pré-requisitos
- Um cluster de v1.19 ou posterior está disponível. Para mais detalhes, consulte Compra de um cluster do CCE.
- O complemento Volcano foi instalado. Para mais detalhes, consulte Volcano scheduler.
Recursos
Binpack visa preencher tantos nós existentes quanto possível (tente não alocar nós em branco). Na implementação concreta, o algoritmo de agendamento Binpack pontua os nós que podem ser entregues, e uma pontuação mais alta indica uma maior taxa de utilização de recursos dos nós. Binpack pretende agendar centralmente as cargas de trabalho da aplicação em alguns nós em um cluster, o que facilita o dimensionamento automático dos nós do cluster.
O complemento Binpack funciona com outros complementos de agendamento do agendador para marcar nós. Você pode personalizar o peso geral do complemento e o peso de cada recurso para modificar a influência na pontuação do nó. Ao usar o Binpack para calcular as pontuações dos nós, o agendador considera recursos estendidos, como CPUs, memória e GPUs solicitados pelos pods, e calcula as pontuações com base nos pesos configurados para cada recurso.
Implementação de algoritmo
Um nó é pontuado com base no peso geral do complemento Binpack e no peso de cada recurso. Cada tipo de recurso solicitado pelos pods a serem agendados é pontuado. Tomando CPUs como exemplo, a pontuação da CPU é calculada usando a seguinte fórmula:
CPU.weight x (Requested + Used)/Allocatable
Um peso maior da CPU leva a uma pontuação mais alta. Um maior uso de recursos de um nó leva a uma pontuação de nó mais alta. A mesma regra se aplica a recursos de memória e GPU. Os parâmetros na fórmula para marcar um recurso são os seguintes:
- CPU.weight: peso da CPU personalizado
- Requested: recursos de CPU solicitados pelos pods a serem agendados
- Used: recursos de CPU que foram usados no nó atual
- Allocatable: recursos totais da CPU disponíveis no nó atual
O complemento Binpack calcula a pontuação de um nó usando a seguinte fórmula:
Binpack.weight x (CPU.score + Memory.score + GPU.score)/(CPU.weight + Memory.weight + GPU.weight) x 100
Um peso de Binpack maior leva a uma pontuação mais alta. Um maior peso de recursos leva a uma maior influência na pontuação do nó. Os parâmetros na fórmula para marcar um nó são os seguintes:
- Binpack.weight: peso do Binpack
- CPU.score: pontuação de CPU calculada; CPU.weight: peso de CPU personalizado
- Memory.score: pontuação de memória calculada; Memory.weight: peso de memória personalizado
- GPU.score: pontuação calculada da GPU; GPU.weight: peso personalizado da GPU
Como mostrado na figura, há dois nós no cluster. Quando os pods precisam ser agendados, a política de Binpack pontua os dois nós separadamente.
- A pontuação para o nó 1 é a seguinte:
Cada recurso é pontuado usando a seguinte fórmula: CPU.weight x (Requested + Used)/Allocatable
- Pontuação da CPU: 1 x (2 + 4)/8 = 0,75
- Pontuação de memória: 1 x (4 + 8)/16 = 0,75
- Pontuação da GPU: 2 x (4 + 4)/8 = 1
A pontuação total de cada nó é calculada usando a seguinte fórmula: Binpack.weight x (CPU.score + Memory.score + GPU.score)/(CPU.weight + Memory.weight + GPU.weight) x 100
Pontuação do nó 1: 5 x (0,75 + 0,75 + 1)/(1 + 1 + 2) x 100 = 312,5
- A pontuação para o nó 2 é a seguinte:
- Pontuação da CPU: 1 x (2 + 6)/8 = 1
- Pontuação de memória: 1 x (4 + 8)/16 = 0,75
- Pontuação da GPU: 2 x (4 + 4)/8 = 1
Pontuação do nó 2: 5 x (1 + 0.75 + 1)/(1 + 1 + 2) x 100 = 343,75
Os resultados do cálculo mostram que a pontuação do nó 2 é maior que a do nó 1. De acordo com a política de Binpack, novos pods serão preferencialmente agendados para o nó 2.
Procedimento
Depois que o Volcano é instalado, a política de Binpack entra em vigor por padrão. Se a configuração padrão não puder atender aos seus requisitos, você poderá personalizar o peso do complemento Binpack e o peso de cada recurso na página Scheduling Configuration. Para fazer isso, execute as seguintes operações:
- Efetue logon no console do CCE.
- Clique no nome do cluster para acessar o console do cluster. Escolha Settings no painel de navegação e clique na guia Scheduling Configuration.
- Na área Resource utilization optimization scheduling, modifique as configurações de Binpack.
Figura 2 Agendamento da otimização da utilização de recursos
- Clique em Confirm.