All Products
Search
Document Center

Container Compute Service:Gunakan topology spread constraints untuk mendistribusikan Pod di berbagai zona

Last Updated:Sep 17, 2026

Ketersediaan tinggi merupakan persyaratan kritis bagi aplikasi terdistribusi. Di kluster Alibaba Cloud Container Compute Service (ACS), Anda dapat memanfaatkan semantik penjadwalan native Kubernetes untuk menyebarkan beban kerja di berbagai zona guna mencapai ketersediaan tinggi. Distribusi lintas zona ini dapat diaktifkan dengan menentukan label topologi pada bidang topologyKey dalam sebuah topology spread constraint. Topik ini menjelaskan kondisi dan penggunaan topology spread constraints di ACS.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • kube-scheduler terinstal pada versi yang memenuhi persyaratan berikut:

    Versi kluster ACSVersi penjadwal minimum
    1.31v1.31.0-aliyun-1.2.0
    1.30v1.30.3-aliyun-1.1.1
    1.28v1.28.9-aliyun-1.1.0
  • acs-virtual-node terinstal pada v2.12.0-acs.4 atau yang lebih baru

Catatan penggunaan

Catatan

Pengaturan Enable custom labels and scheduler for GPU-HPN nodes dalam konfigurasi komponen penjadwal ACS secara default diaktifkan pada versi-versi terbaru. Untuk informasi selengkapnya, lihat kube-scheduler.

Saat menggunakan topology spread constraints di kluster ACS, beberapa bidang memiliki batasan untuk Pod yang memenuhi semua kondisi berikut:

  • Jenis komputasi Pod adalah GPU-HPN.

  • schedulerName Pod diatur ke default-scheduler.

  • Opsi Enable Custom Tags And Scheduler For GPU-HPN Nodes tidak dipilih dalam konfigurasi komponen penjadwal.

Parameter

Deskripsi

Batasan

labelSelector

Menemukan Pod yang sesuai, yang dihitung untuk menentukan jumlah Pod di domain topologi terkait.

Pod jenis komputasi lainnya, seperti general-purpose, performance-enhanced, dan gpu-accelerated, tidak termasuk dalam perhitungan.

matchLabelKeys

Daftar kunci label Pod yang, bersama dengan labelSelector, mendefinisikan kelompok Pod untuk menghitung distribusi.

nodeAffinityPolicy

Menentukan cara nodeAffinity/nodeSelector Pod diperlakukan saat menghitung ketimpangan penyebaran topologi.

Tidak didukung.

nodeTaintsPolicy

Menentukan cara taint node diperlakukan saat menghitung ketimpangan penyebaran topologi.

Tidak didukung.

Batasan topology spread tersebut tidak berlaku untuk instans general-purpose, performance-enhanced, dan gpu-accelerated. Untuk informasi lebih lanjut mengenai setiap bidang, lihat Pod Topology Spread Constraints.

Prosedur

  1. Jalankan perintah berikut untuk melihat node 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 bernama dep-spread-demo.yaml dan tambahkan konten berikut ke dalam file tersebut:

    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"
          # Menentukan batasan penyebaran zona. maxSkew=1 berarti jumlah Pod boleh berbeda paling banyak satu di antara zona.
          topologySpreadConstraints:
          - maxSkew: 1
            topologyKey: topology.kubernetes.io/zone
            whenUnsatisfiable: DoNotSchedule
            labelSelector:
              matchLabels:
                app: spread-demo
  3. Jalankan perintah berikut untuk menyebarluaskan dep-spread-demo ke kluster:

    kubectl apply -f dep-spread-demo.yaml
  4. Jalankan perintah berikut untuk melihat hasil distribusi 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 bahwa empat Pod didistribusikan di dua zona.