5.10. Cluster Resource Override Operator を使用したクラスターレベルのオーバーコミット


Cluster Resource Override Operator は、クラスター内のすべてのノードでオーバーコミットのレベルを制御し、コンテナーの密度を管理できる受付 Webhook です。Operator は、特定のプロジェクトのノードが定義されたメモリーおよび CPU 制限を超える場合に制御します。

Operator は、開発者コンテナーに設定されている要求と制限の比率を変更します。制限とデフォルトを指定するプロジェクトごとの制限範囲と組み合わせることで、必要なレベルのオーバーコミットを実現できます。

次のセクションに示すように、OpenShift Container Platform コンソールまたは CLI を使用して、Cluster Resource Override Operator をインストールする必要があります。Cluster Resource Override Operator をデプロイすると、この Operator が特定の namespace 内のすべての新しい Pod を変更します。この Operator は、Operator をデプロイする前に存在していた Pod は編集しません。

インストール時に、以下の例のように、オーバーコミットのレベルを設定する ClusterResourceOverride カスタムリソース (CR) を作成します。

Copy to Clipboard Toggle word wrap
apiVersion: operator.autoscaling.openshift.io/v1
kind: ClusterResourceOverride
metadata:
    name: cluster 
1

spec:
  podResourceOverride:
    spec:
      memoryRequestToLimitPercent: 50 
2

      cpuRequestToLimitPercent: 25 
3

      limitCPUToMemoryPercent: 200 
4

# ...
1
名前は cluster でなければなりません。
2
オプション: コンテナーのメモリー制限が指定されているか、デフォルトに設定されている場合、メモリー要求は制限のパーセンテージ (1-100) に対して上書きされます。デフォルトは 50 です。
3
オプション: コンテナーの CPU 制限が指定されているか、デフォルトに設定されている場合、CPU 要求は、1-100 までの制限のパーセンテージに対応して上書きされます。デフォルトは 25 です。
4
オプション: コンテナーのメモリー制限が指定されているか、デフォルトに設定されている場合、CPU 制限は、指定されている場合にメモリーのパーセンテージに対して上書きされます。1Gi の RAM の 100 パーセントでのスケーリングは、1 CPU コアに等しくなります。これは、CPU 要求を上書きする前に処理されます (設定されている場合)。デフォルトは 200 です。
注記

コンテナーに制限が設定されていない場合、Cluster Resource Override Operator のオーバーライドは効果がありません。個別プロジェクトごとのデフォルト制限を使用して LimitRange オブジェクトを作成するか、Pod 仕様で制限を設定し、上書きが適用されるようにします。

設定したら、オーバーライドを適用する各プロジェクトの Namespace オブジェクトに次のラベルを適用することで、プロジェクトごとにオーバーライドを有効にできます。たとえば、インフラストラクチャーコンポーネントがオーバーライドの対象にならないようにオーバーライドを設定できます。

Copy to Clipboard Toggle word wrap
apiVersion: v1
kind: Namespace
metadata:

# ...

  labels:
    clusterresourceoverrides.admission.autoscaling.openshift.io/enabled: "true"

# ...

Operator は ClusterResourceOverride CR の有無を監視し、ClusterResourceOverride 受付 Webhook が Operator と同じ namespace にインストールされるようにします。

たとえば、Pod に次のリソース制限があるとします。

Copy to Clipboard Toggle word wrap
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: my-namespace
# ...
spec:
  containers:
    - name: hello-openshift
      image: openshift/hello-openshift
      resources:
        limits:
          memory: "512Mi"
          cpu: "2000m"
# ...

Cluster Resource Override Operator は、元の Pod 要求をインターセプトし、ClusterResourceOverride オブジェクトに設定された設定に従ってリソースをオーバーライドします。

Copy to Clipboard Toggle word wrap
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: my-namespace
# ...
spec:
  containers:
  - image: openshift/hello-openshift
    name: hello-openshift
    resources:
      limits:
        cpu: "1" 
1

        memory: 512Mi
      requests:
        cpu: 250m 
2

        memory: 256Mi
# ...
1
ClusterResourceOverride オブジェクトで limitCPUToMemoryPercent パラメーターが 200 に設定されているため、CPU 制限が 1 にオーバーライドされました。メモリー制限の 200% は 512 Mi であり、CPU で言えば 1 CPU コアです。
2
ClusterResourceOverride オブジェクトで cpuRequestToLimit25 に設定されているため、CPU 要求は 250m になります。1 CPU コアの 25% は 250m です。

5.10.1. Web コンソールを使用した Cluster Resource Override Operator のインストール

