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
: このポリシーを使用すると、PersistentVolume
、StorageClass
、Namespace
、CustomResourceDefinition
などのクラスター全体のリソースを伝搬できます。 また、システム予約名前空間以外の任意の名前空間のリソースを伝搬することもできます。 リソースの伝搬に必要なロールベースアクセス制御 (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 バージョン情報。 | 値は |
kind | はい | ポリシーのタイプ。有効な値:
| PropagationPolicy |
namespace | いいえ |
| demo |
name | いいえ | 伝搬ポリシーの名前。 | policy-xxxx |
resourceSelectors | いいえ | 伝搬する 1 つ以上の Kubernetes リソースを選択します。詳細については、「resourceSelector」をご参照ください。 |
|
propagateDeps | いいえ | 参照されているリソースを関連付けられているクラスターに自動的に伝搬するかどうかを指定します。たとえば、Deployment が ConfigMap を参照している場合、このパラメーターは ConfigMap が関連付けられているクラスターに同期されるかどうかを決定します。 | true |
placement | はい |
|
|
dependentOverrides | いいえ |
リソースの伝搬は、すべての依存 |
|
failover | いいえ | アプリケーション障害後の
|
|
preserveResourcesOnDeletion | はい | ポリシーが削除されたときに、ポリシーによって伝搬されたリソースを保持するかどうかを指定します。 デフォルト値: | false |
resourceSelector
パラメーター | 必須 | 説明 | 例 |
apiVersion | はい | リソース伝搬 API のバージョン。 | v1 |
kind | はい | 伝搬するリソースのタイプ。 | Deployment |
namespace | いいえ | 伝搬されるリソースの名前空間。 説明
| demo |
name | いいえ | 伝搬されるリソースの名前。 | 任意の名前 |
labelSelector | いいえ | ラベル セレクターを使用して、伝搬するリソースを選択します。
|
|
clusterAffinity
パラメーター | 必須 | 説明 | 例 |
clusterNames | いいえ | リソースを伝搬するクラスターの ID。 |
|
excludeClusters | いいえ | 除外するクラスターの ID。 |
|
labelSelector | いいえ | ラベル セレクターを使用してクラスターを選択します。 |
|
replicaScheduling
パラメーター | 必須 | 説明 | 例 |
replicaSchedulingType | いいえ | ポッド スケジューリング ポリシー。有効な値:
| 重複 |
customSchedulingType | いいえ | カスタム スケジューリング方法。ワークロードでは ギャング スケジューリング のみがサポートされています。 | Gang |
replicaDivisionPreference | いいえ | クラスター間でのポッドの分割方法を指定します。
| weighted |
weightPreference | いいえ | ポッドの伝搬に動的重み付けと静的重み付けのどちらを使用するかを指定します。
|
|
OverridePolicy
アプリケーションの伝搬中、一部のクラスターでは異なる構成が必要になる場合があります。OverridePolicy を使用すると、異なるクラスターに伝搬されるリソースをオーバーライドできます。ClusterOverridePolicy
と OverridePolicy
を定義できます。ClusterOverridePolicy
と OverridePolicy
は、オープンソース プロジェクト Karmada に基づいて設計されており、ClusterOverridePolicy
と互換性があります。
および Karmada の OverridePolicy
API です。
ClusterOverridePolicy
: このポリシーを使用すると、PersistentVolume
、StorageClass
、Namespace
、CustomResourceDefinition
などのクラスター側のリソースをオーバーライドできます。また、システム予約名前空間以外の任意の名前空間のリソースをオーバーライドすることもできます。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 バージョン情報。 | 値は |
kind | はい | オーバーライド ポリシーのタイプ。有効な値:
| OverridePolicy |
namespace | いいえ |
| demo |
name | はい | オーバーライド ポリシーの名前。 | 任意の名前 |
resourceSelectors | はい | resourceSelector 配列。詳細については、「resourceSelector」をご参照ください。 |
|
overrideRules | はい | ruleWithCluster 配列。詳細については、「ruleWithCluster」をご参照ください。 |
|
resourceSelector
パラメーター | 必須 | 説明 | 例 |
apiVersion | はい | リソース伝搬 API の | v1 |
kind | はい | 伝搬するリソースのタイプ。 | Deployment |
namespace | いいえ | 伝搬されるリソースの名前空間。 説明
| デモ |
名前 | いいえ | 伝達されたリソースの名前。 | 任意の名前 |
labelSelector | いいえ | ラベルセレクターを使用して、伝搬するリソースを選択します。 |
|
clusterAffinity
パラメーター | 必須 | 説明 | 例 |
clusterNames | いいえ | リソースを伝達するクラスターの ID。 |
|
excludeClusters | いいえ | 除外するクラスターの ID。 |
|
labelSelector | いいえ | ラベルセレクターを使用してクラスターを選択します。 |
|
ruleWithCluster
パラメーター | 必須 | 説明 | 例 |
targetCluster | はい |
|
|
overriders | はい | オーバーライド ルールを含む
|
|
clusterAffinity
パラメーター | 必須 | 説明 | 例 |
imageOverrider | いいえ | イメージをオーバーライドするために使用されるメソッドです。
|
|
plaintext | いいえ | JSONPatch を使用してリソースをオーバーライドします。
|
|
参考資料
Fleet インスタンスでアプリケーションを作成する方法、および PropagationPolicy または OverridePolicy を設定してアプリケーションを複数のクラスターに伝達する方法の詳細については、「アプリケーション配布の概要」をご参照ください。