topologySpreadConstraints パラメーター
topologySpreadConstraints パラメータを使用して、ポッドをノードに均等に分散させるための Topology Spread Constraints 定義のリストを定義します。
このパラメータを定義すると、リージョン、ゾーン、ノード、およびその他のユーザー定義トポロジードメインなどの障害ドメイン間で、クラスタ全体にどのようにポッドが広がるかを制御できます。 サーバー構成が定義されている場合、Operator は事前に定義された制約セットから引き出し、それらを管理ワークロードのポッド仕様に統合します。
次のYAMLスニペットは、 topologySpreadConstraints のスキーマのサンプルです:
spec:
topologySpreadConstraints:
- name: constraint1
maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: sip
matchLabelKeys:
- type
minDomains: 3
- name: constraint2
maxSkew: 2
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
以下の表は、 SIPEnvironmentの
topologySpreadConstraints パラメータに適用されるプロパティについて説明したものである。 詳細については、「 ポッドトポロジースプレッド制約 」を参照してください。| プロパティー | デフォルト値 | 値タイプ | 必須 | 説明 |
|---|---|---|---|---|
name |
ストリング | はい | Topology Spread Constraintの名前を指定します。 | |
maxSkew |
整数 | はい | ポッドの偏在の程度を指定する。 これは必須のプロパティであり、その値はゼロより大きくなければならない。 | |
minDomains |
整数 | いいえ | 対象となるドメインの最小数を指定します。 | |
topologyKey |
ストリング | はい | ノード・ラベルのキーを指定する。 | |
whenUnsatisfiable |
ストリング | はい | このプロパティを指定して、ポッドがスプレッド制約を満たさない場合の処理方法を決定する。 | |
labelSelector |
ストリング | いいえ | 一致するポッドを検索するには、このプロパティを指定します。 | |
matchLabelKeys |
ストリング | いいえ | ポッドラベルキーのリストを指定して、広がりを計算するポッドを選択する。 | |
nodeAffinityPolicy |
ストリング | いいえ | ポッドのトポロジースプレッドスキューを計算するときに、ポッドの nodeAffinity または nodeSelector をどのように扱うかを決定するには、このプロパティを指定する。 許可される値は Honor または Ignore である。 |
|
nodeTaintsPolicy |
ストリング | いいえ | このプロパティを指定すると、ポッドのトポロジースプレッドスキューを計算する際に、ノードのテイントをどのように扱うかを決定することができる。 許可される値は Honor または Ignore である。 |
サーバーからトポロジー拡散制約を呼び出す例
例 1
次の例では、 topologySpreadConstraints を定義し、 ApiSupplies と ApiDemands からのすべてのポッドが、 matchLabelKeys を使用して、均等に独立して広がる方法を示しています。
- SIPEnvironment カスタムリソースで
topologySpreadConstraints。spec: topologySpreadConstraints: - name: constraint1 maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: app: sip matchLabelKeys: type - 個々のサーバーまたはサービスグループのカスタムリソースから、手順1で定義したトポロジーを呼び出します。
appServers: - active: true names: - ApiSupplies podLabels: app: sip type: appserver1 topology: - [constraint1] - active: true names: - ApiDemands podLabels: app: sip type: appserver2 topology: - [constraint1]
例 2
次の例は、 topologySpreadConstraints を定義し、 ApiSupplies と ApiDemands のすべてのポッドが一緒に広がるように使用する方法を示しています。
- SIPEnvironment カスタムリソースで
topologySpreadConstraints。spec: topologySpreadConstraints: - name: constraint1 maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: app: sip - 個々のサーバーまたはサービスグループのカスタムリソースから、手順1で定義したトポロジーを呼び出します。
appServers: - active: true names: - ApiSupplies podLabels: app: sip type: appserver1 topology: - [constraint1] - active: true names: - ApiDemands podLabels: app: sip type: appserver2 topology: - [constraint1]