全部产品
Search
文档中心

Container Compute Service:Gunakan daya komputasi ACS di kluster ACK Pro

更新时间:Mar 01, 2026

Container Compute Service (ACS) menyediakan daya komputasi kontainer arsitektur tanpa server ke kluster ACK Pro melalui node virtual. Pod yang dijadwalkan ke node virtual berjalan di lingkungan ACS yang aman dan terisolasi tanpa perlu mengelola infrastruktur dasar atau merencanakan kapasitas node.

Cara kerja

ACS menggunakan arsitektur berlapis:

  • Lapisan sumber daya komputasi — menjadwalkan dan mengalokasikan sumber daya ke pod.

  • Lapisan kontrol Kubernetes — mengelola beban kerja seperti Deployments, Services, StatefulSets, dan CronJobs.

Node virtual menjembatani daya komputasi ACS ke dalam kluster ACK Anda. Setelah menginstal komponen ACK Virtual Node, pod yang dijadwalkan ke node virtual tersebut menjadi pod ACS. Pod ACS dapat berkomunikasi dengan pod pada node fisik dalam kluster yang sama.

Architecture diagram

Kapan menggunakan node virtual

Node virtual direkomendasikan untuk aplikasi berumur panjang yang beban kerjanya berfluktuasi secara berkala. Manfaatnya meliputi:

  • Pemanfaatan sumber daya yang lebih baik dan pengurangan biaya sumber daya.

  • Percepatan penskalaan tanpa perlu menyediakan kapasitas node terlebih dahulu.

  • Penghematan biaya dengan menghapus pod dari node virtual saat beban kerja menurun.

Batasan

BatasanDeskripsi
Pembatasan StorageClassStorageClass WaitForFirstConsumer tidak didukung saat menggunakan label pod alibabacloud.com/acs: "true". Untuk memasang disk ke pod ACS di kluster ACK, gunakan nodeSelector atau ResourcePolicy sebagai gantinya. Untuk detailnya, lihat Kluster ACK Pro mendukung penjadwalan colocated antara instans ECS dan daya komputasi ACS.
Pembatasan tipe kluster untuk label acs: "true"Berlaku untuk kluster ACK managed, ACK dedicated, kluster terdaftar ACK One, dan kluster ACK Edge. Tidak berlaku untuk kluster ACK Serverless.
Perilaku penjadwalan defaultJika tidak menentukan kelas komputasi, instans kontainer elastis digunakan untuk penjadwalan pod secara default.
Daya komputasi GPU (pratinjau undangan)Untuk mengaktifkan daya komputasi GPU, kirim tiket.
Daya komputasi GPU-HPN (pratinjau undangan)Hanya tersedia di kluster ACK managed, kluster terdaftar ACK One, dan kluster Kubernetes ACK One untuk alur kerja Argo terdistribusi. Versi komponen masih dalam pratinjau undangan dan memerlukan tiket dukungan.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Mengaktifkan Container Service for Kubernetes (ACK), menetapkan peran default untuk ACS, dan mengaktifkan layanan cloud lain yang diperlukan. Untuk detailnya, lihat Buat kluster ACK managed.

  • Mengaktifkan ACS dengan masuk ke Konsol ACS dan mengikuti petunjuk di layar.

  • Memiliki kluster ACK Pro yang menjalankan Kubernetes 1.26 atau versi lebih baru. Untuk detailnya, lihat Buat kluster ACK managed. Untuk meningkatkan kluster yang sudah ada, lihat Tingkatkan kluster ACK secara manual.

  • Menginstal ACK Virtual Node versi v2.13.0 atau lebih baru (diperlukan untuk Kubernetes 1.26+).

Instal ACK Virtual Node

  1. Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Add-ons.

  3. Pada tab Core Components, temukan ACK Virtual Node lalu klik Install. Jika komponen sudah terinstal, klik Update untuk meningkatkan ke versi yang diperlukan.

    Install ACK Virtual Node

  4. Jika diminta untuk mengaktifkan dan memberikan izin kepada ACS, ikuti petunjuk di layar lalu klik OK.

Verifikasi instalasi

Setelah instalasi, verifikasi bahwa node virtual tersedia:

  1. Di panel navigasi sebelah kiri halaman detail kluster, pilih Nodes > Nodes.

  2. Konfirmasi bahwa node dengan awalan virtual-kubelet- muncul dalam daftar node.

    Virtual nodes

Jadwalkan pod CPU ke node virtual

Tersedia tiga metode penjadwalan. Pilih berdasarkan kebutuhan disk dan penjadwalan Anda. Untuk detail tentang penjadwalan afinitas node, lihat Penjadwalan afinitas node.

