Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Propagation policies and override policies

Son Güncelleme:Oct 06, 2026

ACK One, uygulamaları bir filoya dağıtmak için yayılım ilkelerini ve geçersiz kılma ilkelerini kullanır. Yayılım ilkesi, hangi kaynakların hangi kümelere dağıtılacağını tanımlar. Geçersiz kılma ilkesi ise bu kaynaklara küme bazlı yapılandırma değişiklikleri uygular.

Yayılım ilkeleri

Bir yayılım ilkesi, Kubernetes kaynaklarını seçer ve bunları bir veya daha fazla üye kümeye dağıtır. Bir PropagationPolicy veya ClusterPropagationPolicy tanımlayın; her ikisi de açık kaynaklı Karmada projesine dayanır ve Karmada API ile uyumludur.

  • PropagationPolicy: Ad alanı düzeyindeki kaynakları dağıtır. Yalnızca ilkenin tanımlandığı ad alanı içinde geçerlidir.

  • ClusterPropagationPolicy: Küme kapsamındaki kaynakları (PersistentVolume, StorageClass, Namespace, CustomResourceDefinition) ve sistem ad alanları dışındaki tüm ad alanlarında bulunan ad alanı düzeyindeki kaynakları dağıtır. Kaynak dağıtımı için Rol Tabanlı Erişim Kontrolü (RBAC), çok küme filo RBAC izinleri tarafından yönetilir.

Aşağıdaki örnekte, statik çoğaltma ağırlıkları kullanılarak bir Deployment ve bir ConfigMap iki kümeye dağıtılmaktadır:

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 # Your cluster ID.
      - cxxxxx # Your cluster ID.
    replicaScheduling:
      replicaSchedulingType: Divided
      replicaDivisionPreference: Weighted
      weightPreference:
        staticWeightList:
        - targetCluster:
            clusterNames:
            - cxxxxx
          weight: 2
        - targetCluster:
            clusterNames:
            - cxxxxxx
          weight: 1

Parametreler

Parametre Zorunlu Açıklama Örnek
apiVersion Evet API sürümü. policy.one.alibabacloud.com/v1alpha1
kind Evet İlke kapsamı. PropagationPolicy kaynakları kendi ad alanı içinde dağıtır. ClusterPropagationPolicy küme kapsamındaki kaynakları ve sistem dışı herhangi bir ad alanındaki kaynakları dağıtır. PropagationPolicy
namespace Hayır kind değeri PropagationPolicy olduğunda gereklidir. Mevcut bir ad alanı belirtin. demo
name Hayır Yayılım ilkesinin adı. policy-xxxx
resourceSelectors Hayır Dağıtılacak Kubernetes kaynaklarını seçer. Belirtilmezse hiçbir kaynak seçilmez. Bkz. resourceSelector parametreleri. —
propagateDeps Hayır Seçilen iş yükünün bağımlı olduğu kaynakların (örneğin, bir Deployment tarafından başvurulan ConfigMap) otomatik olarak dağıtılıp dağıtılmayacağını belirtir. true
placement Evet Hedef kümeleri ve çoğaltma zamanlamasını belirtir. clusterAffinity ve replicaScheduling içerir. Bkz. clusterAffinity parametreleri ve replicaScheduling parametreleri. —
dependentOverrides Hayır Kaynaklar dağıtılmadan önce uygulanması gereken OverridePolicy nesnelerini listeler. - overridePolicy1
failover Hayır Bir uygulama sağlıksız duruma geçtiğinde davranışı kontrol eder. Bkz. Yük devretme yapılandırması. —
preserveResourcesOnDeletion Evet İlke silindikten sonra üye kümelerdeki dağıtılmış kaynakların korunup korunmayacağını belirtir. Varsayılan: true. false

resourceSelector parametreleri

Parametre Zorunlu Açıklama Örnek
apiVersion Evet Dağıtılacak kaynağın API sürümü. v1
kind Evet Kaynak türü. Deployment
namespace Hayır Kaynağın ad alanı. PropagationPolicy kullanırken bu değer, ilkenin tanımlandığı ad alanıyla eşleşmelidir; diğer değerlerin etkisi yoktur. demo
name Hayır Kaynağın adı. web-demo
labelSelector Hayır Kaynakları etiketlere göre seçer. matchLabels (anahtar-değer çiftleri) ve matchExpressions (key, operator ve values içeren ifadeler) desteklenir. Belirtilmezse, ad alanındaki belirtilen kind türündeki tüm kaynaklar seçilir. —

