すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:PropagationPolicy および OverridePolicy

最終更新日:Mar 11, 2025

Distributed Cloud Container Platform for Kubernetes (ACK One) Fleet インスタンスは、PropagationPolicy および OverridePolicy に基づいてアプリケーションを伝搬します。 PropagationPolicy は、どのリソースをどのクラスターに伝搬するかを定義するために使用されます。 OverridePolicy は、リソースが異なるクラスターに伝搬されるときにオーバーライドされる構成を定義するために使用されます。 このトピックでは、PropagationPolicy および OverridePolicy を構成する方法について説明します。

PropagationPolicy

マルチクラスター アプリケーションを伝搬するために、PropagationPolicy および ClusterPropagationPolicy を定義できます。 PropagationPolicy および ClusterPropagationPolicy は、オープンソース プロジェクト Karmada に基づいて設計されており、Karmada の ClusterPropagationPolicy および PropagationPolicy API と互換性があります。

  • ClusterPropagationPolicy: このポリシーを使用すると、PersistentVolumeStorageClassNamespaceCustomResourceDefinition などのクラスター全体のリソースを伝搬できます。 また、システム予約名前空間以外の任意の名前空間のリソースを伝搬することもできます。 リソースの伝搬に必要なロールベースアクセス制御 (RBAC) 権限の詳細については、「Fleet インスタンスの RBAC 権限」をご参照ください。

  • PropagationPolicy: このポリシーを使用すると、名前空間全体のリソースを伝搬できます。 ポリシーで指定された名前空間のリソースのみが伝搬されます。

次のセクションでは、静的重み付けに基づいてアプリケーションを伝搬する PropagationPolicy を例として、伝搬ポリシーの構成方法について説明します。

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。
      - cxxxxx # クラスターの ID。
    replicaScheduling:
      replicaSchedulingType: Divided
      replicaDivisionPreference: Weighted
      weightPreference:
        staticWeightList:
        - targetCluster:
            clusterNames:
            - cxxxxx
          weight: 2
        - targetCluster:
            clusterNames:
            - cxxxxxx
          weight: 1

パラメーター

パラメーター

必須

説明

apiVersion

はい

API バージョン情報。

値は one.alibabacloud.com/v1alpha1 に固定されています。

kind

はい

ポリシーのタイプ。有効な値: PropagationPolicy および ClusterPropagationPolicy

  • ClusterPropagationPolicy: このポリシーを使用すると、クラスター全体のアプリケーションと、システム予約名前空間以外の任意の名前空間のアプリケーションを伝搬できます。

  • PropagationPolicy: このポリシーを使用すると、ポリシーで指定された名前空間のアプリケーションのみを伝搬できます。

PropagationPolicy

namespace

いいえ

kind パラメーターを PropagationPolicy に設定する場合は、既存の名前空間を指定する必要があります。

demo

name

いいえ

伝搬ポリシーの名前。

policy-xxxx

resourceSelectors

いいえ

伝搬する 1 つ以上の Kubernetes リソースを選択します。詳細については、「resourceSelector」をご参照ください。

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

propagateDeps

いいえ

参照されているリソースを関連付けられているクラスターに自動的に伝搬するかどうかを指定します。たとえば、Deployment が ConfigMap を参照している場合、このパラメーターは ConfigMap が関連付けられているクラスターに同期されるかどうかを決定します。

true

placement

はい

  • clusterAffinity: アプリケーションが伝搬されるクラスターを指定します。詳細については、「clusterAffinity」をご参照ください。

  • replicaScheduling: Deployment や StatefulSet など、ポッドを作成するリソースのスケジューリング ポリシーを指定します。詳細については、「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

いいえ

overridePolicy の依存関係。

リソースの伝搬は、すべての依存 overridePolicy 構成が有効になるまで待機することを示します。

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

failover

いいえ

アプリケーション障害後の failover 動作。

  • decisionConditions:TolerationSeconds: フェールオーバーをトリガーする前に、異常なアプリケーション状態の許容期間 (秒単位) を指定します。

    デフォルト値: 300 秒。

  • purgeMode

    • Immediately: 異常なポッドを強制的にエビクトし、すぐに新しいアプリケーションを作成します。

    • Graciously: グレースフル エビクションを開始します。アプリケーションが猶予期間内に正常な状態に回復した場合、エビクションはキャンセルされます。

    • Never: 自動介入なしで異常なポッドを保持します。

  • gracePeriodSeconds: purgeModeGraciously に設定されている場合、デフォルトでは、強制エビクションの前にアプリケーションが回復する最大待機時間として 600 秒が設定されます。

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

