@@ -31,7 +31,7 @@ Kubernetesが特定のPodの配置場所を選択するために、以下の方
31
31
例えば、` kubernetes.io/hostname ` の値はある環境ではNode名と同じになり、他の環境では異なる値になることがあります。
32
32
{{</note >}}
33
33
34
- ### Nodeの分離/制限
34
+ ### Nodeの分離/制限 {#node-isolation-restriction}
35
35
36
36
Nodeにラベルを追加することで、Podを特定のNodeまたはNodeグループ上でのスケジューリングの対象にすることができます。この機能を使用すると、特定のPodが一定の独立性、安全性、または規制といった属性を持ったNode上でのみ実行されるようにすることができます。
37
37
@@ -109,7 +109,7 @@ Podのspec(仕様)にある`.spec.affinity.nodeAffinity`フィールドを使用
109
109
110
110
詳細については[ Nodeアフィニティを利用してPodをNodeに割り当てる] ( /ja/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/ ) を参照してください。
111
111
112
- #### Nodeアフィニティの重み
112
+ #### Nodeアフィニティの重み {#node-affinity-weight}
113
113
114
114
` preferredDuringSchedulingIgnoredDuringExecution ` アフィニティタイプの各インスタンスに、1から100の範囲の` weight ` を指定できます。
115
115
Podの他のスケジューリング要件をすべて満たすNodeを見つけると、スケジューラーはそのNodeが満たすすべての優先ルールを繰り返し実行し、対応する式の` weight ` 値を合計に加算します。
@@ -160,7 +160,7 @@ profiles:
160
160
[DaemonSetのPodを作成する](/ja/docs/concepts/workloads/controllers/daemonset/#scheduled-by-default-scheduler)DaemonSetコントローラーは、スケジューリングプロファイルをサポートしていません。DaemonSetコントローラーがPodを作成すると、デフォルトのKubernetesスケジューラーがそれらのPodを配置し、DaemonSetコントローラーの`nodeAffinity`ルールに優先して従います。
161
161
{{< /note >}}
162
162
163
- # ## Pod間のアフィニティとアンチアフィニティ
163
+ # ## Pod間のアフィニティとアンチアフィニティ {#inter-pod-affinity-and-anti-affinity}
164
164
165
165
Pod間のアフィニティとアンチアフィニティは、Nodeのラベルではなく、すでにNode上で稼働している**Pod**のラベルに従って、PodがどのNodeにスケジュールされるかを制限できます。
166
166
@@ -181,7 +181,7 @@ Podのアンチアフィニティは、Nodeに必ず一貫性の持つラベル
181
181
一部、または全部のNodeに`topologyKey`ラベルが指定されていない場合、意図しない挙動に繋がる可能性があります。
182
182
{{< /note >}}
183
183
184
- # ### Pod間のアフィニティとアンチアフィニティの種類
184
+ # ### Pod間のアフィニティとアンチアフィニティの種類 {#types-of-inter-pod-affinity-and-anti-affinity}
185
185
186
186
[Nodeアフィニティ](#node-affinity)と同様に、Podアフィニティとアンチアフィニティにも下記の2種類があります:
187
187
@@ -217,14 +217,14 @@ Podアフィニティとアンチアフィニティの`operator`フィールド
217
217
218
218
` labelSelector` と`topologyKey`に加え、`labelSelector`と`topologyKey`と同じレベルの`namespaces`フィールドを使用して、`labelSelector`が合致すべき名前空間のリストを任意に指定することができます。省略または空の場合、`namespaces`がデフォルトで、アフィニティとアンチアフィニティが定義されたPodの名前空間に設定されます。
219
219
220
- # ### 名前空間セレクター
220
+ # ### 名前空間セレクター {#namespace-selector}
221
221
{{< feature-state for_k8s_version="v1.24" state="stable" >}}
222
222
223
223
` namespaceSelector` を使用し、ラベルで名前空間の集合に対して検索することによって、名前空間を選択することができます。
224
224
アフィニティ項は`namespaceSelector`と`namespaces`フィールドによって選択された名前空間に適用されます。
225
225
要注意なのは、空の`namespaceSelector`({})はすべての名前空間にマッチし、nullまたは空の`namespaces`リストとnullの`namespaceSelector`は、ルールが定義されているPodの名前空間にマッチします。
226
226
227
- # ### 実践的なユースケース
227
+ # ### 実践的なユースケース {#more-practical-use-cases}
228
228
229
229
Pod間アフィニティとアンチアフィニティは、ReplicaSet、StatefulSet、Deploymentなどのより高レベルなコレクションと併せて使用するとさらに有用です。これらのルールにより、ワークロードのセットが同じ定義されたトポロジーに併置されるように設定できます。たとえば、2つの関連するPodを同じNodeに配置することが好ましい場合です。
230
230
@@ -315,7 +315,7 @@ spec:
315
315
Podアンチアフィニティを使用する理由は他にもあります。
316
316
この例と同様の方法で、アンチアフィニティを用いて高可用性を実現したStatefulSetの使用例は[ZooKeeperチュートリアル](/docs/tutorials/stateful-application/zookeeper/#tolerating-node-failure)を参照してください。
317
317
318
- # # nodeName
318
+ # # nodeName {#nodename}
319
319
320
320
` nodeName` はアフィニティや`nodeSelector`よりも直接的なNode選択形式になります。`nodeName`はPod仕様(spec)内のフィールドです。`nodeName`フィールドが空でない場合、スケジューラーはPodを考慮せずに、指定されたNodeにあるkubeletがそのNodeにPodを配置しようとします。`nodeName`を使用すると、`nodeSelector`やアフィニティおよびアンチアフィニティルールを使用するよりも優先されます。
321
321
0 commit comments