全部产品
Search
文档中心

Container Service for Kubernetes:PropagationPolicy dan OverridePolicy

更新时间:Jul 02, 2025

Distributed Cloud Container Platform for Kubernetes (ACK One) Fleet instance menyebarkan aplikasi berdasarkan PropagationPolicy dan OverridePolicy. PropagationPolicy digunakan untuk menentukan sumber daya yang perlu disebarkan ke kluster tertentu. OverridePolicy digunakan untuk menentukan konfigurasi yang harus ditimpa saat sumber daya disebarkan ke kluster yang berbeda. Topik ini menjelaskan cara mengonfigurasi PropagationPolicy dan OverridePolicy.

PropagationPolicy

Anda dapat mendefinisikan PropagationPolicy dan ClusterPropagationPolicy untuk menyebarkan aplikasi multi-kluster. PropagationPolicy dan ClusterPropagationPolicy dirancang berdasarkan proyek open source Karmada dan kompatibel dengan API ClusterPropagationPolicy dan PropagationPolicy dari Karmada.

  • ClusterPropagationPolicy: Kebijakan ini memungkinkan Anda menyebarkan sumber daya di tingkat kluster, termasuk PersistentVolume, StorageClass, Namespace, dan CustomResourceDefinition. Kebijakan ini juga memungkinkan Anda menyebarkan sumber daya di namespace apa pun selain namespace yang dicadangkan oleh sistem. Untuk informasi lebih lanjut tentang izin kontrol akses berbasis peran (RBAC) yang diperlukan untuk menyebarkan sumber daya, lihat Izin RBAC pada Fleet instance.

  • PropagationPolicy: Kebijakan ini memungkinkan Anda menyebarkan sumber daya hanya di namespace yang ditentukan oleh kebijakan.

Berikut ini, PropagationPolicy yang menyebarkan aplikasi berdasarkan bobot statis digunakan sebagai contoh untuk menjelaskan cara mengonfigurasi kebijakan penyiaran.

apiVersion: one.alibabacloud.com/v1alpha1
kind: PropagationPolicy
metadata:
  name: web-demo
  namespace: demo
spec:
  resourceSelectors:
  - apiVersion: apps/v1
    kind: Deployment
    name: web-demo
  - apiVersion: v1
    kind: ConfigMap
    name: cm-demo
  - apiVersion: apps/v1
    kind: Deployment
    labelSelector:
      matchExpressions:
      - key: app
        operator: In
        values:
        - xxxx
  preserveResourcesOnDeletion: true
  placement:
    clusterAffinity:
      clusterNames:
      - cxxxxx # ID kluster Anda.
      - cxxxxx # ID kluster Anda.
    replicaScheduling:
      replicaSchedulingType: Divided
      replicaDivisionPreference: Weighted
      weightPreference:
        staticWeightList:
        - targetCluster:
            clusterNames:
            - cxxxxx
          weight: 2
        - targetCluster:
            clusterNames:
            - cxxxxxx
          weight: 1

Parameter

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Informasi versi API.

Nilai tetapnya adalah one.alibabacloud.com/v1alpha1.

kind

Ya

Jenis kebijakan. Nilai valid: PropagationPolicy dan ClusterPropagationPolicy.

  • ClusterPropagationPolicy: Kebijakan ini memungkinkan Anda menyebarkan aplikasi di tingkat kluster dan aplikasi di namespace apa pun selain namespace yang dicadangkan oleh sistem.

  • PropagationPolicy: Kebijakan ini memungkinkan Anda menyebarkan aplikasi hanya di namespace yang ditentukan oleh kebijakan.

PropagationPolicy

namespace

Tidak

Jika Anda mengatur parameter kind ke PropagationPolicy, Anda harus menentukan namespace yang ada.

demo

name

Tidak

Nama kebijakan propagasi.

policy-xxxx

resourceSelectors

Tidak

Pilih satu atau lebih sumber daya Kubernetes yang ingin Anda sebarkan. Untuk informasi lebih lanjut, lihat resourceSelector.

resourceSelectors:
-apiVersion: apps/v1
 kind: Deployment
 name: nginx
-apiVersion: v1
 kind: ConfigMap
 name: cm

propagateDeps

Tidak

Tentukan apakah sumber daya yang direferensikan secara otomatis disebarkan ke kluster terkait. Misalnya, ketika Deployment mereferensikan ConfigMap, parameter ini menentukan apakah ConfigMap disinkronkan ke kluster terkait.