OpenShift Container Platform CLI を使用して Cluster Resource Override Operator をインストールし、クラスターでのオーバーコミットを制御できます。

デフォルトでは、インストールプロセスによって、clusterresourceoverride-operator namespace のワーカーノードに Cluster Resource Override Operator Pod が作成されます。必要に応じて、この Pod をインフラストラクチャーノードなどの別のノードに移動できます。インフラストラクチャーノードは、環境の実行に必要なサブスクリプションの合計数にカウントされません。詳細は、「Cluster Resource Override Operator Pod の移動」を参照してください。

前提条件

  • 制限がコンテナーに設定されていない場合、Cluster Resource Override Operator は影響を与えません。LimitRange オブジェクトを使用してプロジェクトのデフォルト制限を指定するか、Pod 仕様で制限を設定して上書きが適用されるようにする必要があります。

手順

OpenShift Container Platform Web コンソールを使用して Cluster Resource Override Operator をインストールするには、以下を実行します。

  1. OpenShift Container Platform Web コンソールで、Home Projects に移動します。

    1. Create Project をクリックします。
    2. clusterresourceoverride-operator をプロジェクトの名前として指定します。
    3. Create をクリックします。
  2. Operators OperatorHub に移動します。

    1. 利用可能な Operator のリストから ClusterResourceOverride Operator を選択し、Install をクリックします。
    2. Install Operator ページで、A specific Namespace on the clusterInstallation Mode に選択されていることを確認します。
    3. clusterresourceoverride-operatorInstalled Namespace に選択されていることを確認します。
    4. Update Channel および Approval Strategy を選択します。
    5. Install をクリックします。
  3. Installed Operators ページで、ClusterResourceOverride をクリックします。

    1. ClusterResourceOverride Operator 詳細ページで、Create ClusterResourceOverride をクリックします。
    2. Create ClusterResourceOverride ページで、YAML view をクリックして、YAML テンプレートを編集し、必要に応じてオーバーコミット値を設定します。

      Copy to Clipboard Toggle word wrap
      apiVersion: operator.autoscaling.openshift.io/v1
      kind: ClusterResourceOverride
      metadata:
        name: cluster 
      1
      
      spec:
        podResourceOverride:
          spec:
            memoryRequestToLimitPercent: 50 
      2
      
            cpuRequestToLimitPercent: 25 
      3
      
            limitCPUToMemoryPercent: 200 
      4
      1
      名前は cluster でなければなりません。
      2
      オプション: コンテナーのメモリー制限をオーバーライドするパーセンテージを 1 - 100 の間で指定します (制限を使用する場合)。デフォルトは 50 です。
      3
      オプション: コンテナーの CPU 制限をオーバーライドするパーセンテージを 1 - 100 の間で指定します (制限を使用する場合)。デフォルトは 25 です。
      4
      オプション: コンテナーのメモリー制限をオーバーライドするパーセンテージを指定します (制限を使用する場合)。1 Gi の RAM を 100 パーセントでスケーリングすることは、1 CPU コアに相当します。これは CPU 要求をオーバーライドする前に処理されます (設定した場合)。デフォルトは 200 です。
    3. Create をクリックします。
  4. クラスターカスタムリソースのステータスをチェックして、受付 Webhook の現在の状態を確認します。

    1. ClusterResourceOverride Operator ページで、cluster をクリックします。
    2. ClusterResourceOverride Details ページで、YAML をクリックします。Webhook の呼び出し時に、mutatingWebhookConfigurationRef セクションが表示されます。

      Copy to Clipboard Toggle word wrap
      apiVersion: operator.autoscaling.openshift.io/v1
      kind: ClusterResourceOverride
      metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
            {"apiVersion":"operator.autoscaling.openshift.io/v1","kind":"ClusterResourceOverride","metadata":{"annotations":{},"name":"cluster"},"spec":{"podResourceOverride":{"spec":{"cpuRequestToLimitPercent":25,"limitCPUToMemoryPercent":200,"memoryRequestToLimitPercent":50}}}}
        creationTimestamp: "2019-12-18T22:35:02Z"
        generation: 1
        name: cluster
        resourceVersion: "127622"
        selfLink: /apis/operator.autoscaling.openshift.io/v1/clusterresourceoverrides/cluster
        uid: 978fc959-1717-4bd1-97d0-ae00ee111e8d
      spec:
        podResourceOverride:
          spec:
            cpuRequestToLimitPercent: 25
            limitCPUToMemoryPercent: 200
            memoryRequestToLimitPercent: 50
      status:
      
      # ...
      
          mutatingWebhookConfigurationRef: 
      1
      
            apiVersion: admissionregistration.k8s.io/v1
            kind: MutatingWebhookConfiguration
            name: clusterresourceoverrides.admission.autoscaling.openshift.io
            resourceVersion: "127621"
            uid: 98b3b8ae-d5ce-462b-8ab5-a729ea8f38f3
      
      # ...
      1
      ClusterResourceOverride 受付 Webhook への参照。

