Skip to content

Commit 16fbab6

Browse files
authored
[ja] Translate content/en/docs/concepts/scheduling-eviction/pod-scheduling-readiness.md into Japanese (#47011)
* Translate content/en/docs/concepts/scheduling-eviction/pod-scheduling-readiness.md into Japanese * Update content * Update article * Add content/ja/examples/pods * Update article * Update title * Fix style and translation
1 parent d1c85f9 commit 16fbab6

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
title: Podのスケジューリング準備
3+
content_type: concept
4+
weight: 40
5+
---
6+
7+
<!-- overview -->
8+
9+
{{< feature-state for_k8s_version="v1.30" state="stable" >}}
10+
11+
Podは1度作成されると、スケジュールの準備ができたとみなされます。Kubernetesのスケジューラーは、すべての保留中のPodを配置するためにノードを見つけることに最善を尽くします。しかし実際のケースでは、一部のPodが「必要なリソースを満たさない」状態に長期間とどまることがあります。このようなPodは、実際にはスケジューラー(およびCluster AutoScalerのようなダウンストリームのインテグレーター)を不必要に混乱させます。
12+
13+
Podの`.spec.schedulingGates`を指定したり削除したりすることで、Podがスケジューリングの対象になるタイミングを制御できます。
14+
15+
<!-- body -->
16+
17+
## PodにschedulingGatesを設定する
18+
19+
`schedulingGates`のフィールドは、文字列のリストで構成されており、各文字列はPodがスケジューリング可能とみなされる前に満たすべき条件を表します。このフィールドは、Pod作成時のみ初期化できます(クライアントによる作成時、またはアドミッション中の変更時)。作成後、個々のschedulingGateは順序不同で削除できますが、新しいschedulingGateを追加することはできません。
20+
21+
{{< figure src="/docs/images/podSchedulingGates.svg" alt="pod-scheduling-gates-diagram" caption="Pod スケジューリングゲートの図" class="diagram-large" link="https://mermaid.live/edit#pako:eNplkktTwyAUhf8KgzuHWpukaYszutGlK3caFxQuCVMCGSDVTKf_XfKyPlhxz4HDB9wT5lYAptgHFuBRsdKxenFMClMYFIdfUdRYgbiD6ItJTEbR8wpEq5UpUfnDTf-5cbPoJjcbXdcaE61RVJIiqJvQ_Y30D-OCt-t3tFjcR5wZayiVnIGmkv4NiEfX9jijKTmmRH5jf0sRugOP0HyHUc1m6KGMFP27cM28fwSJDluPpNKaXqVJzmFNfHD2APRKSjnNFx9KhIpmzSfhVls3eHdTRrwG8QnxKfEZUUNeYTDBNbiaKRF_5dSfX-BQQQ0FpnEqQLJWhwIX5hyXsjbYl85wTINrgeC2EZd_xFQy7b_VJ6GCdd-itkxALE84dE3fAqXyIUZya6Qqe711OspVCI2ny2Vv35QqVO3-htt66ZWomAvVcZcv8yTfsiSFfJOydZoKvl_ttjLJVlJsblcJw-czwQ0zr9ZeqGDgeR77b2jD8xdtjtDn" >}}
22+
23+
## 使用例
24+
25+
Podがスケジューリングされる準備ができていないと示すには、次のように1つ以上のスケジューリングゲートを使って作成します。
26+
27+
{{% code_sample file="pods/pod-with-scheduling-gates.yaml" %}}
28+
29+
Podの作成後、状態を確認するには以下のようにします。
30+
31+
```bash
32+
kubectl get pod test-pod
33+
```
34+
35+
出力から`SchedulingGated`状態であることがわかります。
36+
37+
```none
38+
NAME READY STATUS RESTARTS AGE
39+
test-pod 0/1 SchedulingGated 0 7s
40+
```
41+
42+
また、`schedulingGates`フィールドから確認することもできます。
43+
44+
```bash
45+
kubectl get pod test-pod -o jsonpath='{.spec.schedulingGates}'
46+
```
47+
48+
出力は以下のようになります。
49+
50+
```none
51+
[{"name":"example.com/foo"},{"name":"example.com/bar"}]
52+
```
53+
54+
このPodがスケジューリング可能であることをスケジューラーに知らせるには、変更したマニフェストを再適用することで、`schedulingGates`を完全に削除できます。
55+
56+
{{% code_sample file="pods/pod-without-scheduling-gates.yaml" %}}
57+
58+
`schedulingGates`が削除されているかどうかは、以下のように確認できます。
59+
60+
```bash
61+
kubectl get pod test-pod -o jsonpath='{.spec.schedulingGates}'
62+
```
63+
64+
出力は、空であることが期待されます。そして、以下のように実行することで最新の状態を確認することができます。
65+
66+
```bash
67+
kubectl get pod test-pod -o wide
68+
```
69+
70+
test-podがCPU/メモリリソースを要求しないため、このPodのステータスは、以前の`SchedulingGated`から`Running`に遷移することが予想されます。
71+
72+
```none
73+
NAME READY STATUS RESTARTS AGE IP NODE
74+
test-pod 1/1 Running 0 15s 10.0.0.4 node-2
75+
```
76+
77+
## 可観測性
78+
79+
`scheduler_pending_pods`メトリックには、Podがスケジューリングされようとしているがスケジューリング不可能とされているのか、それとも明示的にスケジューリングの準備ができておらずマークされているのかを区別する新しいラベル`"gated"`があります。`scheduler_pending_pods{queue="gated"}`でメトリックの結果を確認できます。
80+
81+
## 変更可能なPodのスケジューリング命令
82+
83+
Podにスケジューリングゲートが設定されている間、Podのスケジューリング命令は、一定の制約のもとで変更できます。高いレベルでは、Podのスケジューリング命令を厳格にすることしかできません。言い換えると、更新された命令は、Podが以前マッチしていたノードのサブセットでしかスケジューリングできなくなります。より具体的には、Podのスケジューリング命令を更新するルールは以下のようになります。
84+
85+
1. `.spec.nodeSelector`は、追加のみが許可されます。 存在しない場合は設定が許可されます。
86+
87+
2. `spec.affinity.nodeAffinity`は、空の場合、何でも設定できます。
88+
89+
3. `NodeSelectorTerms`が空の場合、設定が許可されます。 空でない場合は、`matchExpressions`または`fieldExpressions`への`NodeSelectorRequirements`の追加のみが許可され、既存の`matchExpressions`および`fieldExpressions`への変更は許可されません。これは、`.requiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms`の項目がORで結合されるのに対し、`nodeSelectorTerms[].matchExpressions`および`nodeSelectorTerms[].fieldExpressions`の項目はANDで結合されるためです。
90+
91+
4. `.preferredDuringSchedulingIgnoredDuringExecution`は、すべての更新が許可されます。これは、優先項目の権威がないため、ポリシーコントローラーがこれらの項目を検証しないためです。
92+
93+
94+
## {{% heading "whatsnext" %}}
95+
96+
* 詳しくは[PodSchedulingReadiness KEP](https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/3521-pod-scheduling-readiness)をお読みください。
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: test-pod
5+
spec:
6+
schedulingGates:
7+
- name: example.com/foo
8+
- name: example.com/bar
9+
containers:
10+
- name: pause
11+
image: registry.k8s.io/pause:3.6
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: test-pod
5+
spec:
6+
containers:
7+
- name: pause
8+
image: registry.k8s.io/pause:3.6

0 commit comments

Comments
 (0)