8.20. 高度な仮想マシン管理
8.20.1. 仮想マシンのリソースクォータの使用 リンクのコピーリンクがクリップボードにコピーされました!
オーバーコミットを防ぎ、ワークロードの安定したパフォーマンスを確保するために、仮想マシンのリソース消費を管理および制御します。
仮想マシンのリソースクォータの作成および管理
8.20.1.1. CLI を使用して仮想マシンのリソースクォータ制限を設定します リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization は、仮想マシン (VM) の CPU とメモリーの制限を自動的に管理します。名前空間が制限を必要とするリソースクォータを適用している場合、メモリー制限比率をカスタマイズするか、制限を手動で設定して、仮想マシンがクォータに準拠するようにすることができます。
デフォルトでは、メモリー制限は要求されたメモリーの 2 倍に設定され、CPU 制限は仮想 CPU ごとに 1 つに設定されます。
alpha.kubevirt.io/auto-memory-limits-ratio ラベルを namespace に追加することで、特定の namespace のメモリー制限比率をカスタマイズできます。たとえば、次のコマンドはメモリー制限比率を 1.2 に設定します。
$ oc label ns/my-virtualization-project alpha.kubevirt.io/auto-memory-limits-ratio=1.2
リソースクォータ制限を手動で管理することは避けてください。誤った設定やスケジュールの問題を防ぐには、デフォルトをオーバーライドする必要がある場合を除き、OpenShift Virtualization が提供する自動リソース制限管理を利用してください。
requests のみを使用するリソースクォータは、仮想マシンで自動的に機能します。リソースクォータで制限を使用する場合は、仮想マシンに手動でリソース制限を設定する必要があります。spec.template.spec.domain.resources.limits.memory の値で定義されるメモリーリソースの制限は、少なくとも 500 MiB、または spec.template.spec.domain.memory.guest の値より 2% 大きい値である必要があります。
手順
VirtualMachineマニフェストを編集して、VM の制限を設定します。以下に例を示します。apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: with-limits spec: runStrategy: Halted template: spec: domain: memory: guest: 128Mi resources: limits: memory: 256Mi各項目の説明:
- spec.template.spec.domain.memory.guest
- 仮想マシン内のゲストオペレーティングシステムに表示される実際の RAM 容量を指定します。
- spec.template.spec.domain.resources.limits.memory
仮想マシンをホストする
virt-launcherPod による総メモリー消費量のハードリミットを指定します。この制限には、ゲストオペレーティングシステムの RAM 容量とハイパーバイザーの実行時リソース消費量の両方を考慮する必要があります。この設定例は、
spec.template.spec.domain.resources.limits.memoryの値がspec.template.spec.domain.memory.guestの値より少なくとも100Mi大きいためサポートされています。
-
VirtualMachineマニフェストを保存します。
8.20.1.2. AAQ による仮想マシンリソースの正確な測定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション認識クォータ (AAQ)Operator は、仮想マシン (VM) が実際に使用する CPU とメモリーを測定します。ResourceQuota オブジェクトは、ハイパーバイザーが消費するリソースを含め、仮想マシン Pod 全体をカウントするため、仮想マシンの消費量を過大に表示します。
AAQ は、仮想化ワークロード向けに設計されたクォータ適用機能を提供します。
- Kubernetes ResourceQuota
- Pod レベルでリソース制限を計測し、適用します。仮想マシンに適用した場合、ハイパーバイザーと Pod インフラストラクチャーによって消費されるリソースを含む、仮想マシン Pod 全体のリソース消費量を測定するため、実際の仮想マシンリソース割り当ては反映されません。
- Application Aware Quota (AAQ)
- 仮想マシンリソース消費量を正確に計測および適用できるように、ResourceQuota 機能を拡張します。AAQ は仮想化レイヤーを理解しており、Pod 自体が消費するリソースとは別に、仮想マシンに割り当てられた実際の仮想 CPU とメモリーを測定できます。
AAQ は 2 種類のクォータをサポートしています。
- プロジェクトスコープのクォータ
- 特定の namespace またはプロジェクトにリソース制限を適用します。これらは、仮想化ワークロードの最も一般的なユースケースです。
- クラスタースコープのクォータ
- クラスター全体にリソース制限を適用します。これらは、クラスター全体にわたるリソースの強制適用が必要な高度なシナリオで役立ちます。
AAQ を有効にする場合は、クォータ計算方法を設定する必要があります。この設定は、AAQ がクラスター全体で仮想マシンリソースの消費量を計測する方法を決定します。
- 仮想リソース
- 仮想マシン (VM) に割り当てられた仮想 CPU とメモリーのみを測定し、Pod ランタイムが消費する CPU とメモリーは除外します。これは仮想化ワークロードのデフォルトオプションです。
- Virtual Machine Instance (VMI) Pod の使用量
- 仮想マシンと Pod のランタイムの両方を含め、VMPod の仮想 CPU とメモリーの総消費量を測定します。
- 専用仮想リソース
- 仮想マシンおよびそれらに関連付けられた Pod に割り当てられた仮想 CPU とメモリーのリソースを計測し、タイプごとにクォータ使用量を個別に追跡します。
8.20.1.3. アプリケーション認識クォータ Operator を有効にする リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールでアプリケーション認識クォータ (AAQ)Operator を有効にし、クォータ計算方法を選択してください。Web コンソールを使用することで、ハイパーコンバージド カスタムリソース (CR) を手動で編集する必要がなくなります。
前提条件
- クラスター管理者の権限がある。
- OpenShift Virtualization Operator がインストールされ、実行されている。
手順
-
OpenShift Container Platform Web コンソールで、Virtualization
Settings をクリックします。 Resource Management で、Application Aware Quotas (AAQ) をオンに切り替えます。
Operator のデプロイメントが自動的に開始されます。Operator Pod が実行されると、ステータスが Disabled から Enabled に変わります。
オプション: Quota calculation method フィールドの横にある Edit アイコンをクリックして、計算方法を変更します。
以下のオプションを含むモーダルダイアログが表示されます。
- 仮想リソース: 仮想マシン (VM) に割り当てられた仮想 CPU とメモリーのみを測定し、Pod ランタイムが消費する CPU とメモリーは除外します。これは仮想化ワークロードのデフォルトオプションです。
- 仮想マシンインスタンス (VMI)Pod の使用状況: 仮想マシンと Pod ランタイムの両方を含む、仮想マシン Pod の仮想 CPU とメモリーの合計消費量を測定します。
- 専用仮想リソース: 仮想マシンおよびそれに関連付けられた Pod に割り当てられた仮想 CPU およびメモリーリソースを計測し、タイプごとにクォータ使用量を個別に追跡します。
- 希望のクォータ計算方法を選択し、Save をクリックします。
検証
- 左側のナビゲーションメニューの Virtualization の下に、新しい Quotas オプションが表示されていることを確認します。これは、AAQ がクォータの作成と管理に対応できる状態にあることを示しています。
8.20.1.4. Web コンソールを使用して仮想マシンクォータを作成します。 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の Web コンソールにあるガイド付きフォームを使用して、プロジェクトにおける仮想マシン (VM) リソースの使用を制限するアプリケーション認識クォータ (AAQ) を作成します。このフォームは、YAML を書かずにクォータ制限を設定する最も簡単な方法です。
前提条件
- クラスター管理者の権限がある。
- お使いのクラスターでは、アプリケーション認識クォータ Operator が有効になっています。アプリケーション認識クォータ Operator を有効にする方法 については、こちらを参照してください。
- クォータを作成するプロジェクトがすでに存在する。
手順
-
OpenShift Container Platform の Web コンソールで、Virtualization
Quotas をクリックします。 - Create quota をクリックします。
ドロップダウンメニューで With form を選択します。
Create quota のフォームが表示されます。
Name フィールドに、クォータの名前を入力します。
そのプロジェクト内で一意な名前にする必要があります。
このクォータを適用するプロジェクトを選択します。
デフォルトでは、現在のプロジェクトが選択されます。必要に応じて、ドロップダウンメニューをクリックして別のプロジェクトを選択できます。
注記選択したプロジェクトに Kubernetes
ResourceQuotaがすでに存在する場合、既存の ResourceQuota を表示するためのリンクを含むアラートが表示されます。AAQ クォータを引き続き作成することは可能ですが、両方のクォータがプロジェクトに適用されます。クォータの CPU、メモリー、および VMI の制限を設定します。
表示される項目は、選択したクォータ計算方法によって異なります。以下に例を示します。
仮想リソースまたは専用仮想リソースのクォータ計算方法の場合、クォータには Pod が消費するリソースは含まれません。- 仮想 CPU 割り当て フィールドを使用して、インフラストラクチャーが消費する CPU を除き、プロジェクト内のすべての仮想マシンに許可される仮想 CPU の最大数を設定します。
- 仮想メモリー割り当て フィールドを使用して、インフラストラクチャーが消費するメモリーを除いた最大メモリー容量を GiB 単位で設定します。
- VMI limits フィールドを使用して、仮想マシンインスタンスの最大数を設定します。
仮想マシンインスタンス (VMI)Pod の使用量クォータ計算方法の場合、クォータには Pod が消費するリソースが含まれます。- CPU allocation フィールドを使用して、仮想マシンワークロードを実行する Pod の最大 CPU コア数を設定します。
- Memory allocation フィールドを使用して、仮想マシンワークロードを実行する Pod の最大メモリー容量を GiB 単位で設定します。
VMI limits フィールドを使用して、仮想マシンインスタンスの最大数を設定します。
注記ライブマイグレーションによって消費されるリソースは、
仮想マシンインスタンス (VMI)Pod の使用クォータ計算方法から除外されます。
設定を確認し、Create をクリックします。
クォータが作成され、クォータの詳細ページにリダイレクトされます。新しいクォータがアクティブになり、選択されたプロジェクト内の仮想マシンにリソース制限が適用されます。
検証
-
OpenShift Container Platform の Web コンソールで、Virtualization
Quotas をクリックします。 - クォータリストで、新しく作成したクォータを探します。
- クォータ名がリストに表示され、正しいプロジェクトとリソース制限が設定されていることを確認します。
- クォータ名をクリックすると詳細ページが開きます。ここで、すべての設定が正しいことを確認します。
8.20.1.5. リストビューを使用して仮想マシンクォータを管理します リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の Web コンソールにある [クォータ] ページを使用すると、クラスター内のすべてのアプリケーション認識クォータ (AAQ) のステータスと使用状況を表示したり、個々のプロジェクトを検索することなく、クォータを作成、編集、または削除したりできます。
前提条件
- クラスター管理者の権限がある。
- お使いのクラスターでは、アプリケーション認識クォータ Operator が有効になっています。
- HyperConverged Operator (HCO) で設定されたラベルセレクターに一致する namespace に、少なくとも 1 つの Application Aware Quota が存在する。
手順
OpenShift Container Platform の Web コンソールで、Virtualization
Quotas をクリックします。 クォータのリストビューが表示され、デフォルトではプロジェクトスコープのすべての AAQ クォータが表示されます。
クラスタースコープのクォータを表示するには、Cluster-scoped quotas タブをクリックします。
このタブは、クラスタースコープのクォータがクラスター内で定義されている場合にのみ表示されます。
注記クラスタースコープのクォータは、YAML を使用してのみ作成または編集できます。クラスタースコープのクォータは複雑であるため、フォームベースの作成機能には対応していません。
- 特定のクォータに関する詳細情報を表示するには、クォータ名をクリックしてクォータの詳細ページを開きます。
クォータを編集するには、クォータ行の末尾にある Options メニュー
をクリックします。
Edit quota を選択してします。
編集フォームには、現在のクォータ設定が表示されます。
リソース制限の変更が完了したら、Save をクリックします。
注記YAML 経由で詳細設定を行ってクォータを初期作成した場合、Edit quota をクリックすると、フォームではなく YAML エディターが開きます。
クォータを削除するには、クォータ行の末尾にある Options メニュー
をクリックし、Delete quota を選択します。確認ダイアログが表示されます。
クォータを削除するには、Delete をクリックします。
警告クォータを削除すると、そのクォータによるすべてのリソース制限が解除されます。影響を受けていたプロジェクト内の仮想マシンは、今後はクォータの制限を受けなくなります。
リストビューから新しいクォータを作成するには、Create quota をクリックします。
ドロップダウンメニューからオプションを選択します。
- With form: シンプルな仮想マシンクォータのユースケース向けに、フォームベースの作成画面を開きます。
- With YAML: Pod の制限やその他のリソースタイプを含む高度なクォータ設定向けに YAML エディターを開きます。
8.20.1.6. Web コンソールを使用して仮想マシンクォータの詳細を管理します リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の Web コンソールに あるクォータ詳細 ページを使用すると、アプリケーション認識クォータ (AAQ) のリソース制限、現在の使用状況、および利用状況チャートを確認できるため、プロジェクトが制限にどれだけ近づいているかを把握できます。
クラスタースコープのクォータでは、必要な内容が複雑であるため、YAML 定義のみが表示されます。
前提条件
- クラスター管理者の権限がある。
- お使いのクラスターでは、アプリケーション認識クォータ Operator が有効になっています。
- クラスターに Application Aware Quota が存在する。
手順
-
OpenShift Container Platform の Web コンソールで、Virtualization
Quotas をクリックします。 クォータ名をクリックすると、Quota details ビューが開きます。
Quota details ビューには、ビジュアルインジケーター、クォータメタデータ、および表形式のデータが表示されます。
- 円形の使用率チャートは、プロジェクト内のリソース消費状況を視覚的に表しています。
- Details 要素には、クォータ名、スコープ、適用されたラベル、プロジェクトなどのメタデータが含まれます。
Quota details 要素は、各リソースタイプの現在および最大使用率を表示する表形式のビューを提供します。
注記この AAQ クォータと同じプロジェクトに Kubernetes
ResourceQuotaも存在する場合、詳細ページの上部に ResourceQuota を表示するためのリンクを含むアラートが表示されます。クォータは両方ともプロジェクトに同時に適用されます。
- オプション: YAML タブをクリックして、クォータのリソース設定を確認します。
- オプション: Actions パネルを使用して、クォータを編集または削除します。