5.10.2. CLI を使用した Cluster Resource Override Operator のインストール

OpenShift Container Platform CLI を使用して Cluster Resource Override Operator をインストールし、クラスターでのオーバーコミットを制御できます。

デフォルトでは、インストールプロセスによって、clusterresourceoverride-operator namespace のワーカーノードに Cluster Resource Override Operator Pod が作成されます。必要に応じて、この Pod をインフラストラクチャーノードなどの別のノードに移動できます。インフラストラクチャーノードは、環境の実行に必要なサブスクリプションの合計数にカウントされません。詳細は、「Cluster Resource Override Operator Pod の移動」を参照してください。

前提条件

  • 制限がコンテナーに設定されていない場合、Cluster Resource Override Operator は影響を与えません。LimitRange オブジェクトを使用してプロジェクトのデフォルト制限を指定するか、Pod 仕様で制限を設定して上書きが適用されるようにする必要があります。

手順

CLI を使用して Cluster Resource Override Operator をインストールするには、以下を実行します。

  1. Cluster Resource Override の namespace を作成します。

    1. Cluster Resource Override Operator の Namespace オブジェクト YAML ファイル (cro-namespace.yaml など) を作成します。

      Copy to Clipboard Toggle word wrap
      apiVersion: v1
      kind: Namespace
      metadata:
        name: clusterresourceoverride-operator
    2. namespace を作成します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f <file-name>.yaml

      以下に例を示します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f cro-namespace.yaml
  2. Operator グループを作成します。

    1. Cluster Resource Override Operator の OperatorGroup オブジェクトの YAML ファイル (cro-og.yaml など) を作成します。

      Copy to Clipboard Toggle word wrap
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: clusterresourceoverride-operator
        namespace: clusterresourceoverride-operator
      spec:
        targetNamespaces:
          - clusterresourceoverride-operator
    2. Operator グループを作成します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f <file-name>.yaml

      以下に例を示します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f cro-og.yaml
  3. サブスクリプションを作成します。

    1. Cluster Resource Override Operator の Subscription オブジェクト YAML ファイル (cro-sub.yaml など) を作成します。

      Copy to Clipboard Toggle word wrap
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: clusterresourceoverride
        namespace: clusterresourceoverride-operator
      spec:
        channel: "stable"
        name: clusterresourceoverride
        source: redhat-operators
        sourceNamespace: openshift-marketplace
    2. サブスクリプションを作成します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f <file-name>.yaml

      以下に例を示します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f cro-sub.yaml
  4. ClusterResourceOverride カスタムリソース (CR) オブジェクトを clusterresourceoverride-operator namespace に作成します。

    1. clusterresourceoverride-operator namespace に切り替えます。

      Copy to Clipboard Toggle word wrap
      $ oc project clusterresourceoverride-operator
    2. Cluster Resource Override Operator の ClusterResourceOverride オブジェクト YAML ファイル (cro-cr.yaml など) を作成します。

      Copy to Clipboard Toggle word wrap
      apiVersion: operator.autoscaling.openshift.io/v1
      kind: ClusterResourceOverride
      metadata:
          name: cluster 
      1
      
      spec:
        podResourceOverride:
          spec:
            memoryRequestToLimitPercent: 50 
      2
      
            cpuRequestToLimitPercent: 25 
      3
      
            limitCPUToMemoryPercent: 200 
      4
      1
      名前は cluster でなければなりません。
      2
      オプション: コンテナーのメモリー制限をオーバーライドするパーセンテージを 1 - 100 の間で指定します (制限を使用する場合)。デフォルトは 50 です。
      3
      オプション: コンテナーの CPU 制限をオーバーライドするパーセンテージを 1 - 100 の間で指定します (制限を使用する場合)。デフォルトは 25 です。
      4
      オプション: コンテナーのメモリー制限をオーバーライドするパーセンテージを指定します (制限を使用する場合)。1 Gi の RAM を 100 パーセントでスケーリングすることは、1 CPU コアに相当します。これは CPU 要求をオーバーライドする前に処理されます (設定した場合)。デフォルトは 200 です。
    3. ClusterResourceOverride オブジェクトを作成します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f <file-name>.yaml

      以下に例を示します。

      Copy to Clipboard Toggle word wrap
      $ oc create -f cro-cr.yaml
  5. クラスターカスタムリソースのステータスをチェックして、受付 Webhook の現在の状態を確認します。

    Copy to Clipboard Toggle word wrap
    $ oc get clusterresourceoverride cluster -n clusterresourceoverride-operator -o yaml

    Webhook の呼び出し時に、mutatingWebhookConfigurationRef セクションが表示されます。

    出力例

    Copy to Clipboard Toggle word wrap
    apiVersion: operator.autoscaling.openshift.io/v1
    kind: ClusterResourceOverride
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"operator.autoscaling.openshift.io/v1","kind":"ClusterResourceOverride","metadata":{"annotations":{},"name":"cluster"},"spec":{"podResourceOverride":{"spec":{"cpuRequestToLimitPercent":25,"limitCPUToMemoryPercent":200,"memoryRequestToLimitPercent":50}}}}
      creationTimestamp: "2019-12-18T22:35:02Z"
      generation: 1
      name: cluster
      resourceVersion: "127622"
      selfLink: /apis/operator.autoscaling.openshift.io/v1/clusterresourceoverrides/cluster
      uid: 978fc959-1717-4bd1-97d0-ae00ee111e8d
    spec:
      podResourceOverride:
        spec:
          cpuRequestToLimitPercent: 25
          limitCPUToMemoryPercent: 200
          memoryRequestToLimitPercent: 50
    status:
    
    # ...
    
        mutatingWebhookConfigurationRef: 
    1
    
          apiVersion: admissionregistration.k8s.io/v1
          kind: MutatingWebhookConfiguration
          name: clusterresourceoverrides.admission.autoscaling.openshift.io
          resourceVersion: "127621"
          uid: 98b3b8ae-d5ce-462b-8ab5-a729ea8f38f3
    
    # ...

    1
    ClusterResourceOverride 受付 Webhook への参照。

