6.13. ガベージコレクションを使用しているノードリソースの解放
ガベージコレクションについて理解し、これを使用します。
6.13.1. 終了したコンテナーがガベージコレクションによって削除される仕組みについて
コンテナーのガベージコレクションは、エビクションしきい値を使用して、終了したコンテナーを削除します。
					エビクションしきい値がガーベージコレクションに設定されていると、ノードは Pod のコンテナーが API から常にアクセス可能な状態になるよう試みます。Pod が削除された場合、コンテナーも削除されます。コンテナーは Pod が削除されず、エビクションしきい値に達していない限り保持されます。ノードがディスク不足 (disk pressure) の状態になっていると、コンテナーが削除され、それらのログは oc logs を使用してアクセスできなくなります。
				
- eviction-soft - ソフトエビクションのしきい値は、エビクションしきい値と要求される管理者指定の猶予期間を組み合わせます。
- eviction-hard - ハードエビクションのしきい値には猶予期間がなく、検知されると、OpenShift Container Platform はすぐにアクションを実行します。
以下の表は、エビクションしきい値のリストです。
| ノードの状態 | エビクションシグナル | 説明 | 
|---|---|---|
| MemoryPressure | 
									 | ノードで利用可能なメモリー。 | 
| DiskPressure | 
 | 
									ノードのルートファイルシステム ( | 
						evictionHard の場合、これらのパラメーターをすべて指定する必要があります。すべてのパラメーターを指定しないと、指定したパラメーターのみが適用され、ガベージコレクションが正しく機能しません。
					
					ノードがソフトエビクションしきい値の上限と下限の間で変動し、その関連する猶予期間を超えていない場合、対応するノードは、true と false の間で常に変動します。したがって、スケジューラーは適切なスケジュールを決定できない可能性があります。
				
					この変動を防ぐには、evictionpressure-transition-period フラグを使用して、OpenShift Container Platform が不足状態から移行するまでにかかる時間を制御します。OpenShift Container Platform は、false 状態に切り替わる前の指定された期間に、エビクションしきい値を指定された不足状態に一致するように設定しません。
				
						evictionPressureTransitionPeriod パラメーターを 0 に設定すると、デフォルト値の 5 分が設定されます。エビクション不足移行期間を 0 秒に設定することはできません。
					
6.13.2. イメージがガベージコレクションによって削除される仕組みについて
イメージガベージコレクションは、実行中の Pod によって参照されていないイメージを削除します。
OpenShift Container Platform は、cAdvisor によって報告されたディスク使用量に基づいて、ノードから削除するイメージを決定します。
イメージのガベージコレクションのポリシーは、以下の 2 つの条件に基づいています。
- イメージのガべージコレクションをトリガーするディスク使用量のパーセンテージ (整数で表される) です。デフォルトは 85 です。
- イメージのガべージコレクションが解放しようとするディスク使用量のパーセンテージ (整数で表される) です。デフォルトは 80 です。
イメージのガベージコレクションのために、カスタムリソースを使用して、次の変数のいずれかを変更することができます。
| 設定 | 説明 | 
|---|---|
| 
									 | ガベージコレクションによって削除されるまでの未使用のイメージの有効期間。デフォルトは、2m です。 | 
| 
									 | 
									イメージのガべージコレクションをトリガーするディスク使用量のパーセンテージ (整数で表される) です。デフォルトは 85 です。この値は  | 
| 
									 | 
									イメージのガべージコレクションが解放しようとするディスク使用量のパーセンテージ (整数で表される) です。デフォルトは 80 です。この値は、 | 
以下の 2 つのイメージリストがそれぞれのガベージコレクターの実行で取得されます。
- 1 つ以上の Pod で現在実行されているイメージのリスト
- ホストで利用可能なイメージのリスト
新規コンテナーの実行時に新規のイメージが表示されます。すべてのイメージにはタイムスタンプのマークが付けられます。イメージが実行中 (上記の最初の一覧) か、新規に検出されている (上記の 2 番目の一覧) 場合、これには現在の時間のマークが付けられます。残りのイメージには以前のタイムスタンプのマークがすでに付けられています。すべてのイメージはタイムスタンプで並び替えられます。
コレクションが開始されると、停止条件を満たすまでイメージが最も古いものから順番に削除されます。
6.13.3. コンテナーおよびイメージのガベージコレクションの設定
					管理者は、kubeletConfig オブジェクトを各マシン設定プール用に作成し、OpenShift Container Platform によるガベージコレクションの実行方法を設定できます。
				
						OpenShift Container Platform は、各マシン設定プールの kubeletConfig オブジェクトを 1 つのみサポートします。
					
次のいずれかの組み合わせを設定できます。
- コンテナーのソフトエビクション
- コンテナーのハードエビクション
- イメージのエビクション
コンテナーのガベージコレクションは終了したコンテナーを削除します。イメージガベージコレクションは、実行中の Pod によって参照されていないイメージを削除します。
前提条件
- 次のコマンドを入力して、設定するノードタイプの静的な - MachineConfigPoolCRD に関連付けられたラベルを取得します。- oc edit machineconfigpool <name> - $ oc edit machineconfigpool <name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc edit machineconfigpool worker - $ oc edit machineconfigpool worker- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- Labels の下にラベルが表示されます。
 ヒント- ラベルが存在しない場合は、次のようなキー/値のペアを追加します。 - oc label machineconfigpool worker custom-kubelet=small-pods - $ oc label machineconfigpool worker custom-kubelet=small-pods- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
手順
- 設定変更のためのカスタムリソース (CR) を作成します。 重要- ファイルシステムが 1 つの場合、または - /var/lib/kubeletと- /var/lib/containers/が同じファイルシステムにある場合、最も大きな値の設定が満たされるとエビクションがトリガーされます。ファイルシステムはエビクションをトリガーします。- コンテナーのガベージコレクション CR のサンプル設定 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- オブジェクトの名前。
- 2
- マシン設定プールからラベルを指定します。
- 3
- コンテナーのガベージコレクションの場合: エビクションのタイプ:evictionSoftまたはevictionHard。
- 4
- コンテナーのガベージコレクションの場合: 特定のエビクショントリガー信号に基づくエビクションしきい値。
- 5
- コンテナーのガベージコレクションの場合: ソフトエビクションの猶予期間。このパラメーターは、eviction-hardには適用されません。
- 6
- コンテナーのガベージコレクションの場合: 特定のエビクショントリガー信号に基づくエビクションしきい値。evictionHardの場合、これらのパラメーターをすべて指定する必要があります。すべてのパラメーターを指定しないと、指定したパラメーターのみが適用され、ガベージコレクションが正しく機能しません。
- 7
- コンテナーのガベージコレクションの場合: エビクションプレッシャー状態から移行するまでの待機時間。evictionPressureTransitionPeriodパラメーターを0に設定すると、デフォルト値の 5 分が設定されます。
- 8
- イメージのガベージコレクションの場合: イメージがガベージコレクションによって削除されるまでの、未使用のイメージの最小保存期間。
- 9
- イメージガベージコレクションの場合: イメージガベージコレクションは、(整数で表される) 指定されたディスク使用率でトリガーされます。この値はimageGCLowThresholdPercent値より大きくする必要があります。
- 10
- イメージガベージコレクションの場合: イメージガベージコレクションは、(整数で表される) 指定されたディスク使用率までリソースの解放を試みます。この値は、imageGCHighThresholdPercent値より小さくする必要があります。
 
- 以下のコマンドを実行して CR を作成します。 - oc create -f <file_name>.yaml - $ oc create -f <file_name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc create -f gc-container.yaml - $ oc create -f gc-container.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - kubeletconfig.machineconfiguration.openshift.io/gc-container created - kubeletconfig.machineconfiguration.openshift.io/gc-container created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを入力して、ガベージコレクションがアクティブであることを確認します。カスタムリソースで指定した Machine Config Pool では、変更が完全に実行されるまで - UPDATINGが 'true` と表示されます。- oc get machineconfigpool - $ oc get machineconfigpool- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CONFIG UPDATED UPDATING master rendered-master-546383f80705bd5aeaba93 True False worker rendered-worker-b4c51bb33ccaae6fc4a6a5 False True - NAME CONFIG UPDATED UPDATING master rendered-master-546383f80705bd5aeaba93 True False worker rendered-worker-b4c51bb33ccaae6fc4a6a5 False True- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow