6.11.3. コンテナーおよびイメージのガベージコレクションの設定
管理者は、kubeletConfig オブジェクトを各マシン設定プール用に作成し、OpenShift Container Platform によるガベージコレクションの実行方法を設定できます。ガベージコレクションを実行することで、ノードが効率的に動作していることを確認できます。
OpenShift Container Platform は、各マシン設定プールの kubeletConfig オブジェクトを 1 つのみサポートします。
次のいずれかの組み合わせを設定できます。
- コンテナーのソフト退避
- コンテナーのハード退避
- イメージの退避
コンテナーのガベージコレクションは終了したコンテナーを削除します。イメージガベージコレクションは、実行中の Pod によって参照されていないイメージを削除します。
前提条件
次のコマンドを入力して、設定するノードタイプの静的な
MachineConfigPoolCRD に関連付けられたラベルを取得します。$ oc edit machineconfigpool <name>以下に例を示します。
$ oc edit machineconfigpool worker出力例
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: creationTimestamp: "2022-11-16T15:34:25Z" generation: 4 labels: pools.operator.machineconfiguration.openshift.io/worker: "" name: worker #...各項目の説明:
metadata.labelskubelet の設定で使用するラベルを指定します。
ヒントラベルが存在しない場合は、次のようなキー/値のペアを追加します。
$ oc label machineconfigpool worker custom-kubelet=small-pods
手順
設定変更のためのカスタムリソース (CR) を作成します。
重要ファイルシステムが 1 つの場合、または
/var/lib/kubeletと/var/lib/containers/が同じファイルシステムにある場合、最も大きな値の設定が満たされると退避がトリガーされます。ファイルシステムは退避をトリガーします。コンテナーのガベージコレクション CR のサンプル設定
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: worker-kubeconfig spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" kubeletConfig: evictionSoft: memory.available: "500Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" imagefs.inodesFree: "10%" evictionSoftGracePeriod: memory.available: "1m30s" nodefs.available: "1m30s" nodefs.inodesFree: "1m30s" imagefs.available: "1m30s" imagefs.inodesFree: "1m30s" evictionHard: memory.available: "200Mi" nodefs.available: "5%" nodefs.inodesFree: "4%" imagefs.available: "10%" imagefs.inodesFree: "5%" evictionPressureTransitionPeriod: 3m imageMinimumGCAge: 5m imageGCHighThresholdPercent: 80 imageGCLowThresholdPercent: 75 #...各項目の説明:
metadata.name- オブジェクトの名前を指定します。
spec.machineConfigPoolSelector.matchLabels- マシン設定プールからラベルを指定します。
spec.kubeletConfig.evictionSoft- コンテナーのガベージコレクションにおけるソフトエビクションと退避のしきい値を指定します。
spec.kubeletConfig.evictionSoftGracePeriod-
コンテナーの段階的な退避のための猶予期間を規定する。このパラメーターは、
eviction-hardには適用されません。 spec.kubeletConfig.evictionHard-
コンテナーのガベージコレクションにおけるソフトエビクションと退避のしきい値を指定します。
evictionHardの場合、これらのパラメーターをすべて指定する必要があります。すべてのパラメーターを指定しないと、指定したパラメーターのみが適用され、ガベージコレクションが正しく機能しません。 spec.kubeletConfig.evictionPressureTransitionPeriod-
コンテナーごみ収集における退避圧力状態から脱するまでの待機時間を指定します。
evictionPressureTransitionPeriodパラメーターを0に設定すると、デフォルト値の 5 分が設定されます。 spec.kubeletConfig.imageMinimumGCAge- 未使用イメージがガベージコレクションによって削除されるまでの最小経過時間を指定します。
spec.kubeletConfig.imageGCHighThresholdPercent-
イメージのガベージコレクションがトリガーされるディスク使用率の割合を整数で指定します。この値は
imageGCLowThresholdPercent値より大きくする必要があります。 spec.kubeletConfig.imageGCHighThresholdPercent-
イメージのガベージコレクションが解放を試みるディスク使用率の割合を整数で指定します。この値は、
imageGCHighThresholdPercent値より小さくする必要があります。
以下のコマンドを実行して CR を作成します。
$ oc create -f <file_name>.yaml以下に例を示します。
$ oc create -f gc-container.yaml出力例
kubeletconfig.machineconfiguration.openshift.io/gc-container created
検証
次のコマンドを入力して、ガベージコレクションがアクティブであることを確認します。カスタムリソースで指定した Machine Config Pool では、変更が完全に実行されるまで
UPDATINGが 'true` と表示されます。$ oc get machineconfigpool出力例
NAME CONFIG UPDATED UPDATING master rendered-master-546383f80705bd5aeaba93 True False worker rendered-worker-b4c51bb33ccaae6fc4a6a5 False True