All Products
Search
Document Center

Container Service for Kubernetes:Menjadwalkan aplikasi ke kelompok node hibrida

Last Updated:Mar 27, 2026

Kelompok node cloud hibrida memungkinkan Anda mendaftarkan node dari pusat data (IDC) ke kluster ACK, sehingga mendukung manajemen terpadu dan penjadwalan terkoordinasi antara sumber daya on-premises dan cloud. Topik ini menjelaskan cara menjadwalkan aplikasi ke kelompok node cloud hibrida guna memenuhi persyaratan lokasi sumber daya, kepatuhan terhadap lokalisasi data, atau kebutuhan perangkat keras tertentu.

Cara kerja

Saat Anda membuat kelompok node cloud hibrida, ACK secara otomatis menambahkan sebuah taint dan label ke setiap node dalam kelompok tersebut:

  • Taint: nodepool-type=hybridcloud:NoSchedule — mencegah komponen sistem dan workload umum ditempatkan di node cloud hibrida secara default.

  • Label: alibabacloud.com/nodepool-type: hybridcloud — menandai jenis node sehingga kebijakan penjadwalan dapat menargetkannya.

Toleransi menghapus batasan penjadwalan, sehingga sebuah Pod memenuhi syarat untuk ditempatkan di node cloud hibrida. Namun, hal ini tidak menjamin penempatan di sana. Untuk memastikan penempatan, kombinasikan toleransi tersebut dengan aturan nodeSelector atau nodeAffinity.

Pilih pendekatan

PendekatanGunakan saatKonfigurasi utama
Allow (Solusi 1)Memperluas kapasitas total; tidak ada batasan lokasi yang ketat. Pod masih dapat ditempatkan di kelompok node lainnya.tolerations saja
Targetkan kelompok node tertentu (Solusi 2a)Perangkat keras khusus, topologi jaringan, atau residensi data untuk satu kelompok node.tolerations + nodeSelector (ID kelompok node)
Menargetkan kelompok node cloud hibrida apa pun (Solution 2b)Workload yang harus berjalan di lingkungan on-premises tetapi tersebar di semua kelompok node IDC.tolerations + nodeAffinity
Berdasarkan prioritas lintas kelompok node (Solusi 3)Lebih memilih kelompok node cloud hibrida berbiaya lebih rendah untuk skala keluar; melepas node ECS cloud terlebih dahulu saat skala-masuk.ResourcePolicy + tolerations

Solusi 1: Izinkan penjadwalan ke node cloud hibrida

Kapan digunakan: Kluster Anda memerlukan kapasitas total yang lebih besar dan workload Anda tidak memiliki batasan penempatan yang ketat. Dengan konfigurasi ini, penjadwal memperlakukan kelompok node cloud hibrida sebagai kandidat yang valid—namun Pod tetap dapat berjalan di kelompok node aktif lainnya.

Konfigurasi inti: Tambahkan entri tolerations di spec.template.spec:

spec:
  template:
    spec:
      # Izinkan pod ini berjalan di node cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"

Expand to view

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-allowed-on-hybrid
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # Izinkan pod ini berjalan di node cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Solusi 2: Paksa penjadwalan ke node cloud hibrida

Kedua sub-solusi berikut sama-sama menjamin bahwa Pod ditempatkan di node cloud hibrida. Pilih berdasarkan seberapa spesifik Anda perlu menargetkan kelompok node tertentu.

Targetkan kelompok node tertentu

Kapan digunakan: Workload Anda memerlukan kelompok node cloud hibrida tertentu—misalnya, yang memiliki perangkat keras khusus, topologi jaringan khusus, atau persyaratan residensi data yang ketat. Gunakan nodeSelector untuk mengunci Pod ke satu kelompok node berdasarkan ID-nya.

Konfigurasi inti: Tambahkan tolerations dan nodeSelector di spec.template.spec:

spec:
  template:
    spec:
      # Konfigurasi inti 1: Hapus batasan penjadwalan cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Konfigurasi inti 2: Kunci ke kelompok node tertentu berdasarkan ID.
      nodeSelector:
        alibabacloud.com/nodepool-id: npxxxxxxxxxxxx
Dapatkan ID kelompok node dari halaman Node Management > Node Pools kluster Anda.

Expand to view

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-to-nodepool
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # Konfigurasi inti 1: Hapus batasan penjadwalan cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Konfigurasi inti 2: Kunci ke kelompok node tertentu berdasarkan ID.
      nodeSelector:
        alibabacloud.com/nodepool-id: npxxxxxxxxxxxx
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Targetkan semua kelompok node cloud hibrida

Kapan digunakan: Workload Anda harus berjalan di lingkungan on-premises tetapi dapat berjalan di semua kelompok node cloud hibrida. nodeAffinity mencocokkan semua node dengan label hybridcloud, sehingga Pod tersebar di semua kelompok node IDC alih-alih dikunci ke satu kelompok saja.