preserveResourcesOnDeletion

はい

ポリシーが削除されたときに、ポリシーによって伝搬されたリソースを保持するかどうかを指定します。

デフォルト値: true

false

resourceSelector

パラメーター

必須

説明

apiVersion

はい

リソース伝搬 API のバージョン。

v1

kind

はい

伝搬するリソースのタイプ。

Deployment

namespace

いいえ

伝搬されるリソースの名前空間。

説明

PropagationPolicy を使用する場合は、パラメーターをポリシーで指定された名前空間に設定します。それ以外の場合は、このパラメーターは有効になりません。

demo

name

いいえ

伝搬されるリソースの名前。

任意の名前

labelSelector

いいえ

ラベル セレクターを使用して、伝搬するリソースを選択します。

  • matchLabels: key-value ペアを指定します。

  • matchExpressions: 配列を指定します。各要素は、keyoperatorvalues パラメーターで構成されます。

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

clusterAffinity

パラメーター

必須

説明

clusterNames

いいえ

リソースを伝搬するクラスターの ID。

clusterNames:
- cxxxx
- cxxxx

excludeClusters

いいえ

除外するクラスターの ID。

excludeClusters:
- cxxxx
- cxxxx

labelSelector

いいえ

ラベル セレクターを使用してクラスターを選択します。

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

replicaScheduling

パラメーター

必須

説明

replicaSchedulingType

いいえ

ポッド スケジューリング ポリシー。有効な値: Duplicated または Divided

  • Duplicated: 各クラスターにポッドを複製します。

  • Divided: 各クラスターの重み付けに基づいてポッドをスケジュールします。すべての関連クラスターのポッドの総数は、Fleet インスタンスのアプリケーションの spec で指定されたポッドの数と等しくなります。

重複

customSchedulingType

いいえ

カスタム スケジューリング方法。ワークロードでは ギャング スケジューリング のみがサポートされています。

Gang

replicaDivisionPreference

いいえ

クラスター間でのポッドの分割方法を指定します。

  • Weighted: 事前に定義された重み付けに基づいてポッドを比例配分します。

  • Aggregated: リソース使用率を最大化するために、スケジューリング スコアの高いクラスターを優先します。

weighted

weightPreference

いいえ

ポッドの伝搬に動的重み付けと静的重み付けのどちらを使用するかを指定します。

  • dynamicWeight: AvailableReplicas は、関連付けられているクラスターのリアルタイム リソース可用性に基づいてポッド割り当てを動的に調整するためにサポートされています。

  • staticWeightList は配列です。各要素は、clusterAffinity および weight パラメーターで構成されます。

    • clusterAffinity: アプリケーションが伝搬されるクラスターを指定します。詳細については、「clusterAffinity」をご参照ください。

    • weight: 選択したクラスターの重みを指定します。値が大きいほど、クラスターにスケジュールされるポッドの数が多いことを示します。

  • 次の例は、Cluster1 の重みが 2、Cluster2 の重みが 1 であることを示しています。ポッドの総数が 3 の場合、2 つのポッドが Cluster1 にスケジュールされ、1 つのポッドが Cluster2 にスケジュールされます。

    weightPreference:
      staticWeightList:
      - targetCluster:
      clusterNames:
      - ${cluster1-id}
      weight: 2
      - targetCluster:
      clusterNames:
      - ${cluster2-id}
      weight: 1
  • 次の例では、dynamicWeight を使用しています。

    weightPreference:
      dynamicWeight: AvailableReplicas

OverridePolicy

アプリケーションの伝搬中、一部のクラスターでは異なる構成が必要になる場合があります。OverridePolicy を使用すると、異なるクラスターに伝搬されるリソースをオーバーライドできます。ClusterOverridePolicyOverridePolicy を定義できます。ClusterOverridePolicyOverridePolicy は、オープンソース プロジェクト Karmada に基づいて設計されており、ClusterOverridePolicy と互換性があります。

