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
Copy to Clipboard Toggle word wrap

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

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

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

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

コマンドの例

$ oc edit pod <pod_name>  --subresource resize
Copy to Clipboard Toggle word wrap

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

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

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

$ oc get pods
Copy to Clipboard Toggle word wrap

出力例

NAME                          READY   STATUS    RESTARTS     AGE
resize-pod                    1/1     Running   0            5s
Copy to Clipboard Toggle word wrap

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

$ oc get pods
Copy to Clipboard Toggle word wrap

出力例

NAME                         READY   STATUS    RESTARTS    AGE
resize-pod                   1/1     Running   1 (5s ago)  5s
Copy to Clipboard Toggle word wrap

リソースの変更後、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
Copy to Clipboard Toggle word wrap

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

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

2.6.2. Pod のインプレースサイズ変更の設定

Pod のインプレースサイズ変更を使用するには、Pod 仕様にサイズ変更ポリシーを追加する必要があります。

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

手順

  1. サイズ変更ポリシーを使用して Pod 仕様を作成するか、既存の Pod のオーナーオブジェクトにサイズ変更ポリシーを追加します。

    1. 次の例のような YAML ファイルを作成します。

      apiVersion: v1
      kind: Pod
      metadata:
        name: resize-pod
      spec:
      # ...
        containers:
        - name: pause
          resizePolicy: 
      1
      
          - resourceName: cpu
            restartPolicy: NotRequired
          - resourceName: memory
            restartPolicy: RestartContainer
      # ...
      Copy to Clipboard Toggle word wrap
      1
      サイズ変更ポリシーを指定します。CPU リソースやメモリーリソースについて、次のいずれかの値を指定します。
      • NotRequired: Pod を再起動せずにリソースの変更を適用します。これは、サイズ変更ポリシーを使用する場合のデフォルト値です。
      • RestartContainer: リソースの変更を適用し、Pod を再起動します。
    2. 次のようなコマンドを実行してオブジェクトを作成します。

      $ oc create -f <file_name>.yaml
      Copy to Clipboard Toggle word wrap

検証

  • 次のようなコマンドを実行して、CPU またはメモリーの要求または制限を変更し、サイズ変更ポリシーが適用されていることを確認します。--subresource resize フラグを含める必要があります。Pod にデプロイメントなどのオーナーオブジェクトがある場合は、オーナーオブジェクトを編集する必要があります。

    $ oc edit pod <pod_name>  --subresource resize
    Copy to Clipboard Toggle word wrap

    ポリシーが適用されると、Pod は期待どおりに応答します。

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    サイズ変更ポリシーが NotRequired の場合、Pod は再起動されません。

    出力例

    NAME                          READY   STATUS    RESTARTS     AGE
    resize-pod                    1/1     Running   0            5s
    Copy to Clipboard Toggle word wrap

    サイズ変更ポリシーが RestartContainer の場合、Pod は再起動されます。

    出力例

    NAME                         READY   STATUS    RESTARTS    AGE
    resize-pod                   1/1     Running   1 (5s ago)  5s
    Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat