21.2. コンテナーのガベージコレクション
コンテナーのガベージコレクションはデフォルトで有効にされ、エビクションのしきい値に達すると自動的に実行されます。ノードは Pod のコンテナーを API からアクセス可能な状態にしようとします。Pod が削除された場合、コンテナーも削除されます。コンテナーは Pod が削除されておらず、エビクションのしきい値に達していない限り保持されます。ノードがディスク不足 (disk pressure) の状態にある場合、コンテナーが削除され、それらのログは oc logs
でアクセスできなくなります。
コンテナーのガベージコレクションのポリシーは 3 つのノード設定に基づいています。
設定 | 説明 |
---|---|
| コンテナーがガベージコレクションの対象となるのに必要な最小の年数です。デフォルトは 0 です。制限なしにするには 0 を使用します。この設定の値は、時間の h、分の m、秒の s などの単位の接尾辞を使用して指定することができます。 |
| コンテナーごとに保持する古いインスタンス数。デフォルトは 1 です。 |
| ノードにある実行されないコンテナーの合計の最大数です。デフォルトは、無制限を意味する -1 です。 |
競合が生じる場合、maximum-dead-containers
設定は maximum-dead-containers-per-container
設定よりも優先されます。たとえば、maximum-dead-containers-per-container
の数を保持することでコンテナーの合計数が maximum-dead-containers
より大きくなる場合、最も古いコンテナーが削除され、maximum-dead-containers
の制限が満たされるようにします。
ノードが実行されていないコンテナーを削除すると、それらのコンテナーの内部にあるすべてのファイルも削除されます。そのノードで作成されたコンテナーに対してのみガベージコレクションが実行されます。
デフォルト設定を使用しない場合は、適切な ノード設定マップ の kubeletArguments
セクションで、これらの設定の値を指定できます。このセクションがまだ存在しない場合は追加します。
コンテナーのガベージコレクションは、これらのパラメーターがノード設定マップに存在しない場合にデフォルト値を使用して実行されます。
コンテナーのガベージコレクション設定
kubeletArguments: minimum-container-ttl-duration: - "10s" maximum-dead-containers-per-container: - "2" maximum-dead-containers: - "240"
21.2.1. 削除するコンテナーの検出
ガベージコレクターループの各スピンは、次の手順を実行します。
- 利用可能なコンテナーの一覧を取得します。
-
実行中であるか、または
minimum-container-ttl-duration
パラメーターよりも長く存続していないすべてのコンテナーをフィルターで除外します。存続していないコンテナーは、終了、停止、または終了した状態になる可能性があります。 - 残りのすべてのコンテナーを Pod およびイメージ名のメンバーシップに基づいて同等のクラスに分類します。
- 特定されないコンテナー (kubelet で管理されているコンテナーであるが、それらの名前の形式が正しくないコンテナー) をすべて削除します。
-
maximum-dead-containers-per-container
パラメーターよりも多くのコンテナーが含まれるそれぞれのクラスについて、そのクラスのコンテナーを作成時間で並び替えます。 -
maximum-dead-containers-per-container
パラメーターの条件が満たされるまで、コンテナーを最も古いものから順に削除し始めます。 -
依然として
maximum-dead-containers
パラメーターよりも多くのコンテナーが一覧にある場合、コレクターは各クラスのコンテナーの削除を開始し、それぞれのクラスにあるコンテナー数がクラスあたりのコンテナーの平均数、または<all_remaining_containers>/<number_of_classes>
よりも大きくならないようにします。 -
これがまだ十分でない場合は、コレクターは一覧のすべてのコンテナーを分類し、
maximum-dead-containers
の基準が満たされるまで、コンテナーを最も古いものから順番に削除し始めます。
ニーズに合わせてデフォルト設定を更新します。
ガべージコレクションは、関連付けられている Pod のないコンテナーのみを削除します。