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


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

9.17.2.1. AAQ Operator について

Application-Aware Quota (AAQ) Operator は、OpenShift Container Platform プラットフォームのネイティブ ResourceQuota オブジェクトよりも、さらに柔軟で拡張可能なクォータ管理を提供します。

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

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

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

9.17.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 は、 デフォルトの名前空間における仮想マシンワークロードに許可される最大 CPU 量を定義します。
    • spec.hard.requests.memory/vmi は、 デフォルトの名前空間における仮想マシンワークロードに許可される最大 RAM 量を定義します。
  • ApplicationAwareClusterResourceQuota: ApplicationAwareResourceQuota オブジェクトをクラスタースコープでミラーリングします。これはネイティブの ClusterResourceQuota API オブジェクトと互換性があり、同じ仕様とステータス定義を共有します。AAQ クラスタークォータの作成時に、spec.selector.labels または spec.selector.annotations フィールドを編集して、選択したアノテーションかラベル、もしくはその両方に基づいて複数の namespace を選択できます。ApplicationAwareClusterResourceQuota オブジェクトは、HyperConverged カスタムリソース (CR) の spec.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.namespaceSelector ラベルと一致する namespace を使用できません。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る