Os clusters ACS incluem um default-scheduler integrado que aloca recursos para todos os pods. Para workloads GPU-HPN que exigem políticas de agendamento complexas — como gang scheduling ou posicionamento com reconhecimento de topologia — implante um agendador personalizado (por exemplo, Koordinator ou Volcano) e configure o ACS para usá-lo.
O suporte a agendadores personalizados aplica-se exclusivamente a pods GPU-HPN. Todos os outros tipos de computação usam nós virtuais padrão e não oferecem suporte a agendadores personalizados.
Pré-requisitos
Antes de começar, verifique se você tem:
Um pod com o tipo de computação definido como High-Performance Network GPU (gpu-hpn)
O add-on acs-virtual-node instalado na versão v2.12.0-acs.8 ou posterior
-
O componente kube-scheduler instalado em uma versão compatível com agendadores personalizados:
Versão do cluster ACS
Versão mínima do kube-scheduler
1,32 e posteriores
Todas as versões suportadas
1,31
v1.31.0-aliyun-1.1.2 ou posterior
1,30
v1.30.3-aliyun-1.1.2 ou posterior
1,28
v1.28.9-aliyun-1.1.2 ou posterior
Ao usar um agendador personalizado para pods GPU-HPN, configure o campo spec.schedulerName em cada pod. Para mais detalhes, consulte Specify schedulers for pods .
Observações de uso
A ativação de agendadores personalizados altera a forma como o ACS gerencia pods e nós GPU-HPN. Analise as diferenças de comportamento antes de prosseguir.
|
Aspecto |
Agendador padrão (desativado) |
Agendador personalizado (ativado) |
|
Nome do agendador do pod |
Não personalizável. Após o envio de um pod, o campo |
Personalizável. O campo |
|
Processo de agendamento do pod |
O agendador padrão do ACS aloca recursos para todos os pods. |
O agendador padrão do ACS processa apenas os pods cujo campo |
|
Restrições de rótulos e taints em nós GPU-HPN |
A adição, modificação e exclusão de rótulos, anotações e taints de nó estão sujeitas às restrições do ACS. Consulte Manage node labels and taints. |
As restrições de rótulos, anotações e taints de nó deixam de ser aplicadas. |
|
Restrições de agendamento por afinidade de pod |
A configuração do campo de afinidade está sujeita às restrições do ACS. Consulte Node affinity scheduling. |
As restrições do campo de afinidade deixam de ser aplicadas. |
Essas alterações afetam somente pods e nós GPU-HPN. Outros tipos de computação não oferecem suporte a agendadores personalizados.
Implantar e configurar um agendador personalizado
Etapa 1: Implantar um agendador personalizado
Implante seu agendador personalizado no cluster ACS. Para obter um exemplo completo — incluindo a configuração necessária de ServiceAccount e ClusterRoleBinding — consulte a documentação do Kubernetes.
Etapa 2: Ativar agendadores personalizados no ACS
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no ID do cluster desejado. No painel de navegação à esquerda, escolha Operations > Add-ons.
Na página Add-ons, localize o cartão Kube Scheduler e clique em Configuration.
Na caixa de diálogo, selecione Enable custom labels and schedulers for GPU-HPN nodes e clique em OK.
Etapa 3: Configurar um agendador personalizado para um pod
-
Crie um arquivo chamado
dep-with-koordinator.yamlcom o conteúdo abaixo. Este Deployment definealibabacloud.com/compute-class: gpu-hpnno modelo de pod e atribuikoord-schedulercomo agendador. Substituakoord-schedulerpelo nome configurado na Etapa 1.apiVersion: apps/v1 kind: Deployment metadata: name: dep-with-koordinator labels: app: dep-with-koordinator spec: replicas: 1 selector: matchLabels: app: dep-with-koordinator template: metadata: labels: app: dep-with-koordinator # Set the compute class to gpu-hpn. Other compute types do not support custom schedulers. alibabacloud.com/compute-class: gpu-hpn spec: containers: - name: demo image: registry.cn-hangzhou-finance.aliyuncs.com/acs/stress:v1.0.4 command: - "sleep" - "infinity" restartPolicy: Always # Set the scheduler name to match the one deployed in Step 1. schedulerName: koord-scheduler -
Aplique o Deployment no cluster.
kubectl apply -f dep-with-koordinator.yaml -
Verifique se o pod está usando o agendador personalizado.
kubectl get pod -lapp=dep-with-koordinator -o custom-columns=NAME:.metadata.name,schedulerName:.spec.schedulerNameSaída esperada:
NAME schedulerName dep-with-koordinator-xxxxx-xxxxx koord-scheduler
Perguntas frequentes
Por que recebo o erro "Insufficient attachable-volumes-xxx" quando um pod usa um PVC com um agendador personalizado?
Alguns agendadores personalizados exigem que o objeto Node da Container Storage Interface (CSI) exista no nó e tenha relatado informações de capacidade para o driver CSI correspondente. Caso essa condição não seja atendida, o agendador relata um erro de recurso insuficiente — mesmo que o agendador padrão do Kubernetes gerencie essa situação automaticamente.
Configure o agendador personalizado para ignorar drivers CSI específicos. Para o agendador Volcano, adicione a flag --ignored-provisioners na inicialização:
# Separate multiple drivers with commas.
--ignored-provisioners=povplugin.csi.alibabacloud.com
Ajuste o nome do driver para corresponder ao driver CSI presente no seu cluster.