8.20.11. 仮想マシンでの descheduler エビクションの有効化
descheduler を使用して Pod をエビクトさせ、より適切なノードに Pod を再スケジュールすることができます。Pod が仮想マシンの場合、Pod のエビクションにより、仮想マシンが別のノードにライブマイグレーションされます。
8.20.11.1. descheduler プロファイル リンクのコピーリンクがクリップボードにコピーされました!
デスケジューラープロファイルを使用すると、Pod のライフサイクルやノードの使用率などの基準に基づいてクラスターのバランスを再調整する、特定のエビクションストラテジーを有効化できます。
仮想マシン上で descheduler を有効にするには、KubeVirtRelieveAndMigrate プロファイルを使用します。
KubeVirtRelieveAndMigrateKubeVirtRelieveAndMigrateプロファイルは、高コストのノードから Pod を退避させて、全体的なリソースのコストを削減し、ワークロードの移行を可能にします。また、定期的にワークロードのバランスを再調整して、ノード全体で同様の予備容量を維持し、ワークロードの急増をより適切に処理できるようにします。ノードには次のようなコストが発生する可能性があります。- リソース使用量: リソースが逼迫すると、アプリケーション実行のオーバーヘッドが増加します。
- ノードのメンテナンス: ノード上のコンテナーの数が増えると、リソースの消費量とメンテナンスコストが増加します。
このプロファイルは、アルファレベルの機能である
EvictionsInBackgroundを使用してLowNodeUtilizationストラテジーを有効にします。デフォルトでは、このプロファイルはPrometheusCPUMemoryCombinedProfile使用率メトリクスを使用します。このメトリクスは、CPU とメモリーの使用率に加え、両方の次元の Pressure Stall Information (PSI) を組み合わせて、包括的なノード負荷分散を実現します。また、このプロファイルは次のカスタマイズフィールドを公開します。
devActualUtilizationProfile: 負荷を考慮した descheduler による再スケジュールを有効にします。以下の使用率プロファイルを設定できます。-
PrometheusCPUMemoryCombinedProfile(デフォルト): CPU 使用率、CPU PSI 圧力、メモリー使用率、およびメモリー PSI 圧力に基づいてノードのバランスを調整します。このプロファイルは、負荷を分散し、リソースの競合を防ぐことができるため、メモリーオーバーコミットが有効になっている環境に最適です。 -
PrometheusCPUCombined: CPU 使用率と CPU PSI 圧力のみに基づいて、ノードのバランスを調整します。このプロファイルは、メモリーのオーバーコミットを行わない環境で使用します。このような環境では、メモリー割り当てが厳密に保証されており、ワークロード分散の主な要因は CPU 圧力となります。
-
-
devLowNodeUtilizationThresholds:LowNodeUtilizationストラテジーの実験的なしきい値を設定します。このフィールドをdevDeviationThresholdsと一緒に使用しないでください。 -
devDeviationThresholds: リソース使用率が平均以下のノードを、使用率が低いノードとして扱い、過剰に使用されているノードからワークロードを再分配します。このフィールドをdevLowNodeUtilizationThresholdsと一緒に使用しないでください。サポートされている値は、Low(10%:10%)、Medium(20%:20%)、High(30%:30%)、AsymmetricLow(0%:10%)、AsymmetricMedium(0%:20%)、AsymmetricHigh(0%:30%) です。 -
devEnableSoftTainter: ソフト taint 適用コンポーネントがソフト taint をスケジュールヒントとして動的に適用または削除できるようにします。
設定例:
apiVersion: operator.openshift.io/v1 kind: KubeDescheduler metadata: name: cluster namespace: openshift-kube-descheduler-operator spec: managementState: Managed deschedulingIntervalSeconds: 30 mode: "Automatic" profiles: - KubeVirtRelieveAndMigrate profileCustomizations: devEnableSoftTainter: true devDeviationThresholds: AsymmetricLow devActualUtilizationProfile: PrometheusCPUMemoryCombinedProfileKubeVirtRelieveAndMigrateプロファイルでは、すべてのワーカーノードで PSI メトリクスを有効にする必要があります。これを有効にするには、次のMachineConfigカスタムリソース (CR) を適用します。MachineConfigCR の例:apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 99-openshift-machineconfig-worker-psi-karg spec: kernelArguments: - psi=1注記マシン設定は辞書順で処理されるため、
MachineConfigオブジェクトの名前は重要です。デフォルトでは、98-で始まる設定は PSI を無効にします。PSI が有効になっていることを確認するには、99-openshift-machineconfig-worker-psi-kargのように、上位の接頭辞を使用して設定に名前を付けます。このプロファイルを
SoftTopologyAndDuplicatesプロファイルとともに使用して、ソフトトポロジー制約に基づいて Pod のバランスを再調整することもできます。これは、Hosted Control Plane 環境で役立ちます。