All Products
Search
Document Center

Container Service for Kubernetes:Kebijakan propagasi dan kebijakan override

Last Updated:Feb 25, 2026

ACK One menggunakan kebijakan propagasi dan kebijakan override untuk mendistribusikan aplikasi dalam suatu Armada. Kebijakan propagasi (PropagationPolicy) menentukan resource mana yang didistribusikan ke kluster mana, sedangkan kebijakan override (OverridePolicy) menentukan konfigurasi spesifik kluster untuk resource tersebut. Topik ini menjelaskan cara mengonfigurasi kebijakan propagasi dan override.

Kebijakan propagasi

Anda dapat mendefinisikan PropagationPolicy atau ClusterPropagationPolicy untuk mengonfigurasi kebijakan propagasi guna mendistribusikan aplikasi ke beberapa kluster. Kedua kebijakan tersebut—PropagationPolicy dan ClusterPropagationPolicy—didasarkan pada proyek sumber terbuka Karmada serta kompatibel dengan antarmuka ClusterPropagationPolicy dan PropagationPolicy dari Karmada.

  • ClusterPropagationPolicy: Digunakan untuk mendistribusikan aplikasi tingkat kluster, seperti PersistentVolume, StorageClass, Namespace, dan CustomResourceDefinition. Kebijakan ini juga mendukung distribusi aplikasi di namespace apa pun, kecuali namespace sistem. Izin Role-based Access Control (RBAC) untuk distribusi resource dikendalikan oleh izin RBAC Armada multi-kluster.

  • PropagationPolicy: Digunakan untuk mendistribusikan aplikasi tingkat namespace. Kebijakan ini hanya dapat mendistribusikan aplikasi di namespace-nya sendiri.

Contoh berikut menunjukkan PropagationPolicy yang mendistribusikan aplikasi berdasarkan bobot statis dan menjelaskan parameter yang digunakan untuk menentukan kebijakan tersebut.

apiVersion: policy.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

Versi API.

Diatur ke policy.one.alibabacloud.com/v1alpha1.

kind

Ya

Tingkat kebijakan propagasi. Nilai yang valid: PropagationPolicy dan ClusterPropagationPolicy.

  • ClusterPropagationPolicy: Mendistribusikan aplikasi tingkat kluster dan aplikasi di namespace apa pun dalam kluster, kecuali namespace sistem.

  • PropagationPolicy: Hanya mendistribusikan aplikasi di namespace-nya sendiri.

PropagationPolicy

namespace

Tidak

Jika kind diatur ke PropagationPolicy, tentukan namespace yang sudah ada.

demo

name

Tidak

Nama kebijakan propagasi.

policy-xxxx

resourceSelectors

Tidak

Memilih satu atau beberapa resource Kubernetes untuk didistribusikan. Untuk informasi selengkapnya, lihat parameter resourceSelector.

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

propagateDeps

Tidak

Menentukan apakah resource dependen harus didistribusikan secara otomatis. Misalnya, jika sebuah deployment mereferensikan ConfigMap, parameter ini menentukan apakah ConfigMap tersebut juga didistribusikan ke kluster anggota.

true atau false

placement

Ya

  • clusterAffinity: Menentukan kluster tempat aplikasi akan didistribusikan. Untuk informasi selengkapnya, lihat parameter clusterAffinity.

  • replicaScheduling: Kebijakan penjadwalan untuk resource yang memiliki replika, seperti deployment dan StatefulSet. Untuk informasi selengkapnya, lihat parameter 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

Menentukan overridePolicy dependen.

Resource hanya didistribusikan setelah semua objek overridePolicy dependen diterapkan.

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

failover

Tidak

Perilaku failover setelah terjadi gangguan aplikasi.

  • decisionConditions:TolerationSeconds: Durasi toleransi terhadap aplikasi yang tidak sehat. Default: 300s.

  • purgeMode:

    • Immediately: Segera menghapus aplikasi lalu membuat yang baru.

    • Graciously: Memungkinkan penghapusan secara graceful. Jika aplikasi kembali sehat dalam periode tertentu, penghapusan dapat dihentikan.

    • Never: Tidak menghapus aplikasi yang tidak sehat. Diperlukan intervensi manual.

  • gracePeriodSeconds: Jika purgeMode diatur ke Graciously, bidang ini menentukan waktu tunggu maksimum untuk penghapusan graceful. Default: 600s.

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

preserveResourcesOnDeletion

Ya

