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中的副本。
下方的樣本操作適用於混合雲多叢集情境。

適用範圍
已為子叢集開啟啟用節點即時彈性(ACK叢集版本需>=1.24)。
若子叢集已經開啟了節點自動調整,請根據步驟一:開啟節點即時彈性功能切換為節點即時彈性。
已安裝AMC命令列協助工具。
步驟一:在艦隊中部署Demo服務
下方樣本中使用的模型是qwen3-0.6b,從modelscope下載,並通過vllm使用該模型,測試時可以使用T4、A10來運行下列Deployment。
在艦隊中建立test namespace,並確保所有子叢集也有該namespace。
kubectl create ns test建立並儲存名為
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步驟三:驗證彈性擴縮容
執行
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在艦隊擴容推理服務的副本數量:
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縮容時,將會根據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