8.4. コンテナーメモリーとリスク要件を満たすためのクラスターメモリーの設定


クラスター管理者は、アプリケーションのメモリー使用量を管理することで、クラスターの効率的な動作を支援できます。

アプリケーションのメモリーを管理するには、以下のいずれかの操作を実行します。

  • コンテナー化されたアプリケーションコンポーネントのメモリー要件とリスク要件を特定し、それらの要件に合わせてコンテナーのメモリーパラメーターを設定します。
  • コンテナー化されたアプリケーションランタイム (たとえば、OpenJDK) が、設定されたコンテナーメモリーパラメーターに最適に準拠するように設定します。
  • コンテナー内で実行する際に発生するメモリー関連のエラー状態を診断し、解決します。

8.4.1. アプリケーションメモリーの管理方法について

OpenShift Container Platform がコンピュートリソースを管理する仕組みについては、以下のコンセプトを参照してください。これらの仕組みを理解することで、クラスターの効率的な稼働を維持できるようになります。

各種のリソース (メモリー、CPU、ストレージ) に応じて、OpenShift Container Platform ではオプションの 要求 および 制限 の値を Pod の各コンテナーに設定できます。

メモリー要求とメモリー制限に関する以下の情報に注意してください。

  • メモリーリクエスト

    • メモリー要求値は、指定される場合 OpenShift Container Platform スケジューラーに影響を与えます。スケジューラーは、コンテナーのノードへのスケジュール時にメモリー要求を考慮し、コンテナーの使用のために選択されたノードで要求されたメモリーをフェンスオフします。
    • ノードのメモリーが使い切られると、OpenShift Container Platform はメモリー使用がメモリー要求を最も超過しているコンテナーの退避を優先します。深刻なメモリー枯渇の場合、ノードの OOM キラーは、同様のメトリクスに基づいてコンテナー内のプロセスを選択して強制終了する可能性があります。
    • クラスター管理者は、メモリー要求値に対してクォータを割り当てるか、デフォルト値を割り当てることができます。
    • クラスター管理者は、クラスターのオーバーコミットを管理するために開発者が指定するメモリー要求の値をオーバーライドできます。
  • メモリー制限

    • メモリー制限値が指定されている場合、コンテナーのすべてのプロセスに割り当て可能なメモリーにハード制限を指定します。
    • コンテナー内のすべてのプロセスによって割り当てられたメモリーがメモリー制限を超えた場合、ノードのメモリー不足 (OOM) キラーは、コンテナー内のプロセスを即座に選択して強制終了します。
    • メモリー要求とメモリー制限の両方が指定される場合、メモリー制限の値はメモリー要求の値よりも大きいか、これと等しくなければなりません。
    • クラスター管理者は、メモリーの制限値に対してクォータを割り当てるか、デフォルト値を割り当てることができます。
    • 最小メモリー制限は 12 MB です。Cannot allocate memory Pod イベントのためにコンテナーの起動に失敗すると、メモリー制限は低くなります。メモリー制限を引き上げるか、これを削除します。制限を削除すると、Pod は制限のないノードのリソースを消費できるようになります。

OpenShift Container Platform でアプリケーションメモリーをサイジングする手順は以下の通りです。

  1. 予想されるコンテナーのメモリー使用の判別

    コンテナーのメモリー使用量の平均値とピーク値を算出します。たとえば、負荷テストを個別に実施することもできます。コンテナー内で並行して実行される可能性のあるすべてのプロセス、たとえばメインアプリケーションによって生成される可能性のある補助スクリプトなどを考慮することを忘れないでください。

  2. リスク選好 (risk appetite) の判別

    エビクションのリスク選好を判別します。リスク選好のレベルが低い場合、コンテナーは予想されるピーク時の使用量と安全マージンのパーセンテージに応じてメモリーを要求します。リスク許容度が高い場合は、予想される平均使用量に基づいてメモリーを要求する方が適切な場合があります。

  3. コンテナーのメモリー要求の設定

    上記に基づいてコンテナーのメモリー要求を設定します。要求内容は、アプリケーションのメモリー使用量をできる限り正確に反映する必要があります。要求が高すぎる場合には、クラスターおよびクォータの使用が非効率となります。要求が低すぎる場合、アプリケーションのエビクションの可能性が高まります。

  4. コンテナーのメモリー制限の設定 (必要な場合)

    必要に応じて、コンテナーのメモリー制限を設定します。制限を設定すると、コンテナー内のすべてのプロセスのメモリー使用量の合計が制限を超えた場合に、コンテナープロセスが即座に強制終了される効果があります。制限を設定することで、予期しない過剰なメモリー使用を早期に表面化 (フェイルファスト) させることができます。しかし、制限を設定すると、プロセスが突然終了してしまうという問題も生じます。

    OpenShift Container Platform のクラスターによっては、制限値を設定する必要がある場合があります。また、制限値に基づいてリクエストをオーバーライドする場合もあります。さらに、一部のアプリケーションイメージは、リクエスト値よりも検出が容易なため、制限値が設定されていることを前提としています。

    メモリー制限が設定される場合、これは予想されるピーク時のコンテナーのメモリー使用量と安全マージンのパーセンテージよりも低い値に設定することはできません。

  5. アプリケーションがチューニングされていることを確認します。

    必要に応じて、アプリケーションが設定された要求値と制限値に合わせてチューニングされていることを確認します。この手順は、JVM などのメモリーをプールするアプリケーションにおいてとくに当てはまります。残りの部分では、これについて説明します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る