Menentukan apakah resource yang telah didistribusikan tetap dipertahankan setelah kebijakan dihapus. Default: true.

false

Parameter resourceSelector

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Versi API dari resource yang didistribusikan.

v1

kind

Ya

Jenis resource yang didistribusikan.

Deployment

namespace

Tidak

Namespace dari resource yang didistribusikan.

Catatan

Jika Anda menggunakan PropagationPolicy, namespace-nya adalah namespace tempat kebijakan tersebut berada. Bidang ini tidak berpengaruh di namespace lain.

demo

name

Tidak

Nama resource yang didistribusikan.

Nama apa saja

labelSelector

Tidak

Memilih resource menggunakan pemilih label.

  • matchLabels: Pasangan kunci-nilai dari key dan value.

  • matchExpressions: Array yang setiap elemennya berisi parameter key, operator, dan values.

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

Parameter clusterAffinity

Parameter

Wajib

Deskripsi

Nilai contoh

clusterNames

Tidak

Daftar ID kluster tempat resource akan didistribusikan.

clusterNames:
- cxxxx
- cxxxx

excludeClusters

Tidak

Daftar ID kluster yang dikecualikan dari distribusi.

excludeClusters:
- cxxxx
- cxxxx

labelSelector

Tidak

Memilih kluster untuk distribusi menggunakan pemilih label.

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

Parameter replicaScheduling

Parameter

Wajib

Deskripsi

Nilai contoh

replicaSchedulingType

Tidak

Kebijakan penjadwalan replika. Nilai yang valid: Duplicated dan Divided.

  • Duplicated: Mereplikasi aplikasi ke setiap kluster.

  • Divided: Menjadwalkan replika aplikasi berdasarkan bobot kluster. Jumlah total replika di semua kluster terkait sama dengan jumlah replika yang ditentukan dalam spec aplikasi di kluster Armada.

Duplicated

customSchedulingType

Tidak

Kebijakan penjadwalan kustom. Saat ini hanya mendukung penjadwalan Gang untuk beban kerja Pekerjaan.

Gang

replicaDivisionPreference

Tidak

Kebijakan pembagian replika. Nilai yang valid: weighted dan Aggregated.

  • Weighted: Menjadwalkan replika berdasarkan bobot.

  • Aggregated: Mendistribusikan replika ke kluster dengan skor lebih tinggi bila memungkinkan.

weighted

weightPreference

Tidak

Menentukan preferensi untuk bobot dinamis atau statis.

  • dynamicWeight: Saat ini mendukung AvailableReplicas. Opsi ini memperkirakan jumlah replika yang dapat didistribusikan berdasarkan kondisi resource kluster anggota dan membagi replika berdasarkan rasio replika yang tersedia di seluruh kluster.

  • staticWeightList adalah array yang setiap elemennya berisi parameter clusterAffinity dan weight.

    • clusterAffinity: Menentukan kluster tempat aplikasi akan didistribusikan. Untuk informasi selengkapnya, lihat parameter clusterAffinity.

    • weight: Bobot kluster yang dipilih. Nilai yang lebih tinggi menghasilkan penjadwalan lebih banyak replika ke kluster tersebut.

Pada contoh berikut, Cluster1 memiliki bobot 2 dan Cluster2 memiliki bobot 1. Jika jumlah total replika adalah 3, dua replika dijadwalkan ke Cluster1 dan satu replika dijadwalkan ke Cluster2.

weightPreference:
  staticWeightList:
  - targetCluster:
      clusterNames:
      - ${cluster1-id}
    weight: 2
  - targetCluster:
      clusterNames:
      - ${cluster2-id}
    weight: 1

Contoh berikut menunjukkan penjadwalan bobot dinamis:

weightPreference:
  dynamicWeight: AvailableReplicas

Kebijakan Terdiferensiasi

Saat menerapkan aplikasi, konfigurasi yang berbeda mungkin diperlukan di setiap kluster. Kebijakan override memungkinkan Anda menerapkan aplikasi dengan konfigurasi spesifik kluster. Anda dapat menentukan ClusterOverridePolicy atau OverridePolicy untuk membuat kebijakan override. ClusterOverridePolicy dan OverridePolicy didasarkan pada proyek open source Karmada serta kompatibel dengan ClusterOverridePolicy milik Karmada.

