Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

24.2. エビクションポリシーの設定

エビクションポリシー により、ノードが利用可能なリソースが少ない状況で実行されている場合に 1 つ以上の Pod が失敗することを許可します。Pod の失敗により、ノードは必要なリソースを回収できます。

エビクションポリシーは、エビクショントリガーシグナル と、ノード設定ファイルまたは コマンドライン で設定される特定の エビクションしきい値 の組み合わせになります。エビクションは、ノードがしきい値を超える Pod に対して即時のアクションを実行する ハード エビクションか、またはノードがアクションを実行する前の猶予期間を許可する ソフト エビクションのどちらかになります。

注記

クラスターのノードを変更するには、ノード設定マップ を必要に応じて更新します。node-config.yaml ファイルは手動で変更しないようにしてください。

適切に設定されたエビクションポリシーを使用することで、ノードは、プロアクティブにモニターし、コンピュートリソースを完全に使い切る事態を防ぐことができます。

注記

ノードによる Pod の失敗が生じる場合、ノードは Pod のすべてのコンテナーを終了し、PodPhaseFailed に切り替わります。

ノードは、ディスクの不足状態を検出する際に nodefs および imagefs ファイルシステムのパーティションをサポートします。

nodefs または rootfs は、ノードがローカルディスクボリューム、デーモンログ、emptyDir、および他のローカルストレージに使用するファイルシステムです。たとえば、rootfs は、/ を提供するファイルシステムです。rootfs には、openshift.local.volumes (デフォルトは /var/lib/origin/openshift.local.volumes) が含まれます。

imagefs は、コンテナーランタイムがイメージおよび個別のコンテナーの書き込み可能な層を保存するために使用するファイルシステムです。エビクションのしきい値は、imagefs については 85% になります。imagefs ファイルシステムはランタイムによって異なり、Docker の場合は、コンテナーが使用するストレージドライバーによって異なります。

  • Docker の場合:

    • devicemapper ストレージドライバーを使用する場合、imagefs はシンプールになります。

      Docker デーモンに --storage-opt dm.basesize フラグを設定して、コンテナーの読み取り/書き込み層を制限できます。

      $ sudo dockerd --storage-opt dm.basesize=50G
    • overlay2 ストレージドライバーを使用している場合、imagefs/var/lib/docker/overlay2 が含まれるファイルシステムになります。
  • オーバーレイドライバーを使用する CRI-O の場合、imagefs は、デフォルトで /var/lib/containers/storage になります。
注記

ローカルストレージの分離 (一時ストレージ) を使用せず、XFS クォータ (volumeConfig) を使用しない場合、Pod でローカルディスクの使用を制限することはできません。

24.2.1. ノード設定を使用したポリシーの作成

エビクションポリシーを設定するには、適切な ノード設定ファイル を編集して、eviction-hard または eviction-soft パラメーターの下にエビクションしきい値を指定します。

以下のサンプルは、エビクションしきい値を示しています。

ハードエビクションのノード設定ファイルのサンプル

kubeletArguments:
  eviction-hard: 1
  - memory.available<100Mi 2
  - nodefs.available<10%
  - nodefs.inodesFree<5%
  - imagefs.available<15%
  - imagefs.inodesFree<10%

1
エビクションのタイプ: ハードエビクション にこのパラメーターを使用します。
2
特定のエビクショントリガーシグナルに基づくエビクションのしきい値です。
注記

inodesFree パラメーターのパーセント値を指定する必要があります。他のパラメーターのパーセンテージまたは数値を指定できます。

ソフトエビクションのノード設定ファイルのサンプル

kubeletArguments:
  eviction-soft: 1
  - memory.available<100Mi 2
  - nodefs.available<10%
  - nodefs.inodesFree<5%
  - imagefs.available<15%
  - imagefs.inodesFree<10%
  eviction-soft-grace-period:3
  - memory.available=1m30s
  - nodefs.available=1m30s
  - nodefs.inodesFree=1m30s
  - imagefs.available=1m30s
  - imagefs.inodesFree=1m30s

1
エビクションのタイプ: ソフトエビクション にこのパラメーターを使用します。
2
特定のエビクショントリガーシグナルに基づくエビクションのしきい値です。
3
ソフトエビクションの猶予期間です。パフォーマンスを最適化するためにデフォルト値のままにします。

変更を有効にするために OpenShift Container Platform サービスを再起動します。

# systemctl restart atomic-openshift-node