6.2. 複数のプロジェクト間のリソースクォータ

ClusterResourceQuota オブジェクトで定義される複数プロジェクトのクォータは、複数プロジェクト間でクォータを共有できるようにします。それぞれの選択されたプロジェクトで使用されるリソースは集計され、その集計は選択したすべてのプロジェクトでリソースを制限するために使用されます。

以下では、クラスター管理者が複数のプロジェクトでリソースクォータを設定および管理する方法について説明します。

6.2.1. クォータ作成時の複数プロジェクトの選択

クォータの作成時に、アノテーションの選択、ラベルの選択、またはその両方に基づいて複数のプロジェクトを選択することができます。

手順

  1. アノテーションに基づいてプロジェクトを選択するには、以下のコマンドを実行します。

    $ oc create clusterquota for-user \
         --project-annotation-selector openshift.io/requester=<user_name> \
         --hard pods=10 \
         --hard secrets=20

    これにより、以下の ClusterResourceQuota オブジェクトが作成されます。

    apiVersion: quota.openshift.io/v1
    kind: ClusterResourceQuota
    metadata:
      name: for-user
    spec:
      quota: 1
        hard:
          pods: "10"
          secrets: "20"
      selector:
        annotations: 2
          openshift.io/requester: <user_name>
        labels: null 3
    status:
      namespaces: 4
      - namespace: ns-one
        status:
          hard:
            pods: "10"
            secrets: "20"
          used:
            pods: "1"
            secrets: "9"
      total: 5
        hard:
          pods: "10"
          secrets: "20"
        used:
          pods: "1"
          secrets: "9"
    1
    選択されたプロジェクトに対して実施される ResourceQuotaSpec オブジェクトです。
    2
    アノテーションの単純なキー/値のセレクターです。
    3
    プロジェクトを選択するために使用できるラベルセレクターです。
    4
    選択された各プロジェクトの現在のクォータの使用状況を記述する namespace ごとのマップです。
    5
    選択されたすべてのプロジェクトにおける使用量の総計です。

    この複数プロジェクトのクォータの記述は、デフォルトのプロジェクト要求エンドポイントを使用して <user_name> によって要求されるすべてのプロジェクトを制御します。ここでは、10 Pod および 20 シークレットに制限されます。

  2. 同様にラベルに基づいてプロジェクトを選択するには、以下のコマンドを実行します。

    $  oc create clusterresourcequota for-name \1
        --project-label-selector=name=frontend \2
        --hard=pods=10 --hard=secrets=20
    1
    clusterresourcequota および clusterquota はいずれも同じコマンドのエイリアスです。for-nameClusterResourceQuota オブジェクトの名前です。
    2
    ラベル別にプロジェクトを選択するには、--project-label-selector=key=value 形式を使用してキーと値のペアを指定します。

    これにより、以下の ClusterResourceQuota オブジェクト定義が作成されます。

    apiVersion: quota.openshift.io/v1
    kind: ClusterResourceQuota
    metadata:
      creationTimestamp: null
      name: for-name
    spec:
      quota:
        hard:
          pods: "10"
          secrets: "20"
      selector:
        annotations: null
        labels:
          matchLabels:
            name: frontend