clusterAffinity parametreleri

Hedef kümeleri aşağıdaki alanların herhangi bir kombinasyonunu kullanarak belirtin:

Küme kimliğine göre

clusterAffinity:
  clusterNames:
  - cxxxx
  - cxxxx

Etiket seçicisine göre

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

Hariç tutmaya göre

clusterAffinity:
  excludeClusters:
  - cxxxx
  - cxxxx
Parametre Zorunlu Açıklama
clusterNames Hayır Dahil edilecek küme kimlikleri.
excludeClusters Hayır Hariç tutulacak küme kimlikleri.
labelSelector Hayır Kümeleri etikete göre seçer.

replicaScheduling parametreleri

Parametre Zorunlu Açıklama Örnek
replicaSchedulingType Hayır Çoğaltmaların kümeler arasında nasıl dağıtılacağı. Duplicated tam çoğaltma sayısını her kümede çalıştırır. Divided çoğaltmaları kümeler arasında bölerek toplamın iş yükü teknik özelliklerinde belirtilen sayıyla eşleşmesini sağlar. Divided
customSchedulingType Hayır Özel zamanlama ilkesi. Şu anda yalnızca iş iş yükleri için Gang zamanlaması desteklenmektedir. Gang
replicaDivisionPreference Hayır replicaSchedulingType değeri Divided olduğunda kullanılır. Weighted çoğaltmaları ağırlığa göre böler. Aggregated çoğaltmaları daha yüksek puanlı kümelerde yoğunlaştırır. Weighted
weightPreference Hayır Weighted bölme işlemi için statik veya dinamik ağırlıkları belirtir. Aşağıdaki örnekleri inceleyin. —

Statik ağırlık örneği — Cluster1 üzerinde weight: 2 ve Cluster2 üzerinde weight: 1 ile toplam üç çoğaltma, Cluster1'e iki ve Cluster2'ye bir olacak şekilde zamanlanır:

weightPreference:
  staticWeightList:
  - targetCluster:
      clusterNames:
      - cxxxxx  # Cluster1 ID
    weight: 2
  - targetCluster:
      clusterNames:
      - cxxxxxx  # Cluster2 ID
    weight: 1

Dinamik ağırlık örneği — Çoğaltmaları her kümenin mevcut kapasitesine orantılı olarak dağıtır:

weightPreference:
  dynamicWeight: AvailableReplicas

Yük devretme yapılandırması

Bir uygulama sağlıksız duruma geçtiğinde ACK One'ın nasıl yanıt vereceğini kontrol etmek için failover alanını yapılandırın:

failover:
  application:
    decisionConditions:
      tolerationSeconds: 30
    purgeMode: Immediately
Parametre Açıklama Varsayılan
decisionConditions.tolerationSeconds Sağlıksız bir uygulamayı başarısız olarak kabul etmeden önce ne kadar bekleneceği. 300s
purgeMode Sağlıksız uygulama ile ilgili yapılacak işlem. Immediately uygulamayı tahliye eder ve yenisini zamanlar. Graciously uygulamanın kurtulmasını bekler; gracePeriodSeconds içinde kurtulursa tahliye iptal edilir. Never uygulamayı yerinde bırakır ve manuel müdahale gerektirir. —
gracePeriodSeconds purgeMode değeri Graciously olduğunda nazikçe tahliye için maksimum bekleme süresi. 600s

Geçersiz kılma ilkeleri

Bir geçersiz kılma ilkesi, yayılım ilkesi tarafından dağıtım için zaten seçilmiş olan kaynaklara küme bazlı yapılandırma uygular. Bir ClusterOverridePolicy veya OverridePolicy tanımlayın; her ikisi de açık kaynaklı Karmada projesine dayanır ve Karmada'nın ClusterOverridePolicy ve OverridePolicy arayüzleriyle uyumludur.

  • OverridePolicy: Kendi ad alanı içindeki ad alanı düzeyindeki kaynakları geçersiz kılar.

  • ClusterOverridePolicy: Küme kapsamındaki kaynakları (PersistentVolume, StorageClass, Namespace, CustomResourceDefinition) ve sistem dışı herhangi bir ad alanındaki kaynakları geçersiz kılar.