5.10.3. クラスターレベルのオーバーコミットの設定

Cluster Resource Override Operator には、Operator がオーバーコミットを制御する必要のある各プロジェクトの ClusterResourceOverride カスタムリソース (CR) およびラベルが必要です。

デフォルトでは、インストールプロセスによって、clusterresourceoverride-operator namespace のコントロールプレーンノードに 2 つの Cluster Resource Override Pod が作成されます。必要に応じて、これらの Pod をインフラストラクチャーノードなどの他のノードに移動できます。インフラストラクチャーノードは、環境の実行に必要なサブスクリプションの合計数にカウントされません。詳細は、「Cluster Resource Override Operator Pod の移動」を参照してください。

前提条件

  • 制限がコンテナーに設定されていない場合、Cluster Resource Override Operator は影響を与えません。LimitRange オブジェクトを使用してプロジェクトのデフォルト制限を指定するか、Pod 仕様で制限を設定して上書きが適用されるようにする必要があります。

手順

クラスターレベルのオーバーコミットを変更するには、以下を実行します。

  1. ClusterResourceOverride CR を編集します。

    Copy to Clipboard Toggle word wrap
    apiVersion: operator.autoscaling.openshift.io/v1
    kind: ClusterResourceOverride
    metadata:
        name: cluster
    spec:
      podResourceOverride:
        spec:
          memoryRequestToLimitPercent: 50 
    1
    
          cpuRequestToLimitPercent: 25 
    2
    
          limitCPUToMemoryPercent: 200 
    3
    
    # ...
    1
    オプション: コンテナーのメモリー制限をオーバーライドするパーセンテージを 1 - 100 の間で指定します (制限を使用する場合)。デフォルトは 50 です。
    2
    オプション: コンテナーの CPU 制限をオーバーライドするパーセンテージを 1 - 100 の間で指定します (制限を使用する場合)。デフォルトは 25 です。
    3
    オプション: コンテナーのメモリー制限をオーバーライドするパーセンテージを指定します (制限を使用する場合)。1Gi の RAM の 100 パーセントでのスケーリングは、1 CPU コアに等しくなります。これは CPU 要求をオーバーライドする前に処理されます (設定した場合)。デフォルトは 200 です。
  2. 以下のラベルが Cluster Resource Override Operator がオーバーコミットを制御する必要のある各プロジェクトの namespace オブジェクトに追加されていることを確認します。

    Copy to Clipboard Toggle word wrap
    apiVersion: v1
    kind: Namespace
    metadata:
    
    # ...
    
      labels:
        clusterresourceoverrides.admission.autoscaling.openshift.io/enabled: "true" 
    1
    
    
    # ...
    1
    このラベルを各プロジェクトに追加します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.