true

placement

Ya

  • clusterAffinity: menentukan kluster ke mana aplikasi disebarkan. Untuk informasi lebih lanjut, lihat clusterAffinity.

  • replicaScheduling: menentukan kebijakan penjadwalan untuk sumber daya yang membuat pod, seperti Deployment dan StatefulSets. Untuk informasi lebih lanjut, lihat replicaScheduling.

placement:
    clusterAffinity:
      clusterNames:
      - ${cluster1-id}
      - ${cluster2-id}
  replicaScheduling:
    replicaSchedulingType: Divided
replicaDivisionPreference: Weighted
weightPreference:
staticWeightList:
- targetCluster:
    clusterNames:
    - ${cluster1-id}
  weight: 2
- targetCluster:
    clusterNames:
    - ${cluster2-id}
  weight: 1

dependentOverrides

Tidak

Dependensi overridePolicy.

Menunjukkan bahwa penyiaran sumber daya akan menunggu hingga semua konfigurasi overridePolicy dependen telah berlaku.

dependentOverrides:
  - ${overridePolicy1-name}
  - ${overridePolicy2-name}

failover

Tidak

Perilaku failover setelah kegagalan aplikasi.

  • decisionConditions:TolerationSeconds: Menentukan durasi toleransi (dalam detik) untuk status aplikasi yang tidak sehat sebelum memicu failover.

    Nilai default: 300 detik.

  • purgeMode

    • Immediately: Memaksa mengusir pod yang tidak sehat dan segera membuat aplikasi baru.

    • Graciously: Memulai pengusiran dengan anggun. Batalkan pengusiran jika aplikasi pulih ke status sehat dalam periode tenggang.

    • Never: Pertahankan pod yang tidak sehat tanpa intervensi otomatis.

  • gracePeriodSeconds: Jika purgeMode diatur ke Graciously, 600 detik diatur sebagai waktu tunggu maksimum untuk pemulihan aplikasi sebelum pengusiran paksa dilakukan secara default.

failover:
  application:
    decisionConditions:
      tolerationSeconds: 30
    purgeMode: Immediately

preserveResourcesOnDeletion

Ya

Tentukan apakah sumber daya yang disebarkan oleh kebijakan dipertahankan saat kebijakan dihapus.

Nilai default: true.

false

resourceSelector

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Versi API propagasi sumber daya.

v1

kind

Ya

Jenis sumber daya yang akan disebarkan.

Deployment

namespace

Tidak

Namespace sumber daya yang disebarkan.

Catatan

Jika Anda menggunakan PropagationPolicy, atur parameter ini ke namespace yang ditentukan oleh kebijakan. Jika tidak, parameter ini tidak berlaku.

demo

name

Tidak

Nama sumber daya yang disebarkan.

Nama apa saja

labelSelector

Tidak

Pilih sumber daya yang akan disebarkan menggunakan pemilih label.

  • matchLabels: Tentukan pasangan key-value.

  • matchExpressions: Tentukan array. Setiap elemen terdiri dari parameter key, operator, dan values.

labelSelector:
  matchLabels:
    region: A
    az: zone0
  matchExpressions:
  - key: app
    operator: In
    values:
    - nginx

clusterAffinity

Parameter

Wajib

Deskripsi

Contoh

clusterNames

Tidak

ID kluster ke mana Anda ingin menyebarkan sumber daya.

clusterNames:
- cxxxx
- cxxxx

excludeClusters

Tidak

ID kluster yang ingin Anda kecualikan.

excludeClusters:
- cxxxx
- cxxxx

labelSelector

Tidak

Pilih kluster menggunakan pemilih label.

labelSelector:
  matchLabels:
    region: A
    az: zone0
  matchExpressions:
  - key: app
    operator: In
    values:
    - nginx

replicaScheduling

Parameter

Wajib

Deskripsi

Contoh

replicaSchedulingType

Tidak

Kebijakan penjadwalan pod. Nilai valid: Duplicated atau Divided.

  • Duplicated: replikasi pod ke setiap kluster.

  • Divided: jadwalkan pod berdasarkan bobot masing-masing kluster. Total jumlah pod di semua kluster terkait sama dengan jumlah pod yang ditentukan dalam spec aplikasi pada Fleet instance.

Duplicated

