9.15.13. 仮想マシンでの descheduler エビクションの有効化
descheduler を使用して Pod をエビクトさせ、より適切なノードに Pod を再スケジュールすることができます。Pod が仮想マシンの場合、Pod のエビクションにより、仮想マシンが別のノードにライブマイグレーションされます。
9.15.13.1. descheduler プロファイル リンクのコピーリンクがクリップボードにコピーされました!
デスケジューラープロファイルを使用すると、Pod のライフサイクルやノードの使用率などの基準に基づいてクラスターのバランスを再調整する、特定のエビクションストラテジーを有効化できます。
仮想マシンで descheduler を有効にするには、DevKubeVirtRelieveAndMigrate または LongLifecycle プロファイルを使用します。
DevKubeVirtRelieveAndMigrate と LongLifeCycle の両方を同時に有効にすることはできません。
DevKubeVirtRelieveAndMigrateこのプロファイルは、
LongLifeCycleプロファイルの拡張バージョンです。重要DevKubeVirtRelieveAndMigrateプロファイルは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
DevKubeVirtRelieveAndMigrateプロファイルは、高コストのノードから Pod をエビクトして、全体的なリソースのコストを削減し、ワークロードの移行を可能にします。また、定期的にワークロードのバランスを再調整して、ノード全体で同様の予備容量を維持し、ワークロードの急増をより適切に処理できるようにします。ノードには次のようなコストが発生する可能性があります。- リソース使用量: リソースが逼迫すると、アプリケーション実行のオーバーヘッドが増加します。
- ノードのメンテナンス: ノード上のコンテナーの数が増えると、リソースの消費量とメンテナンスコストが増加します。
このプロファイルは、アルファ機能である
EvictionsInBackgroundを使用してLowNodeUtilizationストラテジーを有効にします。また、このプロファイルは次のカスタマイズフィールドを公開します。-
devActualUtilizationProfile: 負荷を考慮した descheduler による再スケジュールを有効にします。 -
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: - DevKubeVirtRelieveAndMigrate profileCustomizations: devEnableSoftTainter: true devDeviationThresholds: AsymmetricLow devActualUtilizationProfile: PrometheusCPUCombinedDevKubeVirtRelieveAndMigrateプロファイルでは、すべてのワーカーノードで 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このプロファイルを
SoftTopologyAndDuplicatesプロファイルとともに使用して、ソフトトポロジー制約に基づいて Pod のバランスを再調整することもできます。これは、Hosted Control Plane 環境で役立ちます。
LongLifecycleこのプロファイルは、ノード間のリソース使用率のバランスを取り、以下のストラテジーを有効にします。
-
RemovePodsHavingTooManyRestarts: コンテナーが何度も再起動された Pod、およびすべてのコンテナー (Init コンテナーを含む) の再起動の合計が 100 を超える Pod を削除します。仮想マシンのゲストオペレーティングシステムを再起動しても、この数は増えません。 LowNodeUtilization: 使用率の低いノードがある場合に、使用率の高いノードから Pod をエビクトします。エビクトされた Pod の宛先ノードはスケジューラーによって決定されます。- ノードは、使用率がすべてのしきい値 (CPU、メモリー、Pod の数) で 20% 未満の場合に使用率が低いと見なされます。
- ノードは、使用率がすべてのしきい値 (CPU、メモリー、Pod の数) について 50% を超える場合に過剰に使用されていると見なされます。
-