All Products
Search
Document Center

Container Compute Service:Penyebaran Topologi Zona

Last Updated:Mar 01, 2026

Ketersediaan tinggi merupakan persyaratan utama untuk eksekusi tugas terdistribusi. Di kluster ACS, gunakan semantik penjadwalan native Kubernetes untuk mendistribusikan beban kerja (workloads) ke berbagai zona dan mencapai penerapan dengan ketersediaan tinggi. Untuk mengaktifkan distribusi tingkat zona bagi beban kerja, tentukan label topologi zona di bidang topologyKey dalam konfigurasi topology spread constraints. Topik ini menjelaskan kendala dan penggunaan topology spread constraints di ACS.

Prasyarat

  • kube-scheduler telah diinstal dan versinya memenuhi persyaratan berikut.

    Versi kluster ACS

    Versi komponen penjadwal

    1.31

    v1.31.0-aliyun-1.2.0 dan yang lebih baru

    1.30

    v1.30.3-aliyun-1.1.1 dan yang lebih baru

    1.28

    v1.28.9-aliyun-1.1.0 dan yang lebih baru

  • acs-virtual-node telah diinstal dan versinya v2.12.0-acs.4 atau yang lebih baru.

Catatan

Catatan

Konfigurasi Enable Custom Tags and the Scheduler for GPU-HPN Nodes untuk komponen penjadwal ACS diaktifkan secara default pada versi-versi baru. Untuk informasi selengkapnya, lihat kube-scheduler.

Fitur topology spread constraints di kluster ACS menerapkan kendala khusus hanya pada Pod yang memenuhi semua kondisi berikut:

  • Pod menggunakan tipe komputasi High-Performance Network GPU (GPU-HPN).

  • schedulerName Pod adalah default-scheduler.

  • Dalam konfigurasi komponen penjadwal, opsi Enable Custom Tags And Scheduler For GPU-HPN Nodes tidak dipilih.

Bidang Protokol

Makna

Kendala

labelSelector

Digunakan untuk menemukan Pod yang cocok. Pod yang sesuai dengan label ini dihitung untuk menentukan jumlah Pod di domain topologi terkait.

Pod dari tipe komputasi lain (tujuan umum, komputasi-teroptimalkan, GPU) tidak termasuk dalam perhitungan jumlah yang cocok.

matchLabelKeys

Daftar kunci tag yang digunakan bersama labelSelector untuk memilih kumpulan Pod yang akan dihitung distribusinya.

nodeAffinityPolicy

Menunjukkan cara menangani nodeAffinity/nodeSelector Pod saat menghitung deviasi distribusi topologi Pod.

Tidak didukung.

nodeTaintsPolicy

Menunjukkan cara menangani taint node saat menghitung deviasi distribusi topologi Pod.

Tidak didukung.

Untuk instans tujuan umum, komputasi-teroptimalkan, dan GPU, kebijakan penyebaran topologi zona tidak tunduk pada kendala-kendala tersebut. Untuk deskripsi rinci setiap bidang, lihat Topology Spread Constraints.

Prosedur

  1. Jalankan perintah berikut untuk melihat node virtual di kluster.

    kubectl get node

    Output yang diharapkan:

    NAME                            STATUS   ROLES   AGE     VERSION
    virtual-kubelet-cn-hangzhou-i   Ready    agent   5h42m   v1.28.3-xx
    virtual-kubelet-cn-hangzhou-j   Ready    agent   5h42m   v1.28.3-xx
  2. Buat file `dep-spread-demo.yaml` dengan konten YAML berikut.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-spread-demo
      labels:
        app: spread-demo
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: spread-demo
      template:
        metadata:
          labels:
            app: spread-demo
        spec:
          containers:
          - name: spread-demo
            image: registry-cn-beijing.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "infinity"
          # Tentukan kondisi penyebaran zona. maxSkew memastikan bahwa jumlah Pod antar zona tidak berbeda lebih dari satu.
          topologySpreadConstraints:
          - maxSkew: 1
            topologyKey: topology.kubernetes.io/zone
            whenUnsatisfiable: DoNotSchedule
            labelSelector:
              matchLabels:
                app: spread-demo
  3. Jalankan perintah berikut untuk menerapkan `dep-spread-demo` ke kluster.

    kubectl apply -f dep-spread-demo.yaml
  4. Jalankan perintah berikut untuk melihat distribusi penjadwalan Pod.

    kubectl get pod -o wide

    Output yang diharapkan:

    NAME                               READY   STATUS    RESTARTS   AGE     IP               NODE                            NOMINATED NODE   READINESS GATES
    dep-spread-demo-7c656dbf5f-6twkc   1/1     Running   0          2m29s   192.168.xx.xxx   virtual-kubelet-cn-hangzhou-i   <none>           <none>
    dep-spread-demo-7c656dbf5f-cgxr8   1/1     Running   0          2m29s   192.168.xx.xxx   virtual-kubelet-cn-hangzhou-j   <none>           <none>
    dep-spread-demo-7c656dbf5f-f4fz9   1/1     Running   0          2m29s   192.168.xx.xxx   virtual-kubelet-cn-hangzhou-j   <none>           <none>
    dep-spread-demo-7c656dbf5f-kc6xf   1/1     Running   0          2m29s   192.168.xx.xxx   virtual-kubelet-cn-hangzhou-i   <none>           <none>

    Output tersebut menunjukkan empat Pod tersebar di dua zona.