2.6. Pod を中断せずに Pod のリソースレベルを調整する


Pod のインプレースサイズ変更 を使用すると、Pod を再作成または再起動せずに、コンテナーに割り当てられた CPU またはメモリーリソースの要求と制限を変更できます。

2.6.1. Pod のインプレースサイズ変更について

Pod のインプレースサイズ変更を使用すると、アプリケーションを中断することなく、実行中の Pod 内のコンテナーの CPU およびメモリーリソースを変更できます。Pod の CPU およびメモリーリソースを変更する標準的な方法では、Pod が再作成され、中断が発生する可能性があります。Pod のインプレースサイズ変更により、Pod の再起動に伴うダウンタイムや状態の損失を発生させることなく、Pod のリソースを増減できます。

Pod のインプレースサイズ変更を使用して CPU またはメモリーリソースを変更する場合、Pod 仕様でサイズ変更ポリシーを設定することで、Pod を再起動するかどうかを制御できます。次のサイズ変更ポリシーの例では、メモリーリソースの変更時には Pod の再起動が必要ですが、CPU リソースの変更時には再起動が防止されます。

リソースポリシーの例

apiVersion: v1
kind: Pod
metadata:
  name: resize-demo
spec:
  securityContext:
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault
  containers:
  - name: pause
# ...
    resizePolicy: 
1

    - resourceName: cpu
      restartPolicy: NotRequired
    - resourceName: memory
      restartPolicy: RestartContainer

1
サイズ変更ポリシーを指定します。
注記

memory のサイズ変更ポリシーを RestartContainer でない限り、メモリーの制限を引き下げることはできません。

既存の Pod にサイズ変更ポリシーを追加または変更することはできません。ただし、Pod にオーナーオブジェクトがある場合は、デプロイメントなどの Pod のオーナーオブジェクトでポリシーを追加または編集できます。

Pod のインプレースサイズ変更を使用するには、次の例に示すように、OpenShift CLI (oc) で Pod を編集するときに --subresource resize フラグを使用する必要があります。

コマンドの例

$ oc edit pod <pod_name>  --subresource resize

$ oc apply -f <file_name>.yaml --subresource resize
$ oc patch pod <pod_name> --subresource resize --patch \
  '{"spec":{"containers":[{"name":"pause", "resources":{"requests":{"cpu":"800m"}, "limits":{"cpu":"800m"}}}]}}'

サイズ変更ポリシーとともに --subresource resize フラグを使用する必要があるため、OpenShift Container Platform Web コンソールで Pod リソースを編集することはできません。

サイズ変更ポリシーが NotRequired の場合、要求または制限を変更しても、Pod は再起動されません。

$ oc get pods

出力例

NAME                          READY   STATUS    RESTARTS     AGE
resize-pod                    1/1     Running   0            5s

サイズ変更ポリシーが RestartContainer の場合、要求または制限を変更すると、Pod が再起動されます。

$ oc get pods

出力例

NAME                         READY   STATUS    RESTARTS    AGE
resize-pod                   1/1     Running   1 (5s ago)  5s

リソースの変更後、Pod のステータス条件に、次のメッセージを使用してサイズ変更要求の状態が示されます。

  • PodResizeInProgress: 要求されたリソースの割り当てが可能であり、kubelet が変更を適用中です。
  • PodResizePending: 次のいずれかの理由により、kubelet がすぐに変更を加えることができません。

    • Infeasible: 現在のノードでは要求されたサイズ変更を実行できません。たとえば、ノードが使用できるリソースよりも多くのリソースを要求すると、Infeasible 状態になります。
    • Deferred: 要求されたサイズ変更は現在は不可能ですが、後で可能になる可能性があります。たとえば、別の Pod がノードから削除されると、要求されたリソースが使用可能になる可能性があります。ノードの状態に変化があった場合、kubelet がサイズ変更を再試行します。
  • Error: リソース割り当て中に kubelet でエラーが発生しました。メッセージフィールドにエラーの理由が報告されます。

実行不可能 (Infeasible) な変更のステータスの例

apiVersion: v1
kind: Pod
metadata:
  name: resize-demo
# ...
status:
  conditions:
  - lastProbeTime: "2025-09-03T15:00:50Z"
    lastTransitionTime: "2025-09-03T15:00:50Z"
    message: 'Node didn''t have enough capacity: cpu, requested: 1000000, capacity:
      3500'
    reason: Infeasible
    status: "True"
    type: PodResizePending

以下の制限事項に注意してください。

  • 再起動不可能な init コンテナーおよび一時コンテナーでは、Pod のインプレースサイズ変更はサポートされていません。
  • Pod のインプレースサイズ変更が、Pod QoS クラスなど、他の Pod の可変性に関する制約に違反する場合、その変更は許可されません。
  • 静的な cpuManagerPolicy または memoryManagerPolicy パラメーターによって管理される Pod は、Pod のインプレースサイズ変更ではサイズ変更できません。
  • スワップメモリーを利用する Pod のメモリー要求を Pod のインプレースサイズ変更で変更するには、RestartContainer ポリシーを使用する必要があります。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る