MetodePaling cocok untukDukungan disk
nodeSelectorKontrol langsung atas node virtual mana yang menjalankan pod AndaLengkap (termasuk StorageClass WaitForFirstConsumer)
Label Pod (alibabacloud.com/acs: "true")Konfigurasi lebih sederhana tanpa toleransi atau selectorTanpa StorageClass WaitForFirstConsumer
ResourcePolicyPenjadwalan berbasis prioritas lintas sumber daya ECS dan ACSLengkap (termasuk StorageClass WaitForFirstConsumer)

Metode 1: nodeSelector

Metode ini menggunakan label type: virtual-kubelet pada node virtual bersama toleransi terhadap taint node virtual.

  1. Kueri label node virtual untuk mengidentifikasi node yang tersedia: Label kunci dalam output:

       kubectl get node virtual-kubelet-cn-hangzhou-k -oyaml
       labels:
         type: virtual-kubelet          # Gunakan ini sebagai nodeSelector Anda
         kubernetes.io/hostname: virtual-kubelet-cn-hangzhou-k
         topology.kubernetes.io/zone: cn-hangzhou-k
       taints:
       - effect: NoSchedule
         key: virtual-kubelet.io/provider
         value: alibabacloud               # Toleransi terhadap taint ini
  2. Buat 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/compute-class: general-purpose  # Kelas komputasi. Default: general-purpose.
               alibabacloud.com/compute-qos: default             # Kelas QoS. Default: default.
           spec:
             nodeSelector:
               type: virtual-kubelet                             # Targetkan node virtual.
             tolerations:
             - key: "virtual-kubelet.io/provider"                # Toleransi terhadap taint node virtual.
               operator: "Exists"
               effect: "NoSchedule"
             containers:
             - name: nginx
               image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
               resources:
                 limits:
                   cpu: 2
                 requests:
                   cpu: 2
  3. Terapkan dan verifikasi: Output yang diharapkan: Kedua pod dijadwalkan ke node virtual-kubelet-*.

       kubectl apply -f nginx.yaml
       kubectl get pods -o wide
       NAME                    READY   STATUS    RESTARTS   AGE   IP            NODE                            NOMINATED NODE   READINESS GATES
       nginx-9cdf7bbf9-s****   1/1     Running   0          36s   10.0.6.68    virtual-kubelet-cn-hangzhou-j   <none>           <none>
       nginx-9cdf7bbf9-v****   1/1     Running   0          36s   10.0.6.67    virtual-kubelet-cn-hangzhou-k   <none>           <none>

Metode 2: Label Pod

Tambahkan label alibabacloud.com/acs: "true" untuk menjadwalkan pod ke node virtual tanpa mengonfigurasi nodeSelector atau toleransi.

Catatan

Label ini tidak berlaku untuk kluster ACK Serverless. Berlaku untuk kluster ACK managed, ACK dedicated, kluster terdaftar ACK One, dan kluster ACK Edge.

Buat 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"                       # Jadwalkan ke node virtual ACS.
        alibabacloud.com/compute-class: general-purpose
        alibabacloud.com/compute-qos: default
    spec:
      containers:
      - name: nginx
        image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
        resources:
          limits:
            cpu: 2
          requests:
            cpu: 2

Terapkan dan verifikasi dengan cara yang sama seperti Metode 1.

Verifikasi bahwa pod adalah pod ACS

Setelah penerapan, konfirmasi bahwa pod Anda berjalan sebagai pod ACS:

kubectl describe pod nginx-9cdf7bbf9-s****

Cari anotasi alibabacloud.com/instance-id dalam output:

Annotations:
  alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx
  alibabacloud.com/pod-use-spec: 2-4Gi

ID instans acs-* mengonfirmasi bahwa pod berjalan di atas daya komputasi ACS.

Jadwalkan pod GPU ke node virtual

Daya komputasi GPU ACS mengikuti metode penjadwalan yang sama seperti pod CPU, dengan persyaratan komponen dan label tambahan.

Penting

Daya komputasi GPU ACS sedang dalam pratinjau undangan. Untuk mengaktifkannya, kirim tiket.

Persyaratan komponen

Instal versi kube-scheduler yang sesuai berdasarkan versi Kubernetes kluster Anda:

Versi KubernetesVersi kube-scheduler minimum
1.31v1.31.0-aliyun.6.8.4.8f585f26
1.30v1.30.3-aliyun.6.8.4.946f90e8
1.28v1.28.12-aliyun-6.8.4.b27c0009
1.26v1.26.3-aliyun-6.8.4.4b180111

Untuk detail tentang komponen kube-scheduler, lihat kube-scheduler.

Label pod GPU

Semua metode penjadwalan GPU memerlukan label berikut pada pod:

labels:
  alibabacloud.com/compute-class: gpu                   # Tetapkan kelas komputasi ke gpu.
  alibabacloud.com/compute-qos: default                 # Kelas QoS.
  alibabacloud.com/gpu-model-series: <gpu-model>        # Model GPU, seperti T4 atau GN8IS.

