Skip to content

Commit 6530f1d

Browse files
authored
Merge pull request #36682 from ziyi-xie/update-initcon
[ja] Updated /content/ja/docs/concepts/workloads/pods/init-containers.md file
2 parents cf5a889 + 131db82 commit 6530f1d

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

content/ja/docs/concepts/workloads/pods/init-containers.md

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ Initコンテナは下記の項目をのぞいて、通常のコンテナと全
2222

2323
もしあるPodの単一のInitコンテナが失敗した場合、Kubeletは成功するまで何度もそのInitコンテナを再起動します。しかし、もしそのPodの`restartPolicy`がNeverで、そのPodの起動時にInitコンテナが失敗した場合、KubernetesはそのPod全体を失敗として扱います。
2424

25-
PodにInitコンテナを指定するためには、Podの仕様にそのアプリケーションの`containers`配列と並べて、`initContainers`フィールドを[Container](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core)型のオブジェクトの配列として指定してください。
25+
PodにInitコンテナを指定するためには、[Podの仕様](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec)`initContainers`フィールドを`container`アイテムの配列として追加してください(アプリケーションの`containers`フィールドとそのコンテンツに似ています)。
26+
詳細については、APIリファレンスの[Container](/docs/reference/kubernetes-api/workload-resources/pod-v1/#Container)を参照してください。
27+
28+
2629
Initコンテナのステータスは、`.status.initContainerStatuses`フィールドにコンテナのステータスの配列として返されます(`.status.containerStatuses`と同様)。
2730

2831
### 通常のコンテナとの違い {#differences-from-regular-containers}
@@ -77,7 +80,7 @@ kind: Pod
7780
metadata:
7881
name: myapp-pod
7982
labels:
80-
app: myapp
83+
app.kubernetes.io/name: MyApp
8184
spec:
8285
containers:
8386
- name: myapp-container
@@ -97,6 +100,7 @@ spec:
97100
```shell
98101
kubectl apply -f myapp.yaml
99102
```
103+
実行結果は下記のようになります。
100104
```
101105
pod/myapp-pod created
102106
```
@@ -105,6 +109,7 @@ pod/myapp-pod created
105109
```shell
106110
kubectl get -f myapp.yaml
107111
```
112+
実行結果は下記のようになります。
108113
```
109114
NAME READY STATUS RESTARTS AGE
110115
myapp-pod 0/1 Init:0/2 0 6m
@@ -114,11 +119,12 @@ myapp-pod 0/1 Init:0/2 0 6m
114119
```shell
115120
kubectl describe -f myapp.yaml
116121
```
122+
実行結果は下記のようになります。
117123
```
118124
Name: myapp-pod
119125
Namespace: default
120126
[...]
121-
Labels: app=myapp
127+
Labels: app.kubernetes.io/name=MyApp
122128
Status: Pending
123129
[...]
124130
Init Containers:
@@ -187,6 +193,7 @@ spec:
187193
```shell
188194
kubectl apply -f services.yaml
189195
```
196+
実行結果は下記のようになります。
190197
```
191198
service/myservice created
192199
service/mydb created
@@ -196,36 +203,42 @@ Initコンテナが完了し、`myapp-pod`というPodがRunning状態に移行
196203
197204
```shell
198205
kubectl get -f myapp.yaml
206+
```
207+
実行結果は下記のようになります。
208+
```
199209
NAME READY STATUS RESTARTS AGE
200210
myapp-pod 1/1 Running 0 9m
201211
```
202212

203-
このシンプルな例を独自のInitコンテナを作成する際の参考にしてください。[次の項目](#whats-next)にさらに詳細な使用例に関するリンクがあります。
213+
このシンプルな例を独自のInitコンテナを作成する際の参考にしてください。[次の項目](#what-s-next)にさらに詳細な使用例に関するリンクがあります。
204214

205215
## Initコンテナのふるまいに関する詳細 {#detailed-behavior}
206216

207-
Podの起動時は各Initコンテナが起動状態となるまで、kubeletはネットワーキングおよびストレージを利用可能な状態にしません。また、kubeletはPodのspecに定義された順番に従ってPodのInitコンテナを起動します。各Initコンテナは次のInitコンテナが起動する前に正常に終了しなくてはなりません。もしあるInitコンテナがランタイムもしくはエラーにより起動失敗した場合、そのPodの`restartPolicy`の値に従ってリトライされます。しかし、もしPodの`restartPolicy``Always`に設定されていた場合、Initコンテナの`restartPolicy``OnFailure`が適用されます。
217+
Podの起動時に、kubeletはネットワークおよびストレージの準備が整うまで、Initコンテナを実行可能な状態にしません。また、kubeletはPodのspecに定義された順番に従ってPodのInitコンテナを起動します。
218+
219+
各Initコンテナは次のInitコンテナが起動する前に正常に終了しなくてはなりません。もしあるInitコンテナがランタイムにより起動失敗した場合、もしくはエラーで終了した場合、そのPodの`restartPolicy`の値に従ってリトライされます。しかし、もしPodの`restartPolicy``Always`に設定されていた場合、Initコンテナの`restartPolicy``OnFailure`が適用されます。
208220

209221
Podは全てのInitコンテナが完了するまで`Ready`状態となりません。Initコンテナ上のポートはServiceによって集約されません。初期化中のPodのステータスは`Pending`となりますが、`Initialized`という値はtrueとなります。
210222

211-
もしそのPodが[再起動](#pod-restart-reasons)されたとき、全てのInitコンテナは必ず再度実行されます。
223+
もしそのPodを[再起動](#pod-restart-reasons)するとき、または再起動されたとき、全てのInitコンテナは必ず再度実行されます。
212224

213225
Initコンテナの仕様の変更は、コンテナイメージのフィールドのみに制限されています。
214226
Initコンテナのイメージフィールド値を変更すると、そのPodは再起動されます。
215227

216-
Initコンテナは何度も再起動およびリトライ可能なため、べき等(Idempotent)である必要があります。特に、`EmptyDirs`にファイルを書き込むコードは、書き込み先のファイルがすでに存在している可能性を考慮に入れる必要があります。
228+
Initコンテナは何度も再起動、リトライおよび再実行可能なため、べき等(Idempotent)である必要があります。特に、`EmptyDirs`にファイルを書き込むコードは、書き込み先のファイルがすでに存在している可能性を考慮に入れる必要があります。
217229

218230
Initコンテナはアプリケーションコンテナの全てのフィールドを持っています。しかしKubernetesは、Initコンテナが完了と異なる状態を定義できないため`readinessProbe`が使用されることを禁止しています。これはバリデーションの際に適用されます。
219231

220-
Initコンテナがずっと失敗し続けたままの状態を防ぐために、Podに`activeDeadlineSeconds`を、コンテナに`livenessProbe`をそれぞれ設定してください。`activeDeadlineSeconds`の設定はInitコンテナが実行中の時間にも適用されます。
232+
Initコンテナがずっと失敗し続けたままの状態を防ぐために、Podに`activeDeadlineSeconds`を設定してください。`activeDeadlineSeconds`の設定はInitコンテナが実行中の時間にも適用されます。しかし`activeDeadlineSeconds`はInitコンテナが終了した後でも効果があるため、チームがアプリケーションをJobとしてデプロイする場合にのみ使用することが推奨されています。
233+
すでに正しく動作しているPodは`activeDeadlineSeconds`を設定すると強制終了されます。
221234

222235
Pod内の各アプリケーションコンテナとInitコンテナの名前はユニークである必要があります。他のコンテナと同じ名前を共有していた場合、バリデーションエラーが返されます。
223236

224237
### リソース {#resources}
225238

226239
Initコンテナの順序と実行を考えるとき、リソースの使用に関して下記のルールが適用されます。
227240

228-
* 全てのInitコンテナの中で定義された最も高いリソースリクエストとリソースリミットが、*有効なinitリクエスト/リミット* になります。
241+
* 全てのInitコンテナの中で定義された最も高いリソースリクエストとリソースリミットが、*有効なinitリクエスト/リミット* になります。いずれかのリソースでリミットが設定されていない場合、これが最上級のリミットとみなされます。
229242
* Podのリソースの*有効なリクエスト/リミット* は、下記の2つの中のどちらか高い方となります。
230243
* リソースに対する全てのアプリケーションコンテナのリクエスト/リミットの合計
231244
* リソースに対する有効なinitリクエスト/リミット
@@ -240,12 +253,12 @@ Podレベルのコントロールグループ(cgroups)は、スケジューラ
240253

241254
以下の理由によりPodは再起動し、Initコンテナの再実行も引き起こす可能性があります。
242255

243-
* ユーザーが、そのPodのInitコンテナのイメージを変更するようにPodの仕様を更新する場合。アプリケーションコンテナのイメージの変更はそのアプリケーションコンテナの再起動のみ行われます。
244256
* そのPodのインフラストラクチャーコンテナが再起動された場合。これはあまり起きるものでなく、Nodeに対するルート権限を持ったユーザーにより行われることがあります。
245-
* `restartPolicy``Always`と設定されているPod内の全てのコンテナが停止され、再起動が行われた場合。およびガーベージコレクションによりInitコンテナの完了記録が失われた場合
257+
* `restartPolicy``Always`と設定されているPod内の全てのコンテナが停止され、強制的に再起動が行われたことで、ガベージコレクションによりInitコンテナの完了記録が失われた場合
246258

259+
Kubernetes v1.20以降では、initコンテナのイメージが変更されたり、ガベージコレクションによってinitコンテナの完了記録が失われたりした場合でも、Podは再起動されません。以前のバージョンを使用している場合は、対応バージョンのドキュメントを参照してください。
247260

248-
## {{% heading "whatsnext" %}}
261+
## {{% heading "whatsnext" %}} {#what-s-next}
249262

250263
* [Initコンテナを含むPodの作成](/docs/tasks/configure-pod-container/configure-pod-initialization/#creating-a-pod-that-has-an-init-container)方法について学ぶ。
251264
* [Initコンテナのデバッグ](/ja/docs/tasks/debug-application-cluster/debug-init-containers/)を行う方法について学ぶ。

0 commit comments

Comments
 (0)