[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 <bells171@gmail.com>

* 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 <bells171@gmail.com>

* 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 <bells171@gmail.com>
pull/49204/head
OneSazae 2024-12-22 18:46:10 +09:00 committed by GitHub
parent 0af6b589f2
commit 223fa83950
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 261 additions and 0 deletions

View File

@ -0,0 +1,245 @@
---
title: コンテナに割り当てるCPUとメモリ容量を変更する
content_type: task
weight: 30
min-kubernetes-server-version: 1.27
---
<!-- overview -->
{{< feature-state feature_gate_name="InPlacePodVerticalScaling" >}}
このページは[Quality of Service](/ja/docs/tasks/configure-pod-container/quality-service-pod/)に馴染みのある読者を前提としています。
このページでは、稼働中のPodやコンテナを再起動することなく、コンテナに割り当てられるCPUやメモリ容量を変更(リサイズ)するための方法を示します。
Kubernetesードは、PodのContainerに指定した`requests`に基づいてPodにリソースを割り当て、`limits`に基づいてPodのリソース使用量を制限します。
稼働中のPodのリソース割当を変更するには、 `InPlacePodVerticalScaling` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を有効化する必要があります。
代替手法としては、Podを削除した上で、異なるリソース要求を有するPodを[ワークロードコントローラー](/ja/docs/concepts/workloads/controllers/) に作成させることもできます。
稼働中のPodのリソースを変更するために
- Containerの `requests``limits` はCPUおよびメモリリソースに対して _可変_ なものとなっています。
- Podステータスの `containerStatuses` における `allocatedResources` フィールドは、PodのContainerに割り当てられたリソースを反映します。
- Podステータスの `containerStatuses` における `resources` フィールドは、稼働中Containerに設定済みの実際のリソース要求(`requests`)とリソース制限(`limits`)を反映しており、これらの値はコンテナランタイムが通知したものです。
- Podステータスの `resize` フィールドは直前の適用待ちのリサイズ要求を示します。
このフィールドの値には次のようなものがあります。
- `Proposed`: リサイズ要求の受理を表し、リクエストが検証済みかつ記録済み
であることを示します。
- `InProgress`: リサイズ要求がードによって受理され、Podのコンテナに対する
適用が進行中であることを示します。
- `Deferred`: リサイズ要求が現時点では通っていないことを示します。
他のPodが除去されてードの資源が開放されたら、リサイズが承認されるかもしれません。
- `Infeasible`: ノードがリサイズ要求に対応できないことを示すシグナルです。
Podに対してードが割り当て可能なリソースの最大値を上回るリサイズ要求がある時に
発生する可能性があります。
## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
クラスターのコントロールプレーンを含む全ノードで`InPlacePodVerticalScaling` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効化されている必要があります。
## コンテナリサイズポリシー
リサイズポリシーはPodにおけるコンテナのCPUやメモリリソースを取り扱うためのきめ細かい制御を可能にします。
例えば、アプリケーションを再起動せずにコンテナのCPUリソースのリサイズを行える場合でも、メモリのリサイズについてはアプリケーションとコンテナの再起動が必要となる場合があります。
これを実現するために、ユーザーはContainerの仕様に `resizePolicy` を指定できるようになっています。
以下の再起動ポリシーをCPUやメモリのリサイズの際に指定できます。
* `NotRequired`: 稼働中のコンテナリソースをリサイズします。
* `RestartContainer`: コンテナを再起動させ、再起動時に新しいリソースを適用します。
`resizePolicy[*].restartPolicy` が指定されない場合のデフォルトは、`NotRequired`です。
{{< note >}}
Podの`restartPolicy`が`Never`である場合、Podの全コンテナの再起動ポリシーが`NotRequired`である必要があります。
{{< /note >}}
以下のPodの例は、ContainerのCPUのリサイズは再起動なしで実施させ、メモリのリサイズにはコンテナの再起動を要求するものです。
```yaml
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-5
namespace: qos-example
spec:
containers:
- name: qos-demo-ctr-5
image: nginx
resizePolicy:
- resourceName: cpu
restartPolicy: NotRequired
- resourceName: memory
restartPolicy: RestartContainer
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"
```
{{< note >}}
この例の requests ないしは limits が CPUとメモリの _両方を_ 変化させる場合、
メモリのリサイズが生じるので、コンテナは再起動します。
{{< /note >}}
<!-- steps -->
## リソース要求やリソース制限のあるPodを作成する
リソース要求やリソース制限をPodのコンテナに指定することで、保証(Guaranteed)ないしは バースト可能(Burstable)な[Quality of Service](/ja/docs/tasks/configure-pod-container/quality-service-pod/)クラスのPodを作成することができます。
次のような単一のコンテナを含むPodのマニフェストを考えてみましょう。
{{% code_sample file="pods/qos/qos-pod-5.yaml" %}}
Podを`qos-example` Namespace に作成します。
```shell
kubectl create namespace qos-example
kubectl create -f https://k8s.io/examples/pods/qos/qos-pod-5.yaml
```
このPodは保証QoSクラスに区分され、700mのCPU、200Miのメモリを要求します。
Podの詳細な情報を見てみましょう。
```shell
kubectl get pod qos-demo-5 --output=yaml --namespace=qos-example
```
`resizePolicy[*].restartPolicy`の値がデフォルトの`NotRequired`になっていることに気づいたでしょうか。
これはCPUとメモリがコンテナ稼働中にリサイズできることを示しています。
```yaml
spec:
containers:
...
resizePolicy:
- resourceName: cpu
restartPolicy: NotRequired
- resourceName: memory
restartPolicy: NotRequired
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
containerStatuses:
...
name: qos-demo-ctr-5
ready: true
...
allocatedResources:
cpu: 700m
memory: 200Mi
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
restartCount: 0
started: true
...
qosClass: Guaranteed
```
## Podのリソースを更新する
要求CPUを0.8CPUに増やしてみます。
これは手動でも指定できますし、[VerticalPodAutoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#readme)(VPA)などを用いて自動的に検出/適用することもできます。
{{< note >}}
Podのリソース要求やリソース制限を変更して希望の容量に合わせることはできますが、Pod作成時に指定したQoSクラスを変更することはできません。
{{< /note >}}
PodのContainerのCPU要求とCPU制限をいずれも`800m`に指定するパッチを当ててみます。
```shell
kubectl -n qos-example patch pod qos-demo-5 --patch '{"spec":{"containers":[{"name":"qos-demo-ctr-5", "resources":{"requests":{"cpu":"800m"}, "limits":{"cpu":"800m"}}}]}}'
```
Podへのパッチが当たったら、Podの詳細情報を参照してみましょう。
```shell
kubectl get pod qos-demo-5 --output=yaml --namespace=qos-example
```
以下のPod仕様は更新済みのCPU要求とCPU制限を反映しています。
```yaml
spec:
containers:
...
resources:
limits:
cpu: 800m
memory: 200Mi
requests:
cpu: 800m
memory: 200Mi
...
containerStatuses:
...
allocatedResources:
cpu: 800m
memory: 200Mi
resources:
limits:
cpu: 800m
memory: 200Mi
requests:
cpu: 800m
memory: 200Mi
restartCount: 0
started: true
```
期待する新しいCPU要求を反映する形で `allocatedResources` の値が更新されていることを確認しておきましょう。
これはードがCPUリソースの追加要求に対応できたことを示しています。
Containerの状態においてはCPUリソースの値が更新されており、新しいCPUリソースが適用されたことを示しています。
Containerの`restartCount`は変化しておらず、コンテナのCPUリソースがコンテナの再起動なしで変更されたことを示しています。
## クリーンアップ
名前空間を削除しましょう。
```shell
kubectl delete namespace qos-example
```
## {{% heading "whatsnext" %}}
### アプリケーション開発者向け
* [コンテナおよびPodへのメモリーリソースの割り当て](/ja/docs/tasks/configure-pod-container/assign-memory-resource/)
* [コンテナおよびPodへのCPUリソースの割り当て](/ja/docs/tasks/configure-pod-container/assign-cpu-resource/)
### クラスター管理者向け
* [Namespaceのデフォルトのメモリー要求と制限を設定する](/ja/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)
* [NamespaceのデフォルトのCPU要求と制限を設定する](/docs/tasks/administer-cluster/manage-resources/cpu-default-namespace/)
* [Namespaceに対する最小および最大メモリー制約の構成](/ja/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/)
* [Namespaceに対する最小および最大CPU制約の構成](/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/)
* [Namespaceに対するメモリとCPUのクォータを設定する](/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/)

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-5
namespace: qos-example
spec:
containers:
- name: qos-demo-ctr-5
image: nginx
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"