全部產品
Search
文件中心

Container Service for Kubernetes:基於叢集層級的多叢集優先順序彈性調度

更新時間:Nov 22, 2025

ACK One艦隊支援AI推理服務。在跨地區多ACK叢集和混合雲多叢集情境下,可定義叢集優先順序,實現優先使用IDC叢集或主區資源,同時以阿里雲上資源或者備用區資源作為算力補充,結合庫存感知的調度,保障商務持續性。

工作原理

ACK One艦隊的多叢集優先順序彈性調度適用於下列情境。

  • 跨地區多ACK叢集情境:將地區A作為AI推理服務主區,地區B作為備用區,處於地區A叢集的優先順序更高。當GPU資源無法滿足業務需求,需要進行業務擴容時,ACK One艦隊會按照叢集優先順序,優先調度推理服務到地區A,資源不足時則調度到地區B。縮容時,優先縮容優先順序更低的地區B推理服務副本,之後再縮容地區A中的副本。

  • 混合雲多叢集情境:通過艦隊同時管理本地IDC和雲上ACK資源,將雲上資源作為本地IDC的資源補充。在業務擴容時,ACK One艦隊優先調度推理服務到IDC叢集,IDC資源不足時調度到ACK叢集使用雲上算力。縮容時,優先縮容雲上的推理服務副本,之後再縮容IDC中的副本。

下方的樣本操作適用於混合雲多叢集情境。

image

適用範圍

步驟一:在艦隊中部署Demo服務

下方樣本中使用的模型是qwen3-0.6b,從modelscope下載,並通過vllm使用該模型,測試時可以使用T4、A10來運行下列Deployment。
  1. 在艦隊中建立test namespace,並確保所有子叢集也有該namespace。

    kubectl create ns test
  2. 建立並儲存名為demo.yaml的檔案,在艦隊中執行kubectl apply -f demo.yaml部署Demo服務(Deployment和Service)。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: qwen3
      namespace: test
    spec:
      progressDeadlineSeconds: 600
      replicas: 2
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: qwen3
      template:
        metadata:
          labels:
            app: qwen3
        spec:
          containers:
          # 使用qwen3-0.6b模型,模型從modelscope下載
          - command:
            - sh
            - -c
            - export VLLM_USE_MODELSCOPE=True; vllm serve Qwen/Qwen3-0.6B --served-model-name
              qwen3-0.6b --port 8000 --trust-remote-code --tensor_parallel_size=1 --max-model-len
              2048 --gpu-memory-utilization 0.8
            image: kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm-openai:v0.9.1
            imagePullPolicy: IfNotPresent
            name: vllm
            ports:
            - containerPort: 8000
              name: restful
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              initialDelaySeconds: 30
              periodSeconds: 10
              successThreshold: 1
              tcpSocket:
                port: 8000
              timeoutSeconds: 1
            resources:
              limits:
                nvidia.com/gpu: "1"
              requests:
                nvidia.com/gpu: "1"
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: qwen3
      namespace: test
      labels:
        app: qwen3
    spec:
      ports:
      - port: 8000
      selector:
        app: qwen3

步驟二:在艦隊部署分發策略,實現混合雲多叢集彈性調度

在如下PropagationPolicy中,開啟庫存感知調度,並配置叢集間優先順序,優先調度到IDC,IDC資源不足時,再調度到雲上進行節點彈性。

替換下方樣本中的${註冊叢集ID}${ACK Cluster ID}為實際叢集ID,建立並儲存名為demo-pp.yaml的檔案,然後在艦隊中執行kubectl apply -f demo-pp.yaml部署PropagationPolicy。

下方樣本中的spec.resourceSelectors中填入了步驟一:在艦隊中部署Demo服務中建立的樣本資源,在生產環境中請使用實際資源資訊。
apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: PropagationPolicy
metadata:
  name: vllm-deploy-pp
  namespace: test
spec:
  autoScaling:
    ecsProvision: true
  placement:
    clusterAffinities:
      - affinityName: idc
        clusterNames:
          - ${註冊叢集ID}
      - affinityName: ack
        clusterNames:
          - ${ACK Cluster ID}
    replicaScheduling:
      replicaSchedulingType: Divided
      replicaDivisionPreference: Weighted
      weightPreference:
        dynamicWeight: AvailableReplicas
  preserveResourcesOnDeletion: false
  resourceSelectors:
  - apiVersion: apps/v1
    kind: Deployment
    namespace: test
  schedulerName: default-scheduler