customSchedulingType

Tidak

Strategi penjadwalan kustom. Hanya Gang scheduling yang didukung untuk beban kerja.

Gang

replicaDivisionPreference

Tidak

Tentukan bagaimana pod dibagi di antara kluster:

  • Weighted: mendistribusikan pod secara proporsional berdasarkan bobot yang telah ditentukan.

  • Aggregated: memprioritaskan kluster dengan skor penjadwalan lebih tinggi untuk memaksimalkan pemanfaatan sumber daya.

weighted

weightPreference

Tidak

Tentukan apakah menggunakan pembobotan dinamis atau statis untuk penyiaran pod:

  • dynamicWeight: AvailableReplicas didukung untuk menyesuaikan alokasi pod secara dinamis berdasarkan ketersediaan sumber daya real-time di kluster terkait.

  • staticWeightList adalah array. Setiap elemen terdiri dari parameter clusterAffinity dan weight.

    • clusterAffinity: menentukan kluster ke mana aplikasi disebarkan. Untuk informasi lebih lanjut, lihat clusterAffinity.

    • weight: menentukan bobot kluster yang dipilih. Nilai lebih besar menunjukkan bahwa lebih banyak pod dijadwalkan ke kluster tersebut.

  • Contoh berikut menunjukkan bahwa bobot Cluster1 adalah 2 dan bobot Cluster2 adalah 1. Jika total jumlah pod adalah tiga, dua pod dijadwalkan ke Cluster1 dan satu pod dijadwalkan ke Cluster2.

    weightPreference:
      staticWeightList:
      - targetCluster:
      clusterNames:
      - ${cluster1-id}
      weight: 2
      - targetCluster:
      clusterNames:
      - ${cluster2-id}
      weight: 1
  • Contoh berikut menggunakan dynamicWeight:

    weightPreference:
      dynamicWeight: AvailableReplicas

OverridePolicy

Selama penyiaran aplikasi, beberapa kluster mungkin memerlukan konfigurasi yang berbeda. OverridePolicy dapat digunakan untuk menimpa sumber daya yang disebarkan ke kluster yang berbeda. Anda dapat mendefinisikan ClusterOverridePolicy dan OverridePolicy. ClusterOverridePolicy dan OverridePolicy dirancang berdasarkan proyek open source Karmada dan kompatibel dengan API ClusterOverridePolicy

dan OverridePolicy dari Karmada.

  • ClusterOverridePolicy: Kebijakan ini memungkinkan Anda menimpa sumber daya di tingkat kluster, termasuk PersistentVolume, StorageClass, Namespace, dan CustomResourceDefinition. Anda juga dapat menimpa sumber daya di namespace apa pun selain namespace yang dicadangkan oleh sistem.

  • OverridePolicy: Kebijakan ini memungkinkan Anda menimpa sumber daya di tingkat namespace. Anda dapat menimpa sumber daya hanya di namespace yang ditentukan oleh kebijakan.

Berikut ini, OverridePolicy digunakan sebagai contoh untuk menjelaskan cara mengonfigurasi kebijakan penimpaan.

apiVersion: one.alibabacloud.com/v1alpha1
kind: OverridePolicy
metadata:
  name: demo
  namespace: demo
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: example
  overrideRules:
    - targetCluster:
        clusterNames:
          -cxxxxx # ID kluster Anda.
      overriders:
        plaintext:
          - operator: replace
            path: /spec/replicas
            value: 1
        imageOverrider:
          - component: Registry
            operator: add
            value: registry.cn-hangzhou.aliyuncs.com/xxxx

Parameter

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Informasi versi API.

Nilai tetapnya adalah one.alibabacloud.com/v1alpha1.

kind

Ya

Jenis kebijakan penimpaan. Nilai valid: ClusterOverridePolicy dan OverridePolicy.

  • ClusterOverridePolicy: Kebijakan ini memungkinkan Anda menimpa sumber daya di tingkat kluster dan sumber daya di namespace apa pun selain namespace yang dicadangkan oleh sistem.

  • OverridePolicy: Kebijakan ini memungkinkan Anda menimpa hanya sumber daya di namespace yang ditentukan oleh kebijakan.

OverridePolicy

namespace

Tidak

Jika Anda mengatur parameter kind ke OverridePolicy, Anda harus menentukan namespace yang ada.

demo

name

Ya

Nama kebijakan penimpaan.