Aşağıdaki örnekte, belirli bir kümedeki bir Deployment için çoğaltma sayısı ve görüntü kayıt defteri geçersiz kılınmaktadır:

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  # Your cluster ID
      overriders:
        plaintext:
          - operator: replace
            path: /spec/replicas
            value: 1
        imageOverrider:
          - component: Registry
            operator: add
            value: registry.cn-hangzhou.aliyuncs.com/xxxx

Ana parametreler

Parametre Zorunlu Açıklama Örnek
apiVersion Evet API sürümü. policy.one.alibabacloud.com/v1alpha1
kind Evet İlke kapsamı. OverridePolicy kendi ad alanı içinde uygulanır. ClusterOverridePolicy küme kapsamındaki kaynaklara ve sistem dışı herhangi bir ad alanındaki kaynaklara uygulanır. OverridePolicy
namespace Hayır kind değeri OverridePolicy olduğunda gereklidir. Mevcut bir ad alanı belirtin. demo
name Evet Geçersiz kılma ilkesinin adı. demo
resourceSelectors Evet Geçersiz kılınacak kaynakları seçer. Bkz. resourceSelector parametreleri. —
overrideRules Evet Her biri belirli kümeleri hedefleyen ve uygulanacak geçersiz kılmaları belirten geçersiz kılma kuralları dizisi. Bkz. overrideRules parametreleri. —

resourceSelector parametreleri

Parametre Zorunlu Açıklama Örnek
apiVersion Evet Kaynağın API sürümü. v1
kind Evet Kaynak türü. Deployment
namespace Hayır Kaynağın ad alanı. OverridePolicy kullanırken bu değer, ilkenin ad alanıyla eşleşmelidir. demo
name Hayır Kaynak adı. example
labelSelector Hayır Kaynakları etikete göre seçer. Belirtilmezse, ad alanındaki belirtilen kind türündeki tüm kaynaklar seçilir. —

overrideRules parametreleri

overrideRules içindeki her giriş, bir targetCluster ve bir overriders bloğu içerir:

Parametre Zorunlu Açıklama
targetCluster Evet Geçersiz kılmanın hangi kümelere uygulanacağını belirtir; yayılım ilkelerindekiyle aynı clusterAffinity yapısını kullanır. Bkz. clusterAffinity parametreleri.
overriders Evet Neyin geçersiz kılınacağını tanımlar. imageOverrider ve plaintext desteklenir. Aynı kuralda her ikisi de belirtildiğinde, önce imageOverrider ardından plaintext uygulanır.

overriders parametreleri

imageOverrider — Görüntü kayıt defterini, deposunu veya etiketini değiştirir:

Parametre Zorunlu Açıklama
predicate Hayır Değiştirilecek belirli görüntü alanının yolu (örneğin, /spec/template/spec/containers/0/image). Belirtilmezse, kaynaktaki tüm görüntüler değiştirilir.
component Evet Değiştirilecek görüntü bileşeni. Geçerli değerler: Registry, Repository, Tag. Görüntü biçimi [registry/]repository[:tag] şeklindedir.
operator Evet İşlem. Geçerli değerler: add, replace, remove.
value Koşullu Yeni değer. operator değeri add veya replace olduğunda gereklidir.

Örnek — Tüm konteyner görüntülerinin başına bir kayıt defteri ekler:

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

Sonuç: Başlangıçta nginx:latest olarak belirtilen bir görüntü, registry.cn-hangzhou.aliyuncs.com/nginx:latest haline gelir.

plaintext — JSON Patch (RFC 6902) kullanarak herhangi bir kaynak alanını değiştirir:

Parametre Zorunlu Açıklama
path Evet Hedef alanın JSON Patch yolu (örneğin, /spec/replicas).
value Koşullu Yeni değer. operator değeri add veya replace olduğunda gereklidir. operator değeri remove olduğunda atlayın.
operator Evet İşlem. Geçerli değerler: add, replace, remove.

Örnek — Belirli bir kümede çoğaltma sayısını 1 olarak ayarlar:

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

Sonuç: Deployment'ın spec.replicas alanı, hedef kümede orijinal değerinden 1 değerine değiştirilir.

Sonraki adımlar

Bir filo örneğinde uygulama oluşturma ve çok küme dağıtımı için yayılım ve geçersiz kılma ilkelerini yapılandırma konusunda uçtan uca bir kılavuz için bkz. Uygulama dağıtımı hızlı başlangıç.