Skip to content

Commit 223fa83

Browse files
youmeimbells17
andauthored
[ja] Translate resize-container-resources.md into Japanese (#48921)
* [ja] Translate docs/tasks/configure-pod-container/resize-container-resources.md into Japanese * Update content/ja/docs/tasks/configure-pod-container/resize-container-resources.md fixed uncertain description Co-authored-by: bells17 * Update content/ja/docs/tasks/configure-pod-container/resize-container-resources.md added newline to meet style guide (https://kubernetes.io/ja/docs/contribute/localization/#style-guide) Co-authored-by: bells17 * added newline characters to content/ja/docs/tasks/configure-pod-container/resize-container-resources.md To meet the translation style guide (https://kubernetes.io/ja/docs/contribute/localization/#style-guide) * added a missing newline characters to content/ja/docs/tasks/configure-pod-container/resize-container-resources.md To meet the translation style guide (https://kubernetes.io/ja/docs/contribute/localization/#style-guide) --------- Co-authored-by: bells17
1 parent 0af6b58 commit 223fa83

File tree

2 files changed

+261
-0
lines changed

2 files changed

+261
-0
lines changed
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
---
2+
title: コンテナに割り当てるCPUとメモリ容量を変更する
3+
content_type: task
4+
weight: 30
5+
min-kubernetes-server-version: 1.27
6+
---
7+
8+
9+
10+
11+
{{< feature-state feature_gate_name="InPlacePodVerticalScaling" >}}
12+
13+
このページは[Quality of Service](/ja/docs/tasks/configure-pod-container/quality-service-pod/)に馴染みのある読者を前提としています。
14+
15+
このページでは、稼働中のPodやコンテナを再起動することなく、コンテナに割り当てられるCPUやメモリ容量を変更(リサイズ)するための方法を示します。
16+
Kubernetesノードは、PodのContainerに指定した`requests`に基づいてPodにリソースを割り当て、`limits`に基づいてPodのリソース使用量を制限します。
17+
18+
稼働中のPodのリソース割当を変更するには、 `InPlacePodVerticalScaling` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を有効化する必要があります。
19+
代替手法としては、Podを削除した上で、異なるリソース要求を有するPodを[ワークロードコントローラー](/ja/docs/concepts/workloads/controllers/) に作成させることもできます。
20+
21+
稼働中のPodのリソースを変更するために
22+
23+
- Containerの `requests``limits` はCPUおよびメモリリソースに対して _可変_ なものとなっています。
24+
- Podステータスの `containerStatuses` における `allocatedResources` フィールドは、PodのContainerに割り当てられたリソースを反映します。
25+
- Podステータスの `containerStatuses` における `resources` フィールドは、稼働中Containerに設定済みの実際のリソース要求(`requests`)とリソース制限(`limits`)を反映しており、これらの値はコンテナランタイムが通知したものです。
26+
- Podステータスの `resize` フィールドは直前の適用待ちのリサイズ要求を示します。
27+
このフィールドの値には次のようなものがあります。
28+
- `Proposed`: リサイズ要求の受理を表し、リクエストが検証済みかつ記録済み
29+
であることを示します。
30+
- `InProgress`: リサイズ要求がノードによって受理され、Podのコンテナに対する
31+
適用が進行中であることを示します。
32+
- `Deferred`: リサイズ要求が現時点では通っていないことを示します。
33+
他のPodが除去されてノードの資源が開放されたら、リサイズが承認されるかもしれません。
34+
- `Infeasible`: ノードがリサイズ要求に対応できないことを示すシグナルです。
35+
Podに対してノードが割り当て可能なリソースの最大値を上回るリサイズ要求がある時に
36+
発生する可能性があります。
37+
38+
39+
## {{% heading "prerequisites" %}}
40+
41+
42+
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
43+
44+
クラスターのコントロールプレーンを含む全ノードで`InPlacePodVerticalScaling` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効化されている必要があります。
45+
46+
## コンテナリサイズポリシー
47+
48+
リサイズポリシーはPodにおけるコンテナのCPUやメモリリソースを取り扱うためのきめ細かい制御を可能にします。
49+
例えば、アプリケーションを再起動せずにコンテナのCPUリソースのリサイズを行える場合でも、メモリのリサイズについてはアプリケーションとコンテナの再起動が必要となる場合があります。
50+
51+
これを実現するために、ユーザーはContainerの仕様に `resizePolicy` を指定できるようになっています。
52+
以下の再起動ポリシーをCPUやメモリのリサイズの際に指定できます。
53+
* `NotRequired`: 稼働中のコンテナリソースをリサイズします。
54+
* `RestartContainer`: コンテナを再起動させ、再起動時に新しいリソースを適用します。
55+
56+
`resizePolicy[*].restartPolicy` が指定されない場合のデフォルトは、`NotRequired`です。
57+
58+
{{< note >}}
59+
Podの`restartPolicy``Never`である場合、Podの全コンテナの再起動ポリシーが`NotRequired`である必要があります。
60+
{{< /note >}}
61+
62+
以下のPodの例は、ContainerのCPUのリサイズは再起動なしで実施させ、メモリのリサイズにはコンテナの再起動を要求するものです。
63+
64+
```yaml
65+
apiVersion: v1
66+
kind: Pod
67+
metadata:
68+
name: qos-demo-5
69+
namespace: qos-example
70+
spec:
71+
containers:
72+
- name: qos-demo-ctr-5
73+
image: nginx
74+
resizePolicy:
75+
- resourceName: cpu
76+
restartPolicy: NotRequired
77+
- resourceName: memory
78+
restartPolicy: RestartContainer
79+
resources:
80+
limits:
81+
memory: "200Mi"
82+
cpu: "700m"
83+
requests:
84+
memory: "200Mi"
85+
cpu: "700m"
86+
```
87+
88+
{{< note >}}
89+
この例の requests ないしは limits が CPUとメモリの _両方を_ 変化させる場合、
90+
メモリのリサイズが生じるので、コンテナは再起動します。
91+
{{< /note >}}
92+
93+
94+
95+
## リソース要求やリソース制限のあるPodを作成する
96+
97+
リソース要求やリソース制限をPodのコンテナに指定することで、保証(Guaranteed)ないしは バースト可能(Burstable)な[Quality of Service](/ja/docs/tasks/configure-pod-container/quality-service-pod/)クラスのPodを作成することができます。
98+
99+
次のような単一のコンテナを含むPodのマニフェストを考えてみましょう。
100+
101+
{{% code_sample file="pods/qos/qos-pod-5.yaml" %}}
102+
103+
Podを`qos-example` Namespace に作成します。
104+
105+
```shell
106+
kubectl create namespace qos-example
107+
kubectl create -f https://k8s.io/examples/pods/qos/qos-pod-5.yaml
108+
```
109+
110+
このPodは保証QoSクラスに区分され、700mのCPU、200Miのメモリを要求します。
111+
112+
Podの詳細な情報を見てみましょう。
113+
114+
```shell
115+
kubectl get pod qos-demo-5 --output=yaml --namespace=qos-example
116+
```
117+
`resizePolicy[*].restartPolicy`の値がデフォルトの`NotRequired`になっていることに気づいたでしょうか。
118+
これはCPUとメモリがコンテナ稼働中にリサイズできることを示しています。
119+
120+
```yaml
121+
spec:
122+
containers:
123+
...
124+
resizePolicy:
125+
- resourceName: cpu
126+
restartPolicy: NotRequired
127+
- resourceName: memory
128+
restartPolicy: NotRequired
129+
resources:
130+
limits:
131+
cpu: 700m
132+
memory: 200Mi
133+
requests:
134+
cpu: 700m
135+
memory: 200Mi
136+
...
137+
containerStatuses:
138+
...
139+
name: qos-demo-ctr-5
140+
ready: true
141+
...
142+
allocatedResources:
143+
cpu: 700m
144+
memory: 200Mi
145+
resources:
146+
limits:
147+
cpu: 700m
148+
memory: 200Mi
149+
requests:
150+
cpu: 700m
151+
memory: 200Mi
152+
restartCount: 0
153+
started: true
154+
...
155+
qosClass: Guaranteed
156+
```
157+
158+
159+
## Podのリソースを更新する
160+
161+
要求CPUを0.8CPUに増やしてみます。
162+
これは手動でも指定できますし、[VerticalPodAutoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#readme)(VPA)などを用いて自動的に検出/適用することもできます。
163+
164+
{{< note >}}
165+
Podのリソース要求やリソース制限を変更して希望の容量に合わせることはできますが、Pod作成時に指定したQoSクラスを変更することはできません。
166+
{{< /note >}}
167+
168+
PodのContainerのCPU要求とCPU制限をいずれも`800m`に指定するパッチを当ててみます。
169+
170+
```shell
171+
kubectl -n qos-example patch pod qos-demo-5 --patch '{"spec":{"containers":[{"name":"qos-demo-ctr-5", "resources":{"requests":{"cpu":"800m"}, "limits":{"cpu":"800m"}}}]}}'
172+
```
173+
174+
Podへのパッチが当たったら、Podの詳細情報を参照してみましょう。
175+
176+
```shell
177+
kubectl get pod qos-demo-5 --output=yaml --namespace=qos-example
178+
```
179+
180+
以下のPod仕様は更新済みのCPU要求とCPU制限を反映しています。
181+
182+
```yaml
183+
spec:
184+
containers:
185+
...
186+
resources:
187+
limits:
188+
cpu: 800m
189+
memory: 200Mi
190+
requests:
191+
cpu: 800m
192+
memory: 200Mi
193+
...
194+
containerStatuses:
195+
...
196+
allocatedResources:
197+
cpu: 800m
198+
memory: 200Mi
199+
resources:
200+
limits:
201+
cpu: 800m
202+
memory: 200Mi
203+
requests:
204+
cpu: 800m
205+
memory: 200Mi
206+
restartCount: 0
207+
started: true
208+
```
209+
210+
期待する新しいCPU要求を反映する形で `allocatedResources` の値が更新されていることを確認しておきましょう。
211+
これはノードがCPUリソースの追加要求に対応できたことを示しています。
212+
213+
Containerの状態においてはCPUリソースの値が更新されており、新しいCPUリソースが適用されたことを示しています。
214+
Containerの`restartCount`は変化しておらず、コンテナのCPUリソースがコンテナの再起動なしで変更されたことを示しています。
215+
216+
## クリーンアップ
217+
218+
名前空間を削除しましょう。
219+
220+
```shell
221+
kubectl delete namespace qos-example
222+
```
223+
224+
## {{% heading "whatsnext" %}}
225+
226+
227+
### アプリケーション開発者向け
228+
229+
* [コンテナおよびPodへのメモリーリソースの割り当て](/ja/docs/tasks/configure-pod-container/assign-memory-resource/)
230+
231+
* [コンテナおよびPodへのCPUリソースの割り当て](/ja/docs/tasks/configure-pod-container/assign-cpu-resource/)
232+
233+
### クラスター管理者向け
234+
235+
* [Namespaceのデフォルトのメモリー要求と制限を設定する](/ja/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)
236+
237+
* [NamespaceのデフォルトのCPU要求と制限を設定する](/docs/tasks/administer-cluster/manage-resources/cpu-default-namespace/)
238+
239+
* [Namespaceに対する最小および最大メモリー制約の構成](/ja/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/)
240+
241+
* [Namespaceに対する最小および最大CPU制約の構成](/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/)
242+
243+
* [Namespaceに対するメモリとCPUのクォータを設定する](/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/)
244+
245+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: qos-demo-5
5+
namespace: qos-example
6+
spec:
7+
containers:
8+
- name: qos-demo-ctr-5
9+
image: nginx
10+
resources:
11+
limits:
12+
memory: "200Mi"
13+
cpu: "700m"
14+
requests:
15+
memory: "200Mi"
16+
cpu: "700m"

0 commit comments

Comments
 (0)