Nama apa saja

resourceSelectors

Ya

Array resourceSelector. Untuk informasi lebih lanjut, lihat resourceSelector.

resourceSelectors:
-apiVersion: apps/v1
  kind: Deployment
  name: nginx
-apiVersion: v1
  kind: ConfigMap
  name: cm

overrideRules

Ya

Array ruleWithCluster. Untuk informasi lebih lanjut, lihat ruleWithCluster.

overrideRules:
    - targetCluster:
        clusterNames:
          - ${cluster1-id}
      overriders:
        imageOverrider:
          - component: Registry
            operator: add
            value: registry.cn-hangzhou.aliyuncs.com

resourceSelector

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Atur ke apiVersion dari API propagasi sumber daya.

v1

kind

Ya

Jenis sumber daya yang akan disebarkan.

Deployment

namespace

Tidak

Namespace sumber daya yang disebarkan.

Catatan

Jika Anda menggunakan OverridePolicy, atur parameter ini ke namespace yang ditentukan oleh kebijakan. Jika tidak, parameter ini tidak berlaku.

demo

name

Tidak

Nama sumber daya yang disebarkan.

Nama apa saja

labelSelector

Tidak

Pilih sumber daya yang ingin Anda sebarkan menggunakan pemilih label.

labelSelector:
  matchLabels:
    region: A
    az: zone0
  matchExpressions:
  - key: app
    operator: In
    values:
    - nginx

clusterAffinity

Parameter

Wajib

Deskripsi

Contoh

clusterNames

Tidak

ID kluster ke mana Anda ingin menyebarkan sumber daya.

clusterNames:
- cxxxx
- cxxxx

excludeClusters

Tidak

ID kluster yang ingin Anda kecualikan.

excludeClusters:
- cxxxx
- cxxxx

labelSelector

Tidak

Pilih kluster menggunakan pemilih label.

labelSelector:
  matchLabels:
    region: A
    az: zone0
  matchExpressions:
  - key: app
    operator: In
    values:
    - nginx

ruleWithCluster

Parameter

Wajib

Deskripsi

Contoh

targetCluster

Ya

Pilih kluster berdasarkan parameter clusterAffinity. Untuk informasi lebih lanjut, lihat resourceSelector.

  clusterAffinity:
      clusterNames:
      -cxxxxx # ID kluster Anda.
      -cxxxxx # ID kluster Anda.

overriders

Ya

Array overriders, yang berisi aturan penimpaan. Nilai valid: image dan plaintext. Untuk informasi lebih lanjut, lihat overriders.

  • plaintext: Anda dapat menimpa sumber daya menggunakan parameter path, value, dan operator dari JSONPatch.

  • imageOverrider: Anda dapat menimpa gambar.

overriders:
  imageOverrider:
    - component: Registry
      operator: add
      value: registry.cn-hangzhou.aliyuncs.com

overriders

Parameter

Wajib

Deskripsi

Contoh

imageOverrider

Tidak

Metode yang digunakan untuk menimpa gambar.

  • predicate: Opsional. path dari gambar yang ingin Anda timpa, seperti /spec/template/spec/containers/0/image. Jika Anda biarkan parameter ini kosong, semua gambar akan ditimpa.

  • component: Gunakan salah satu metode berikut untuk menimpa gambar: Registry, Repository, dan Tag. Gambar ditentukan dalam format [registry/]repository[:tag].

  • operator: Anda dapat mengatur parameter ini ke remove, add, atau replace.

  • value: Jika parameter operator diatur ke replace atau add, nilainya baru.

imageOverrider:
  - component: Registry
    operator: add
    value: registry.cn-hangzhou.aliyuncs.com

plaintext

Tidak

Timpa sumber daya menggunakan JSONPatch.

  • path: jalur bidang yang akan ditimpa.

  • value: nilai dari bidang tersebut. Jika parameter operator diatur ke remove, biarkan parameter ini kosong.

  • operator: Anda dapat mengatur parameter ini ke remove, add, atau replace.

plaintext:
  - operator: replace
    path: /spec/replicas
    value: 1

Referensi

Untuk informasi lebih lanjut tentang cara membuat aplikasi pada Fleet instance dan cara menyebarkan aplikasi ke beberapa kluster dengan mengonfigurasi PropagationPolicy atau OverridePolicy, lihat Memulai dengan distribusi aplikasi.