Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

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

  1. Configure rótulos para agendamento de afinidade no pool de nós.

    1. Efetue logon no console do CCE.
    2. Clique no nome do cluster para acessar o console do cluster. Escolha Nodes no painel de navegação e clique na guia Node Pools.
    3. 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.

  2. 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": ""
    }

  3. Clique em OK.