Contoh: Pod GPU dengan nodeSelector

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-demo
  labels:
    app: gpu-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-demo
  template:
    metadata:
      labels:
        app: gpu-demo
        alibabacloud.com/compute-class: gpu
        alibabacloud.com/compute-qos: default
        alibabacloud.com/gpu-model-series: <gpu-model>   # Ganti dengan model GPU Anda, seperti T4.
    spec:
      nodeSelector:
        type: virtual-kubelet
      tolerations:
      - key: "virtual-kubelet.io/provider"
        operator: "Exists"
        effect: "NoSchedule"
      containers:
      - name: gpu-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"

Contoh: Pod GPU dengan ResourcePolicy

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: gpu-rp-demo
  namespace: default
spec:
  selector:
    app: gpu-rp-demo
  units:
  - resource: acs
    podLabels:
      alibabacloud.com/compute-class: gpu
      alibabacloud.com/compute-qos: default
      alibabacloud.com/gpu-model-series: <gpu-model>     # Ganti dengan model GPU Anda, seperti T4.
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-rp-demo
  labels:
    app: gpu-rp-demo
  annotations:
    resourcePolicy: "gpu-rp-demo"                        # Referensikan ResourcePolicy.
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-rp-demo
  template:
    metadata:
      labels:
        app: gpu-rp-demo
    spec:
      containers:
      - name: 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"

Untuk detail tentang penjadwalan ResourcePolicy, lihat Penjadwalan sumber daya berdasarkan prioritas kustom.

Contoh: Pod GPU dengan label pod

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-demo
  labels:
    app: gpu-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-demo
  template:
    metadata:
      labels:
        app: gpu-demo
        alibabacloud.com/acs: "true"                     # Jadwalkan ke node virtual ACS.
        alibabacloud.com/compute-class: gpu
        alibabacloud.com/compute-qos: default
        alibabacloud.com/gpu-model-series: <gpu-model>   # Ganti dengan model GPU Anda, seperti T4.
    spec:
      containers:
      - name: gpu-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"

Verifikasi status pod GPU

kubectl get pod gpu-demo-9cdf7bbf9-s**** -oyaml

Konfirmasi bahwa pod sedang berjalan dan sumber daya GPU telah dialokasikan:

phase: Running

    resources:
      limits:
        nvidia.com/gpu: "1"
      requests:
        nvidia.com/gpu: "1"

Jadwalkan pod GPU-HPN ke node virtual

Pod ACS GPU-HPN (High-Performance Networking) memerlukan reservasi kapasitas dan menggunakan node reservasi untuk penjadwalan.

Prasyarat untuk GPU-HPN

Sebelum memulai, pastikan Anda telah:

  • Memiliki kluster ACK managed, kluster terdaftar ACK One, atau kluster Kubernetes ACK One untuk alur kerja Argo terdistribusi.

  • Membeli reservasi kapasitas GPU-HPN dan mengaitkannya dengan kluster Anda.

  • Memperbarui komponen kube-scheduler dan ACK Virtual Node ke versi yang kompatibel dengan GPU-HPN (pratinjau undangan; kirim tiket untuk mendapatkan versi yang diperlukan).

Label pod GPU-HPN

labels:
  alibabacloud.com/compute-class: gpu-hpn                # Tetapkan kelas komputasi ke gpu-hpn.
  alibabacloud.com/compute-qos: default                  # Kelas QoS.

Contoh: Pod GPU-HPN dengan nodeSelector

Penting

Saat mengonfigurasi pod ACS GPU-HPN:

  • Tetapkan alibabacloud.com/compute-class ke gpu-hpn.

  • Tetapkan nodeSelector alibabacloud.com/node-type ke reserved.

  • Konfigurasikan requests dan limits berdasarkan model GPU Anda.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-hpn-demo
  labels:
    app: gpu-hpn-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-hpn-demo
  template:
    metadata:
      labels:
        app: gpu-hpn-demo
        alibabacloud.com/compute-class: gpu-hpn
        alibabacloud.com/compute-qos: default
    spec:
      nodeSelector:
        alibabacloud.com/node-type: reserved             # Targetkan node reservasi GPU-HPN.
      containers:
      - name: gpu-hpn-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"                          # Sesuaikan berdasarkan model GPU Anda.
          requests:
            cpu: 1
            memory: 1Gi
            nvidia.com/gpu: "1"                          # Sesuaikan berdasarkan model GPU Anda.

Verifikasi status pod GPU-HPN

kubectl get pod gpu-hpn-demo-9cdf7bbf9-s**** -oyaml

Konfirmasi bahwa pod sedang berjalan dan sumber daya GPU telah dialokasikan:

phase: Running

    resources:
      limits:
        nvidia.com/gpu: "1"
      requests:
        nvidia.com/gpu: "1"

Referensi