および Karmada の OverridePolicy API です。

  • ClusterOverridePolicy: このポリシーを使用すると、PersistentVolumeStorageClassNamespaceCustomResourceDefinition などのクラスター側のリソースをオーバーライドできます。また、システム予約名前空間以外の任意の名前空間のリソースをオーバーライドすることもできます。

  • OverridePolicy: このポリシーを使用すると、名前空間全体のリソースをオーバーライドできます。ポリシーで指定された名前空間のリソースのみをオーバーライドできます。

次のセクションでは、OverridePolicy を例として、オーバーライド ポリシーの構成方法について説明します。

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

パラメーター

パラメーター

必須

説明

apiVersion

はい

API バージョン情報。

値は one.alibabacloud.com/v1alpha1 に固定されています。

kind

はい

オーバーライド ポリシーのタイプ。有効な値: ClusterOverridePolicy および OverridePolicy

  • ClusterOverridePolicy: このポリシーを使用すると、クラスター全体のリソースと、システム予約名前空間以外の任意の名前空間のリソースをオーバーライドできます。

  • OverridePolicy: このポリシーを使用すると、ポリシーで指定された名前空間のリソースのみをオーバーライドできます。

OverridePolicy

namespace

いいえ

kind パラメーターを OverridePolicy に設定する場合は、既存の名前空間を指定する必要があります。

demo

name

はい

オーバーライド ポリシーの名前。

任意の名前

resourceSelectors

はい

resourceSelector 配列。詳細については、「resourceSelector」をご参照ください。

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

overrideRules

はい

ruleWithCluster 配列。詳細については、「ruleWithCluster」をご参照ください。

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

resourceSelector

パラメーター

必須

説明

apiVersion

はい

リソース伝搬 API の apiVersion に設定します。

v1

kind

はい

伝搬するリソースのタイプ。

Deployment

namespace

いいえ

伝搬されるリソースの名前空間。

説明

OverridePolicy を使用する場合は、パラメーターをポリシーで指定された名前空間に設定します。そうでない場合、このパラメーターは有効になりません。

デモ

名前

いいえ

伝達されたリソースの名前。

任意の名前

labelSelector

いいえ

ラベルセレクターを使用して、伝搬するリソースを選択します。

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

clusterAffinity

パラメーター

必須

説明

clusterNames

いいえ

リソースを伝達するクラスターの ID。

clusterNames:
- cxxxx
- cxxxx

excludeClusters

いいえ

除外するクラスターの ID。

excludeClusters:
- cxxxx
- cxxxx

labelSelector

いいえ

ラベルセレクターを使用してクラスターを選択します。

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

ruleWithCluster

パラメーター

必須

説明

targetCluster

はい

clusterAffinity パラメーターに基づいてクラスターを選択します。詳細については、「resourceSelector」をご参照ください。

  clusterAffinity:
      clusterNames:
      -cxxxxx # クラスターの ID です。
      -cxxxxx # クラスターの ID です。

overriders

はい

オーバーライド ルールを含む overriders 配列。有効な値:image および plaintext。詳細については、「overriders」をご参照ください。

  • plaintext: JSONPatch の pathvalue、および operator パラメーターを使用してリソースをオーバーライドできます。

  • imageOverrider: イメージをオーバーライドできます。

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

clusterAffinity

パラメーター

必須

説明

imageOverrider

いいえ

イメージをオーバーライドするために使用されるメソッドです。

  • predicate: オプション。オーバーライドするイメージの パス。例: /spec/template/spec/containers/0/image。このパラメーターを空のままにすると、すべてのイメージがオーバーライドされます。

  • component: イメージをオーバーライドするには、RegistryRepositoryTag のいずれかのメソッドを使用します。イメージは [registry/]repository[:tag] 形式で指定されます。

  • operator: このパラメーターは、removeadd、または replace に設定できます。

  • value: operator パラメーターが replace または add に設定されている場合、値は新規です。

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

plaintext

いいえ

JSONPatch を使用してリソースをオーバーライドします。

  • path: オーバーライドされるフィールドのパス。

  • value: フィールドの値。operator パラメーターが remove に設定されている場合は、このパラメーターを空のままにします。

  • operator: このパラメーターは、removeadd、または replace に設定できます。

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

参考資料

Fleet インスタンスでアプリケーションを作成する方法、および PropagationPolicy または OverridePolicy を設定してアプリケーションを複数のクラスターに伝達する方法の詳細については、「アプリケーション配布の概要」をご参照ください。