Red Hat Training

A Red Hat training course is available for OpenShift Online

14.3. 制限範囲

LimitRange オブジェクトで定義される制限範囲は、Pod、コンテナー、イメージ、イメージストリーム、および Persistent Volume Claim (永続ボリューム要求、PVC) のレベルでプロジェクトコンピュートリソース制約を列挙し、Pod、コンテナー、イメージ、イメージストリームまたは Persistent Volume Claim (永続ボリューム要求、PVC) で消費できるリソースの量を指定します。

すべてのリソース作成および変更要求は、プロジェクトの各 LimitRange オブジェクトに対して評価されます。リソースが列挙される制約に違反する場合、そのリソースは拒否されます。リソースが明示的な値を指定しない場合で、制約がデフォルト値をサポートする場合は、デフォルト値がリソースに適用されます。

注記

制限範囲はクラスター管理者によって設定され、所定プロジェクトにスコープが設定されます。

14.3.1. 制限範囲の表示

web コンソールでプロジェクトの Quota ページに移動し、プロジェクトで定義される制限範囲を表示できます。

CLI を使用して制限範囲の詳細を表示することもできます。

  1. まず、プロジェクトで定義される制限範囲の一覧を取得します。たとえば、demoproject というプロジェクトの場合は以下のようになります。

    $ oc get limits -n demoproject
    NAME              AGE
    resource-limits   6d
  2. 次に、関連のある制限範囲の説明を表示します。 たとえば、resource-limits 制限範囲の場合は以下のようになります。

    $ oc describe limits resource-limits -n demoproject
    Name:                           resource-limits
    Namespace:                      demoproject
    Type                            Resource                Min     Max     Default Request Default Limit   Max Limit/Request Ratio
    ----                            --------                ---     ---     --------------- -------------   -----------------------
    Pod                             cpu                     200m    2       -               -               -
    Pod                             memory                  6Mi     1Gi     -               -               -
    Container                       cpu                     100m    2       200m            300m            10
    Container                       memory                  4Mi     1Gi     100Mi           200Mi           -
    openshift.io/Image              storage                 -       1Gi     -               -               -
    openshift.io/ImageStream        openshift.io/image      -       12      -               -               -
    openshift.io/ImageStream        openshift.io/image-tags -       10      -               -               -

詳細の制限範囲の定義は、オブジェクトで oc export を実行して表示できます。以下は、制限範囲の定義例を示しています。

重要

OpenShift Online Pro の場合、Pod の最大メモリーは 3Gi です。指定できる最小 Pod またはコンテナーのメモリーは 100Mi です。

OpenShift Online Starter の場合、Pod の最大メモリーは 1Gi です。指定できる最小 Pod またはコンテナーのメモリーは 200Mi です。

コア Limit Range オブジェクトの定義

apiVersion: "v1"
kind: "LimitRange"
metadata:
  name: "core-resource-limits" 1
spec:
  limits:
    - type: "Pod"
      max:
        cpu: "2" 2
        memory: "1Gi" 3
      min:
        cpu: "200m" 4
        memory: "6Mi" 5
    - type: "Container"
      max:
        cpu: "2" 6
        memory: "1Gi" 7
      min:
        cpu: "100m" 8
        memory: "4Mi" 9
      default:
        cpu: "300m" 10
        memory: "200Mi" 11
      defaultRequest:
        cpu: "200m" 12
        memory: "100Mi" 13
      maxLimitRequestRatio:
        cpu: "10" 14

1
制限範囲オブジェクトの名前です。
2
すべてのコンテナーにおいて Pod がノードで要求できる CPU の最大量です。
3
すべてのコンテナーにおいて Pod がノードで要求できるメモリーの最大量です。
4
すべてのコンテナーにおいて Pod がノードで要求できる CPU の最小量です。
5
すべてのコンテナーにおいて Pod がノードで要求できるメモリーの最小量です。
6
Pod の単一コンテナーが要求できる CPU の最大量です。
7
Pod の単一コンテナーが要求できるメモリーの最大量です。
8
Pod の単一コンテナーが要求できる CPU の最小量です。
9
Pod の単一コンテナーが要求できるメモリーの最小量です。
10
指定がない場合、コンテナーによる使用を制限する CPU のデフォルト量です。
11
コンテナーによる使用を制限するメモリーのデフォルト量です (指定がない場合)。
12
コンテナーが使用を要求する CPU のデフォルト量です (指定がない場合)。
13
コンテナーが使用を要求するメモリーのデフォルト量です (指定がない場合)。
14
制限の要求に対する比率でコンテナーで実行できる CPU バーストの最大量です。

CPU およびメモリーの測定方法についての詳細は、「コンピュートリソース」を参照してください。

14.3.2. コンテナーの制限

サポートされるリソース:

  • CPU
  • メモリー

サポートされる制約:

コンテナーごとに設定されます。 指定される場合、以下を満たしている必要があります。

表14.4 コンテナー

制約動作

Min

Min[resource]: container.resources.requests[resource] (必須) または container/resources.limits[resource] (オプション) 以下

設定で min CPU を定義している場合、要求値はその CPU 値よりも大きくなければなりません。制限値を指定する必要はありません。

Max

container.resources.limits[resource] (必須): Max[resource] 以下

設定で max CPU を定義している場合、要求値を定義する必要はありませんが、CPU 制約の最大値の条件を満たす制限値を設定する必要があります。

MaxLimitRequestRatio

MaxLimitRequestRatio[resource]: ( container.resources.limits[resource] / container.resources.requests[resource]) 以下

設定で maxLimitRequestRatio 値を定義している場合に、新規コンテナーには要求値および制限値の両方が必要になります。さらに OpenShift Online は、制限を要求で除算して制限の要求に対する比率を算出します。この値は、1 より大きい正の整数でなければなりません。

たとえば、コンテナーのlimit 値が cpu: 500 で、request 値が cpu: 100 である場合、cpu の要求に対する制限の比は 5 になります。この比率は maxLimitRequestRatio より小さいか等しくなければなりません。

サポートされるデフォルト:

Default[resource]
指定がない場合は container.resources.limit[resource] を所定の値にデフォルト設定します。
Default Requests[resource]
指定がない場合は、container.resources.requests[resource] を所定の値にデフォルト設定します。

14.3.3. Pod の制限

サポートされるリソース:

  • CPU
  • メモリー

サポートされる制約:

Pod のすべてのコンテナーにおいて、以下を満たしている必要があります。

表14.5 Pod

制約実施される動作

Min

Min[resource]: container.resources.requests[resource] (必須) または container.resources.limits[resource] (オプション) 以下

Max

container.resources.limits[resource] (必須): Max[resource] 以下

MaxLimitRequestRatio

MaxLimitRequestRatio[resource]: (container.resources.limits[resource] / container.resources.requests[resource]) 以下