全部產品
Search
文件中心

Container Compute Service:通過虛擬節點將Pod調度到ACS上運行

更新時間:Apr 09, 2026

Container Compute Service (ACS)已整合至ACK One註冊叢集,您可以通過ACK One註冊叢集快速使用ACS提供的容器算力。本文介紹ACK One註冊叢集如何接入ACS算力。

ACK One註冊叢集對接方式

Container Compute Service (ACS)是以Kubernetes為使用者介面的Container Service產品,提供符合容器規範的算力資源。ACS的Kubernetes管控和容器算力分層設計,為Kubernetes提供一種層次化的解決方案:ACS的計算資源層負責底層Pod容器資源的調度和分配,而Kubernetes則在此基礎上負載業務負載管理,例如管理Deployment、Service、StatefulSet、CronJob等。

ACS容器算力可以通過虛擬節點(Virtual Node)的形式接入到Kubernetes叢集中,使得叢集可以輕鬆獲得極大的彈效能力,而不必受限於叢集的節點計算容量。ACS在接管Pod容器底層基礎設施的管理工作後,Kubernetes不再需要直接負責單個Pod的放置、啟動等工作,也不再需要關心底層虛擬機器的資源情況,通過ACS即可確保Pod需要的資源隨時可用。

ACK One註冊叢集中,需要先通過組件中心安裝ack-virtual-node組件,以便部署虛擬節點並建立ACS Pod。當叢集需要擴容時,可以直接在虛擬節點下按需建立ACS Pod,無需規劃節點的計算容量,且ACS Pod與叢集中真實節點上的Pod之間網路互連。為了更有效地利用資源、縮短擴容時間並降低成本,建議將部分長時間運行且流量彈性變化的業務負載調度至虛擬節點。隨著業務流量的減少,可以迅速釋放虛擬節點上的Pod,以減少使用成本。虛擬節點上的Pod均基於ACS運行在安全隔離的容器運行環境中,每個Pod對應一個ACS執行個體。更多資訊,請參見註冊叢集概述

前提條件

ACK One註冊叢集使用ACS CPU算力樣本

ACK Virtual Node組件安裝或升級到2.13.0及以上版本後,將同時支援ACS和ECI兩種算力。

說明

在Pod調度到虛擬節點的情境中,如果沒有指定為ACS的算力類型,則預設會優先使用ECI彈性執行個體。

ACK使用ACS CPU算力可以通過以下步驟實現:

  1. 使用以下內容,建立nginx.yaml。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx 
            alibabacloud.com/acs: "true" # 配置使用ACS算力
            alibabacloud.com/compute-class: general-purpose # 配置ACS Pod的算力類型,未配置預設general-purpose
            alibabacloud.com/compute-qos: default # 配置ACS Pod的算力品質,未配置預設default
        spec:
          containers:
          - name: nginx
            image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine
            ports:
              - containerPort: 80
                protocol: TCP 
            resources:
              limits:
                cpu: 2
              requests:
                cpu: 2
  2. 執行以下命令,建立Nginx應用。

    kubectl apply -f nginx.yaml 
  3. 執行以下命令,查看部署結果。

    kubectl get pods -o wide

    預期輸出:

    NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE                            NOMINATED NODE   READINESS GATES
    nginx-54bcbc9b66-****   1/1     Running   0          3m29s   192.168.XX.XXX   virtual-kubelet-cn-shanghai-l   <none>           <none>
    nginx-54bcbc9b66-****   1/1     Running   0          3m29s   192.168.XX.XXX   virtual-kubelet-cn-shanghai-l   <none>           <none>

    可以看到,這兩個Pod通過nodeSelector被調度到labeltype=virtual-kubelet的節點上。

  4. 執行以下命令,查看Nginx Pod詳情。

    kubectl describe pod nginx-54bcbc9b66-**** 

    預期輸出:

    Annotations:  ProviderCreate: done
                  alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****
                  alibabacloud.com/pod-ephemeral-storage: 30Gi
                  alibabacloud.com/pod-use-spec: 2-2Gi
                  kubernetes.io/pod-stream-port: 10250
                  network.alibabacloud.com/enable-dns-cache: false
                  topology.kubernetes.io/region: cn-shanghai

    輸出的Pod內容中存在註解alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****則可確認該Pod為ACS Pod執行個體。

ACK One註冊叢集使用ACS GPU算力樣本

與ACS CPU算力的主要鏈路和使用流程相同,但使用ACS GPU算力還需要確保調度相關的組件版本符合預期,並進行一些額外的配置。

開通方式

目前在ACK One註冊叢集使用ACS GPU算力處於邀測階段,請提交工單申請。

使用方法

...     
     labels:
        # label中聲明acs GPU資源需求
        alibabacloud.com/compute-class: gpu     #如為GPU類型,固定gpu即可
        alibabacloud.com/compute-qos: default   #計算qos類型,含義與普通acs算力相同
        alibabacloud.com/gpu-model-series: GN8IS  # GPU卡型,請按照實際情況替換
...
說明
  1. 使用以下樣本內容,建立GPU負載。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-node-selector-demo
      labels:
        app: node-selector-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: node-selector-demo
      template:
        metadata:
          labels:
            app: node-selector-demo
            # acs屬性
            alibabacloud.com/acs: "true" # 配置使用ACS算力
            alibabacloud.com/compute-class: gpu
            alibabacloud.com/compute-qos: default
            alibabacloud.com/gpu-model-series: example-model  # GPU卡型,請按照實際情況替換,例如T4
        spec:
          containers:
          - name: node-selector-demo
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "1000h"
            resources:
              limits:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"
  2. 執行以下命令,查看GPU負載運行狀態。

    kubectl get pod node-selector-demo-9cdf7bbf9-s**** -oyaml

    預期輸出:

        phase: Running
    
        resources:
          limits:
            #other resources
            nvidia.com/gpu: "1"
          requests:
            #other resources
            nvidia.com/gpu: "1"