8.7. LimitRange オブジェクト内の制限範囲
オブジェクトレベルでコンピューティングリソースの制約を定義するには、LimitRange オブジェクトを作成します。このオブジェクトを作成することで、個々の Pod、コンテナー、イメージ、または永続ボリューム要求が消費できるリソースの正確な量を指定できます。
すべてのリソース作成および変更要求は、プロジェクトのそれぞれの LimitRange オブジェクトに対して評価されます。リソースが列挙される制約のいずれかに違反する場合、そのリソースは拒否されます。リソースが明示的な値を指定しない場合で、制約がデフォルト値をサポートする場合は、デフォルト値がリソースに適用されます。
CPU とメモリーの制限について、最大値を指定しても最小値を指定しない場合、リソースは最大値よりも多くの CPU とメモリーリソースを消費する可能性があります。
コア制限範囲オブジェクトの定義
apiVersion: "v1"
kind: "LimitRange"
metadata:
name: "core-resource-limits"
spec:
limits:
- type: "Pod"
max:
cpu: "2"
memory: "1Gi"
min:
cpu: "200m"
memory: "6Mi"
- type: "Container"
max:
cpu: "2"
memory: "1Gi"
min:
cpu: "100m"
memory: "4Mi"
default:
cpu: "300m"
memory: "200Mi"
defaultRequest:
cpu: "200m"
memory: "100Mi"
maxLimitRequestRatio:
cpu: "10"
# ...
ここでは、以下のようになります。
metadata.name- 制限範囲オブジェクトの名前を指定します。
最大 CPU- ノード上のすべてのコンテナーにおいて、Pod が要求できる最大 CPU 量を指定します。
最大メモリー- ノード上のすべてのコンテナーにおいて、Pod が要求できる最大メモリー量を指定します。
最小 CPU-
ノード上のすべてのコンテナーにおいて、Pod が要求できる最小 CPU 量を指定します。
min値を設定しない場合や、minを0に設定すると、結果は制限されず、Pod はmaxCPU 値を超える量を消費することができます。 最小メモリー-
ノード上のすべてのコンテナーにおいて、Pod が要求できる最小メモリー量を指定します。
min値を設定しない場合や、minを0に設定すると、結果は制限されず、Pod はmaxメモリー値を超える量を消費することができます。 最大 CPU- Pod 内の単一コンテナーが要求できる最大 CPU 量を指定します。
最大メモリー- Pod 内の単一コンテナーが要求できる最大メモリー量を指定します。
最小 CPU-
Pod 内の単一コンテナーが要求できる最小 CPU 量を指定します。
min値を設定しない場合や、minを0に設定すると、結果は制限されず、Pod はmaxCPU 値を超える量を消費することができます。 最大メモリー-
Pod 内の単一コンテナーが要求できる最小メモリー量を指定します。
min値を設定しない場合や、minを0に設定すると、結果は制限されず、Pod はmaxメモリー値を超える量を消費することができます。 デフォルト.CPU- Pod 仕様で制限を指定しない場合に、コンテナーのデフォルトの CPU 制限を指定します。
デフォルトメモリー- Pod の仕様でメモリー制限を指定しない場合に、コンテナーのデフォルトのメモリー制限を指定します。
defaultRequest.cpu- Pod 仕様で要求を指定しない場合に、コンテナーのデフォルトの CPU 要求を指定します。
デフォルトリクエストのメモリー- Pod 仕様でメモリー要求を指定しない場合に、コンテナーのデフォルトのメモリー要求を指定します。
maxLimitRequestRatio.cpu- コンテナーの最大制限対リクエスト比率を指定します。
OpenShift Container Platform の制限範囲オブジェクトの定義
apiVersion: "v1"
kind: "LimitRange"
metadata:
name: "openshift-resource-limits"
spec:
limits:
- type: openshift.io/Image
max:
storage: 1Gi
- type: openshift.io/ImageStream
max:
openshift.io/image-tags: 20
openshift.io/images: 30
- type: "Pod"
max:
cpu: "2"
memory: "1Gi"
ephemeral-storage: "1Gi"
min:
cpu: "1"
memory: "1Gi"
# ...
ここでは、以下のようになります。
制限.最大ストレージ- 内部レジストリーにプッシュできるイメージの最大サイズを指定します。
limits.max.openshift.io/image-tags- イメージストリームの仕様で定義されている、一意のイメージタグの最大数を指定します。
limits.max.openshift.io/images- イメージストリームの状態に関する仕様で定義されている、一意のイメージ参照の最大数を指定します。
タイプ.最大 CPU- ノード上のすべてのコンテナーにおいて、Pod が要求できる最大 CPU 量を指定します。
タイプ.最大メモリー- ノード上のすべてのコンテナーにおいて、Pod が要求できる最大メモリー量を指定します。
タイプ.最大一時ストレージ- ノード上のすべてのコンテナーにおいて、Pod が要求できる一時ストレージの最大量を指定します。
最小 CPU- ノード上のすべてのコンテナーにおいて、Pod が要求できる最小 CPU 量を指定します。重要な情報は、「サポートされる制約」の表を参照してください。
最小メモリー-
ノード上のすべてのコンテナーにおいて、Pod が要求できる最小メモリー量を指定します。
min値を設定しない場合や、minを0に設定すると、結果は制限されず、Pod はmaxメモリー値を超える量を消費することができます。
コアおよび OpenShift Container Platform リソースの両方を 1 つの制限範囲オブジェクトで指定できます。
8.7.1. コンテナーの制限 リンクのコピーリンクがクリップボードにコピーされました!
LimitRange オブジェクトを作成した後、コンテナーが消費できるリソースの正確な量を指定できます。
コンテナーが消費できるリソースのリストを以下に示します。
- CPU
- メモリー
以下の表は、コンテナーでサポートされている制約を示しています。指定されている場合、制約は各コンテナーに対して満たされなければならない。
| 制約 | 動作 |
|---|---|
|
|
設定で |
|
|
設定で |
|
|
制限範囲で
たとえば、コンテナーの |
コンテナーが消費できるデフォルトのリソースを以下に示します。
-
Default[<resource>]: 指定がない場合、container.resources.limit[<resource>]を指定された値にデフォルト設定します。 -
Default Requests[<resource>]: 指定がない場合、container.resources.requests[<resource>]を指定された値にデフォルト設定します。