Todos os produtos
Search
Central de documentação

Container Compute Service:Use a custom scheduler

Última atualização: Sep 16, 2026

Os clusters do Container Service (ACS) incluem um agendador padrão. Ao enviar um pod para o cluster, o agendador default-scheduler aloca recursos por padrão. Para atender a tipos especiais de recursos e políticas complexas de agendamento, os clusters ACS permitem usar um agendador personalizado. Este tópico descreve como usar um agendador personalizado em um cluster ACS e suas restrições.

Pré-requisitos

  • O componente acs-virtual-node está instalado na versão v2.12.0-acs.8 ou posterior.

  • O componente kube-scheduler está instalado e atende aos seguintes requisitos de versão:

    Versão do cluster ACS

    Versão necessária do kube-scheduler

    1,32 e posteriores

    Todas as versões são compatíveis.

    1,31

    v1.31.0-aliyun-1.1.2 e posteriores.

    1,30

    v1.30.3-aliyun-1.1.2 e posteriores.

    1,28

    v1.28.9-aliyun-1.1.2 e posteriores.

    A opção Enable custom labels and schedulers for GPU-HPN nodes no componente kube-scheduler vem ativada por padrão nas versões recentes. Para mais informações, consulte kube-scheduler.

    Nota

    Ao usar um agendador personalizado, configure spec.schedulerName para o pod. Para mais detalhes, consulte Specify schedulers for pods.

Procedimento

Etapa 1: Implantar um agendador personalizado

Implante um agendador personalizado no cluster. Para mais informações, consulte a documentação do Kubernetes.

Etapa 2: Modifique a configuração do agendador ACS

  1. Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em nome do cluster desejado. No painel de navegação à esquerda, clique em Add-ons.

  3. Na página Add-ons, localize o cartão Kube Scheduler e clique em Configuration.

  4. Na caixa de diálogo, selecione Enable custom labels and schedulers for GPU-HPN nodes e clique em OK.

    Para mais informações, consulte kube-scheduler .
  5. A tabela a seguir compara os efeitos sobre pods e nós quando esta opção está ativada ou desativada.

    Nota

    Este recurso aplica-se apenas a pods e nós GPU-HPN. Não há suporte para agendadores personalizados em outros tipos de computação.

    Agendador padrão (desativado)

    Agendador personalizado (ativado)

    Nome do agendador do pod

    Não há suporte para personalização. Após o envio do pod, o campo spec.schedulerName é sobrescrito com default-scheduler.

    Você pode definir spec.schedulerName do Pod com qualquer valor. Esse valor não será modificado após o envio.

    Processo de agendamento do pod

    O agendador padrão do ACS aloca recursos para todos os pods.

    O agendador padrão do ACS agenda apenas pods cujo spec.schedulerName seja default-scheduler. O agendador personalizado aloca recursos para todos os demais pods.

    Restrições sobre rótulos, anotações e taints para nós GPU-HPN

    As restrições do ACS aplicam-se à adição, modificação e exclusão de rótulos, anotações e taints dos nós. Para mais informações, consulte Gerencie node labels and taints.

    As restrições do ACS deixam de se aplicar à adição, modificação e exclusão de rótulos, anotações e taints dos nós.

    Restrições no agendamento por afinidade de pod

    As restrições do ACS aplicam-se à configuração dos campos de afinidade. Para mais informações, consulte Node Affinity Scheduling.

    As restrições do ACS deixam de se aplicar à configuração dos campos de afinidade.

Etapa 3: Atribuir um agendador personalizado a um pod

  1. Crie um arquivo chamado dep-with-koordinator.yaml com o seguinte conteúdo:

    O arquivo descreve uma aplicação Deployment em que o modelo de Pod especifica um agendador personalizado chamado koord-scheduler .
    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
            # Specify the compute class as gpu-hpn. Custom schedulers are not supported for other compute types.
            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
          # Specify the scheduler name as koord-scheduler. The name must match the one configured in Step 1.
          schedulerName: koord-scheduler
  2. Envie o pod para o cluster ACS.

    kubectl apply -f dep-with-koordinator.yaml
  3. Verifique o schedulerName na configuração do Pod.

    kubectl get pod -lapp=dep-with-koordinator -o custom-columns=NAME:.metadata.name,schedulerName:.spec.schedulerName

    Saída esperada:

    # The pod specifies the custom scheduler named koord-scheduler.
    NAME                               schedulerName
    dep-with-koordinator-xxxxx-xxxxx   koord-scheduler

Perguntas frequentes

Erro de agendamento de PVC: Insufficient attachable-volumes-xxx

Esse problema não ocorre com o agendador padrão do Kubernetes. Alguns agendadores personalizados, ao processarem recursos PersistentVolumeClaim (PVC), exigem que o objeto Node da Container Storage Interface (CSI) exista ou tenha reportado informações de capacidade para o driver CSI correspondente. Se o nó não atender a essas condições, o agendador poderá determinar incorretamente que os recursos são insuficientes.

Para resolver isso, configure o agendador para ignorar drivers CSI específicos. Por exemplo, ao usar o agendador Volcano, adicione o parâmetro de inicialização --ignored-provisioners=${csi-driver-name}:

# You can specify multiple drivers, separated by commas.
--ignored-provisioners=povplugin.csi.alibabacloud.com

Ajuste o parâmetro conforme o driver CSI em uso.

Erros de insuficiência de recursos: resource in cluster is overused ou queue resource quota insufficient

Esse problema não ocorre com o agendador padrão do Kubernetes. Certos agendadores personalizados convertem os valores de capacidade de recursos que não sejam CPU ou memória, como ephemeral-storage, para mili-unidades. Como os nós virtuais reportam uma capacidade muito grande por padrão, essa conversão pode causar estouro de inteiro de 64 bits. Consequentemente, o agendador calcula erroneamente a capacidade restante do nó ou cluster como um valor negativo e aciona um erro de insuficiência de recursos. Abra um ticket para o suporte técnico resolver esse problema.