Konfigurasi inti: Tambahkan tolerations dan affinity di spec.template.spec:

spec:
  template:
    spec:
      # Konfigurasi inti 1: Hapus batasan penjadwalan cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Konfigurasi inti 2: Wajibkan penggunaan node cloud hibrida berdasarkan label.
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: alibabacloud.com/nodepool-type
                    operator: In
                    values:
                      - hybridcloud

Expand to view

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-to-hybrid-type
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # Konfigurasi inti 1: Hapus batasan penjadwalan cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Konfigurasi inti 2: Wajibkan penggunaan node cloud hibrida berdasarkan label.
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: alibabacloud.com/nodepool-type
                    operator: In
                    values:
                      - hybridcloud
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Solusi 3: Penjadwalan berbasis prioritas dengan ResourcePolicy

Kapan digunakan: Anda memiliki beberapa kelompok node dan ingin melakukan skala keluar secara berurutan serta skala-masuk secara terbalik. Misalnya, gunakan kelompok node cloud hibrida berbiaya lebih rendah sebagai kelompok utama dan kelompok node ECS berbasis cloud sebagai cadangan:

  • Skala keluar: Pod dijadwalkan ke kelompok cloud hibrida terlebih dahulu. Jika sumber daya tidak mencukupi, mereka dialihkan ke kelompok ECS.

  • Skala-masuk: Pod di kelompok ECS dihentikan terlebih dahulu, sehingga menjaga stabilitas sumber daya di kelompok cloud hibrida.

Solusi ini memerlukan dua sumber daya: ResourcePolicy dan workload yang mereferensikannya.

Konfigurasi `ResourcePolicy`: Tentukan urutan prioritas penjadwalan dalam daftar units, lalu asosiasikan kebijakan tersebut dengan Pod target menggunakan selector.

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: nginx-priority-policy
spec:
  # Cocokkan pod dengan label ini.
  selector:
    app: nginx-priority
  # Penjadwal mencoba kelompok node sesuai urutan. Pencocokan pertama yang berhasil digunakan.
  units:
    # Prioritas 1: kelompok node cloud hibrida (biaya lebih rendah, diprioritaskan)
    - resource: ecs
      nodeSelector:
        alibabacloud.com/nodepool-id: np-pool-a-xxxxxxxxxx
    # Prioritas 2: kelompok node ECS (cadangan)
    - resource: ecs
      nodeSelector:
        alibabacloud.com/nodepool-id: np-pool-b-xxxxxxxxxx
Dapatkan ID kelompok node dari halaman Node Management > Node Pools kluster Anda.

Konfigurasi workload: Tambahkan label yang sesuai dan toleransi cloud hibrida ke templat Pod.

spec:
  template:
    metadata:
      # Label ini menghubungkan pod dengan ResourcePolicy di atas.
      labels:
        app: nginx-priority
    spec:
      # Izinkan penjadwalan ke kelompok node cloud hibrida.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
  • ResourcePolicy:

    Expand to view

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: nginx-priority-policy
      namespace: default
    spec:
      # Cocokkan pod dengan label ini.
      selector:
        app: nginx-priority
      # Penjadwal mencoba kelompok node sesuai urutan. Pencocokan pertama yang berhasil digunakan.
      units:
        # Prioritas 1: kelompok node cloud hibrida (biaya lebih rendah, diprioritaskan)
        - resource: ecs
          nodeSelector:
            alibabacloud.com/nodepool-id: npaxxxxxxxxxx
        # Prioritas 2: kelompok node ECS (cadangan)
        - resource: ecs
          nodeSelector:
            alibabacloud.com/nodepool-id: npbxxxxxxxxxx
  • Deployment:

    Expand to view

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment-with-priority
      namespace: default
    spec:
      replicas: 5
      selector:
        matchLabels:
          app: nginx-priority
      template:
        metadata:
          # Label ini menghubungkan pod dengan ResourcePolicy di atas.
          labels:
            app: nginx-priority
        spec:
          # Izinkan penjadwalan ke kelompok node cloud hibrida.
          tolerations:
            - key: "nodepool-type"
              operator: "Equal"
              value: "hybridcloud"
              effect: "NoSchedule"
          containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
                - containerPort: 80
              resources:
                requests:
                  cpu: "100m"
                  memory: "128Mi"
                limits:
                  cpu: "200m"
                  memory: "256Mi"

Penerapan di produksi

  • Jangan hapus taint default nodepool-type=hybridcloud:NoSchedule dari kelompok node cloud hibrida. Taint ini mencegah komponen sistem secara tidak sengaja dijadwalkan ke node cloud hibrida.

  • Jangan hapus atau ubah label default alibabacloud.com/nodepool-type: hybridcloud pada node cloud hibrida. Mengubah atau menghapus label ini dapat memengaruhi operasi normal kelompok node.