Mendukung antarmuka OverridePolicy.

  • ClusterOverridePolicy: Digunakan untuk meng-override resource tingkat kluster, seperti PersistentVolume, StorageClass, Namespace, dan CustomResourceDefinition. Kebijakan ini juga mendukung peng-override resource di namespace apa pun, kecuali namespace sistem.

  • OverridePolicy: Digunakan untuk meng-override resource tingkat namespace. Kebijakan ini dapat meng-override resource yang didistribusikan di namespace-nya sendiri.

Contoh berikut menunjukkan OverridePolicy dan menjelaskan parameter yang digunakan untuk menentukan kebijakan tersebut.

apiVersion: policy.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 utama

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Versi API.

Diatur ke policy.one.alibabacloud.com/v1alpha1.

kind

Ya

Jenis kebijakan override. Nilai yang valid: ClusterOverridePolicy dan OverridePolicy.

  • ClusterOverridePolicy: Dapat meng-override resource tingkat kluster dan resource di namespace apa pun dalam kluster, kecuali namespace sistem.

  • OverridePolicy: Hanya dapat mendistribusikan resource di namespace-nya sendiri.

OverridePolicy

namespace

Tidak

Jika kind diatur ke OverridePolicy, tentukan namespace yang sudah ada.

demo

name

Ya

Nama kebijakan terdiferensiasi.

Nama apa saja

resourceSelectors

Ya

Array dari resourceSelectors. Untuk informasi selengkapnya, lihat parameter resourceSelector.

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

overrideRules

Ya

Array dari ruleWithClusters. Untuk informasi selengkapnya, lihat parameter ruleWithCluster.

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

Parameter resourceSelector

Parameter

Wajib

Deskripsi

Contoh

apiVersion

Ya

Pilih apiVersion dari resource yang ingin Anda distribusikan.

v1

kind

Ya

Jenis resource yang didistribusikan.

Deployment

namespace

Tidak

Namespace dari resource yang didistribusikan.

Catatan

Jika Anda menggunakan OverridePolicy, namespace-nya adalah namespace tempat kebijakan tersebut berada. Bidang ini tidak berpengaruh di namespace lain.

demo

name

Tidak

Nama resource yang didistribusikan.

Nama apa saja

labelSelector

Tidak

Memilih resource untuk distribusi menggunakan pemilih label.

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

Parameter clusterAffinity

Parameter

Wajib

Deskripsi

Nilai contoh

clusterNames

Tidak

Daftar ID kluster tempat resource akan didistribusikan.

clusterNames:
- cxxxx
- cxxxx

excludeClusters

Tidak

Daftar ID kluster yang dikecualikan dari distribusi.

excludeClusters:
- cxxxx
- cxxxx

labelSelector

Tidak

Memilih kluster untuk distribusi menggunakan pemilih label.

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

Parameter ruleWithCluster

Parameter

Wajib

Deskripsi

Contoh

targetCluster

Ya

Memilih kluster menggunakan parameter clusterAffinity. Untuk informasi selengkapnya, lihat resourceSelector.

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

overriders

Ya

Array dari struct overriders yang berisi aturan override. Saat ini, image dan plaintext didukung. Pilih salah satu sesuai kebutuhan. Untuk informasi selengkapnya, lihat parameter overriders.

  • plaintext: Menggunakan path, value, dan operator dari JSON Patch untuk memodifikasi resource.

  • imageOverrider: Memodifikasi image.

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

Parameter overriders

Parameter

Wajib

Deskripsi

Contoh

imageOverrider

Tidak

Menentukan cara memodifikasi image.

  • predicate (Opsional): Menentukan path dari image yang akan dimodifikasi. Contohnya, /spec/template/spec/containers/0/image. Jika parameter ini kosong, semua image dimodifikasi.

  • component: Menentukan bagian image yang dimodifikasi. Nilai yang valid: Registry, Repository, dan Tag. Format image adalah [registry/]repository[:tag].

  • operator: Operasi yang dilakukan. Nilai yang valid: remove, add, dan replace.

  • value: Jika operator adalah replace atau add, parameter ini menentukan nilai baru.

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

plaintext

Tidak

Memodifikasi resource menggunakan JSON Patch.

  • path: Path menuju bidang tujuan.

  • value: Nilai bidang tujuan. Jika operator adalah remove, bidang ini kosong.

  • operator: Operasi yang dilakukan. Nilai yang valid: remove, add, dan replace.

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

Referensi

Untuk informasi selengkapnya tentang cara membuat aplikasi dalam instans Armada dan mengonfigurasi kebijakan propagasi atau override untuk distribusi multi-kluster, lihat Panduan cepat distribusi aplikasi.