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