Afinidade do pool de nós
Em cenários como substituição de pool de nós e atualização contínua de nós, um pool de recursos antigo precisa ser substituído por um novo. Para impedir que a substituição do pool de nós afete os serviços, ative a afinidade suave para agendar pods de serviço para o novo pool de nós. O agendamento de afinidade suave tenta agendar pods recém-criados ou pods reagendados para o novo pool de nós. Se os pods não puderem ser agendados para o novo pool de nós, por exemplo, devido a recursos insuficientes, os pods também poderão ser agendados para o pool de nós anterior. Como a substituição de um pool de nós não deve afetar os serviços, a configuração de afinidade de nó não é declarada nas cargas de trabalho de serviço. Use afinidade suave no agendamento de cluster para agendar pods para novos pools de nós quando uma substituição de pool for acionada.
O Volcano tem como objetivo programar soft pods de serviço para nós especificados quando a afinidade suave do nó não estiver configurada em cargas de trabalho de serviço.
Prioridade de agendamento
O agendamento de afinidade suave de um pool de nós é implementado com base em rótulos no pool de nós. Cada nó no pool de nós é pontuado para selecionar o ideal para o agendamento de pods.
A regra é agendar pods para nós com rótulos especificados o máximo possível.
A fórmula para marcar um nó é a seguinte:
Pontuação do nó = Weight x MaxNodeScore x haveLabel
Parâmetros:
- Weight: peso do complemento de afinidade suave no pool de nós.
- MaxNodeScore: pontuação máxima (100) de um nó.
- haveLabel: se os rótulos configurados no complemento estão disponíveis em um nó. Se sim, o valor é 1. Se não, o valor é 0.
Pré-requisitos
- Um cluster de v1.19.16 ou posterior está disponível. Para mais detalhes, consulte Compra de um cluster do CCE.
- Volcano da v1.11.5 ou posterior foi instalado no cluster. Para mais detalhes, consulte Volcano scheduler.
Habilitar o agendamento de afinidade suave para pools de nós de Volcano
- Configure rótulos para agendamento de afinidade no pool de nós.
- Efetue logon no console do CCE.
- Clique no nome do cluster para acessar o console do cluster. Escolha Nodes no painel de navegação e clique na guia Node Pools.
- Clique em Update do pool de nós de destino. Na página exibida, configure os rótulos na área Kubernetes Label.
O seguinte é um exemplo.
- Escolha Add-ons no painel de navegação, localize Volcano Scheduler à direita, clique em Install ou Edit e configure os parâmetros do Volcano scheduler na área Parameters.
{ "ca_cert": "", "default_scheduler_conf": { "actions": "allocate, backfill", "tiers": [ { "plugins": [ { "name": "priority" }, { "name": "gang" }, { "name": "conformance" } ] }, { "plugins": [ { "name": "drf" }, { "name": "predicates" }, { "name": "nodeorder" } ] }, { "plugins": [ { "name": "cce-gpu-topology-predicate" }, { "name": "cce-gpu-topology-priority" }, { "name": "cce-gpu" }, { // Enable node pool affinity scheduling. "name": "nodepoolaffinity", // Configure the affinity scheduling weight and labels of the node pool. "arguments": { "nodepoolaffinity.weight": 10000, "nodepoolaffinity.label": "nodepool1=nodepool1" } } ] }, { "plugins": [ { "name": "nodelocalvolume" }, { "name": "nodeemptydirvolume" }, { "name": "nodeCSIscheduling" }, { "name": "networkresource" } ] } ] }, "server_cert": "", "server_key": "" }
- Clique em OK.