---
apiVersion: policy.one.alibabacloud.com/v1alpha1 
kind: PropagationPolicy
metadata:
  name: demo-svc
  namespace: test
spec:
  preserveResourcesOnDeletion: false
  resourceSelectors:
  - apiVersion: v1
    kind: Service
    name: qwen3
  placement:
    replicaScheduling:
      replicaSchedulingType: Duplicated

步驟三:驗證彈性擴縮容

  1. 執行kubectl amc get pod -ntest -M,查看部署情況。

    初始情況下,IDC叢集資源充足時,Pod優先部署在IDC叢集中:

    NAME                     CLUSTER        CLUSTER_ALIAS      READY   STATUS    RESTARTS      AGE
    qwen3-5665b88779-7k***   c6b4********   cluster-idc-demo   1/1     Running   0             18m
    qwen3-5665b88779-ds***   c6b4********   cluster-idc-demo   1/1     Running   0             18m
  2. 在艦隊擴容推理服務的副本數量:

    kubectl scale deploy qwen3 -ntest --replicas=4

    等待擴容完成後,執行kubectl amc get pod -ntest -M查看Pod部署情況。

    建立Pod會調度到ACK叢集中,並且有2個Pending Pod,說明ACK叢集資源不足:

    NAME                     CLUSTER         CLUSTER_ALIAS      READY   STATUS    RESTARTS   AGE     IP              NODE       NOMINATED NODE   READINESS GATES   ADOPTION
    qwen3-5665b88779-7k***   c043********    cluster-bj-demo    0/1     Pending   0          33s     <none>          <none>     <none>           <none>            N
    qwen3-5665b88779-ds***   c043********    cluster-bj-demo    0/1     Pending   0          33s     <none>          <none>     <none>           <none>            N
    qwen3-5665b88779-7k***   c6b4********    cluster-idc-demo   1/1     Running   0          18m     172.20.245.125  x.x.x.x    <none>           <none>            N
    qwen3-5665b88779-ds***   c6b4********    cluster-idc-demo   1/1     Running   0          18m     172.19.8.159    x.x.x.x    <none>           <none>            N

    通過kubectl amc get node -M查看節點情況,可以發現已經彈性擴容出來2個新的Node,正在加入ACK叢集:

    縮容推理服務後,彈性擴容的節點在十分鐘後會自動縮容。
    NAME                       CLUSTER        CLUSTER_ALIAS      STATUS     ROLES    AGE     VERSION            ADOPTION
    cn-beijing.172.19.8.***    c043********   cluster-bj-demo    NotReady   <none>   20s                        N
    cn-beijing.172.20.245.**   c043********   cluster-bj-demo    Ready      <none>   18h     v1.34.1-aliyun.1   N
    cn-beijing.172.21.3.***    c043********   cluster-bj-demo    NotReady   <none>   20s                        N
    cn-beijing.172.21.3.**     c043********   cluster-bj-demo    Ready      <none>   18h     v1.34.1-aliyun.1   N
    cn-beijing.172.20.245.**   c6b4********   cluster-idc-demo   Ready      <none>   3h14m   v1.34.1-aliyun.1   N
    cn-beijing.172.21.3.**     c6b4********   cluster-idc-demo   Ready      <none>   3h16m   v1.34.1-aliyun.1   N
    cn-beijing.172.21.3.**     c6b4********   cluster-idc-demo   Ready      <none>   3h13m   v1.34.1-aliyun.1   N
  3. 縮容時,將會根據PropagationPolicy定義的叢集優先順序,按優先順序從低到高進行縮容。

    在艦隊縮容推理服務的副本數量:

    kubectl scale deploy qwen3 -ntest --replicas=2

    執行kubectl amc get pod -ntest -M查看Pod部署情況,可以觀察到ACK叢集上的2個副本被縮容了:

    NAME                     CLUSTER        CLUSTER_ALIAS      READY   STATUS    RESTARTS      AGE
    qwen3-5665b88779-7k***   c6b4********   cluster-idc-demo   1/1     Running   0             18m
    qwen3-5665b88779-ds***   c6b4********   cluster-idc-demo   1/1     Running   0             18m