8.20.2. Application-Aware Quota (AAQ) Operator の設定


Application-Aware Quota (AAQ) Operator を使用して、OpenShift Container Platform クラスター内の各コンポーネントのリソースクォータをカスタマイズおよび管理できます。

8.20.2.1. AAQOperator

アプリケーション認識クォータ (AAQ)Operator は、仮想マシン (VM) を実行するクラスターのクォータを管理します。ネイティブの ResourceQuota オブジェクトとは異なり、AAQ はライブマイグレーションと仮想マシンインフラストラクチャーが消費するリソースを考慮するため、クォータによって仮想マシンのマイグレーションやアップグレードがブロックされることはありません。

マルチテナントクラスター環境では、複数のワークロードが共有インフラストラクチャーとリソース上で動作するため、Kubernetes ネイティブの ResourceQuota オブジェクトを使用して CPU とメモリーの総消費量を制限すると、仮想マシンインフラストラクチャーが消費するリソースもクォータに含まれるため、OpenShift Virtualization ワークロードのライブマイグレーションに課題が生じます。

OpenShift Virtualization では、仮想マシン (仮想マシン) のライブマイグレーションを処理したり、仮想マシンインフラストラクチャー自体を実行したりするために、相当量のコンピューティングリソースの割り当てが必要です。OpenShift Virtualization をアップグレードする場合は、仮想マシンを移行して virt-launcher Pod をアップグレードする必要があります。ただし、リソースクォータが存在する状態で仮想マシンを移行すると、移行と、その後のアップグレードが失敗する可能性があります。

AAQ を使用すると、アップグレードやノードのメンテナンスをはじめとするクラスターレベルのアクティビティーを妨げることなく、仮想マシンにリソースを割り当てることができます。AAQ Operator はコンピュートリソース以外のリソースもサポートするため、ネイティブリソースクォータと AAQ API オブジェクトを個別に管理する必要がなくなります。

8.20.2.1.1. AAQ Operator Controller とカスタムリソース

AAQ Operator は、複数の namespace をまたぐ代替クォータ実装を管理するためのカスタムリソース定義 (CRD) として定義された 2 つの新しい API オブジェクトを導入します。

  • ApplicationAwareResourceQuota: namespace ごとに適用される総クォータ制限を設定します。ApplicationAwareResourceQuota API はネイティブの ResourceQuota オブジェクトと互換性があり、同じ仕様とステータス定義を共有します。

    マニフェストの例:

    apiVersion: aaq.kubevirt.io/v1alpha1
    kind: ApplicationAwareResourceQuota
    metadata:
      name: example-resource-quota
    spec:
      hard:
        requests.memory: 1Gi
        limits.memory: 1Gi
        requests.cpu/vmi: "1"
        requests.memory/vmi: 1Gi
    # ...
    • spec.hard.requests.cpu/vmi は、デフォルトの namespace における仮想マシンワークロードに許可される最大 CPU 量を定義します。
    • spec.hard.requests.memory/vmi は、デフォルトの namespace における仮想マシンワークロードに許可される最大 RAM 量を定義します。
  • ApplicationAwareClusterResourceQuota: ApplicationAwareResourceQuota オブジェクトをクラスタースコープでミラーリングします。これはネイティブの ClusterResourceQuota API オブジェクトと互換性があり、同じ仕様とステータス定義を共有します。AAQ クラスタークォータの作成時に、spec.selector.labels または spec.selector.annotations フィールドを編集して、選択したアノテーションかラベル、もしくはその両方に基づいて複数の namespace を選択できます。ApplicationAwareClusterResourceQuota オブジェクトは、HyperConverged カスタムリソース (CR) の spec.deployment.applicationAwareConfig.allowApplicationAwareClusterResourceQuota フィールドが true に設定されている場合に限り作成できます。

    マニフェストの例:

    apiVersion: aaq.kubevirt.io/v1alpha1
    kind: ApplicationAwareClusterResourceQuota
    metadata:
      name: example-resource-quota
    spec:
      quota:
        hard:
          requests.memory: 1Gi
          limits.memory: 1Gi
          requests.cpu/vmi: "1"
          requests.memory/vmi: 1Gi
      selector:
        annotations: null
        labels:
          matchLabels:
            kubernetes.io/metadata.name: default
    # ...
    注記

    spec.selector.labels フィールドと spec.selector.annotations フィールドの両方が設定されている場合は、両方に一致する namespace のみが選択されます。

AAQ コントローラーは、スケジューリングゲートメカニズムを使用して、ワークロードを実行するために使用できるリソースが十分にあるか評価します。そうである場合、スケジューリングゲートは Pod から削除され、スケジューリングの準備が整ったと見なされます。クォータ使用状況ステータスが更新され、使用されているクォータの量が表示されます。

ワークロードの CPU およびメモリー requests と limits が強制されたクォータ使用量制限を超える場合、十分なクォータが利用可能になるまで Pod は SchedulingGated ステータスのままになります。AAQ コントローラーは、詳しいクォータ超過理由を含む Warning タイプのイベントを作成します。oc get events コマンドを使用してイベントの詳細を表示できます。

重要

spec.nodeName フィールドが特定のノードに設定されている Pod は、HyperConverged CR で定義されている spec.deployment.applicationAwareConfig.namespaceSelector ラベルに一致する namespace を使用できません。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る