5.3. 制限範囲の設定
LimitRange
オブジェクトによって定義される制限範囲は、Pod、コンテナー、イメージ、イメージストリーム、および永続ボリューム要求レベルでのコンピュートリソース制約を定義します。制限範囲は、Pod、コンテナー、イメージ、イメージストリーム、または永続ボリューム要求が消費できるリソースの量を指定します。
すべてのリソース作成および変更要求は、プロジェクトのそれぞれの LimitRange
オブジェクトに対して評価されます。リソースが列挙される制約のいずれかに違反する場合、そのリソースは拒否されます。リソースが明示的な値を指定しない場合で、制約がデフォルト値をサポートする場合は、デフォルト値がリソースに適用されます。
CPU とメモリーの制限について、最大値を指定しても最小値を指定しない場合、リソースは最大値よりも多くの CPU とメモリーリソースを消費する可能性があります。
コア制限範囲オブジェクトの定義
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 の最小量です。
min
値を設定しない場合や、min
を0
に設定すると、結果は制限されず、Pod はmax
CPU 値を超える量を消費することができます。 - 5
- すべてのコンテナーにおいて Pod がノードで要求できるメモリーの最小量です。
min
値を設定しない場合や、min
を0
に設定すると、結果は制限されず、Pod はmax
メモリー値を超える量を消費することができます。 - 6
- Pod の単一コンテナーが要求できる CPU の最大量です。
- 7
- Pod の単一コンテナーが要求できるメモリーの最大量です。
- 8
- Pod の単一コンテナーが要求できる CPU の最小量です。
min
値を設定しない場合や、min
を0
に設定すると、結果は制限されず、Pod はmax
CPU 値を超える量を消費することができます。 - 9
- Pod の単一コンテナーが要求できるメモリーの最小量です。
min
値を設定しない場合や、min
を0
に設定すると、結果は制限されず、Pod はmax
メモリー値を超える量を消費することができます。 - 10
- Pod 仕様で制限を指定しない場合の、コンテナーのデフォルトの CPU 制限。
- 11
- Pod 仕様で制限を指定しない場合の、コンテナーのデフォルトのメモリー制限。
- 12
- Pod 仕様で要求を指定しない場合の、コンテナーのデフォルトの CPU 要求。
- 13
- Pod 仕様で要求を指定しない場合の、コンテナーのデフォルトのメモリー要求。
- 14
- コンテナーの要求に対する制限の最大比率。
OpenShift Container Platform の制限範囲オブジェクトの定義
apiVersion: "v1" kind: "LimitRange" metadata: name: "openshift-resource-limits" spec: limits: - type: openshift.io/Image max: storage: 1Gi 1 - type: openshift.io/ImageStream max: openshift.io/image-tags: 20 2 openshift.io/images: 30 3 - type: "Pod" max: cpu: "2" 4 memory: "1Gi" 5 ephemeral-storage: "1Gi" 6 min: cpu: "1" 7 memory: "1Gi" 8
- 1
- 内部レジストリーにプッシュできるイメージの最大サイズ。
- 2
- イメージストリームの仕様で定義される一意のイメージタグの最大数。
- 3
- イメージストリームのステータスについて仕様で定義される一意のイメージ参照の最大数。
- 4
- すべてのコンテナーにおいて Pod がノードで要求できる CPU の最大量です。
- 5
- すべてのコンテナーにおいて Pod がノードで要求できるメモリーの最大量です。
- 6
- すべてのコンテナーにわたって、Pod がノード上で要求できる一時ストレージの最大量。
- 7
- すべてのコンテナーにおいて Pod がノードで要求できる CPU の最小量です。重要な情報は、「サポートされる制約」の表を参照してください。
- 8
- すべてのコンテナーにおいて Pod がノードで要求できるメモリーの最小量です。
min
値を設定しない場合や、min
を0
に設定すると、結果の制限がなく、Pod はmax
メモリー値を超える量を消費することができます。
コアおよび OpenShift Container Platform リソースの両方を 1 つの制限範囲オブジェクトで指定できます。
5.3.1. コンテナーの制限
サポートされるリソース:
- CPU
- メモリー
サポートされる制約
コンテナーごとに設定されます。 指定される場合、以下を満たしている必要があります。
コンテナー
制約 | 動作 |
---|---|
|
設定で |
|
設定で |
|
制限範囲で
たとえば、コンテナーの |
サポートされるデフォルト:
Default[<resource>]
-
指定がない場合は
container.resources.limit[<resource>]
を所定の値にデフォルト設定します。 Default Requests[<resource>]
-
指定がない場合は、
container.resources.requests[<resource>]
を所定の値にデフォルト設定します。
5.3.2. Pod の制限
サポートされるリソース:
- CPU
- メモリー
サポートされる制約:
Pod のすべてのコンテナーにおいて、以下を満たしている必要があります。
制約 | 実施される動作 |
---|---|
|
|
|
|
|
|
5.3.3. イメージの制限
サポートされるリソース:
- ストレージ
リソースタイプ名:
-
openshift.io/Image
イメージごとに設定されます。 指定される場合、以下が一致している必要があります。
制約 | 動作 |
---|---|
|
|
制限を超える Blob がレジストリーにアップロードされないようにするために、クォータを実施するようレジストリーを設定する必要があります。REGISTRY_MIDDLEWARE_REPOSITORY_OPENSHIFT_ENFORCEQUOTA
環境変数を true
に設定する必要があります。デフォルトでは、新規デプロイメントでは、環境変数は true
に設定されます。
5.3.4. イメージストリームの制限
サポートされるリソース:
-
openshift.io/image-tags
-
openshift.io/images
リソースタイプ名:
-
openshift.io/ImageStream
イメージストリームごとに設定されます。 指定される場合、以下が一致している必要があります。
制約 | 動作 |
---|---|
|
|
|
|
5.3.5. イメージ参照のカウント
openshift.io/image-tags
リソースは、一意のストリーム制限を表します。使用可能な参照は、ImageStreamTag
、ImageStreamImage
、または DockerImage
になります。タグは、oc tag
コマンドと oc import-image
コマンドを使用するか、イメージストリームを使用して作成できます。内部参照か外部参照であるかの区別はありません。ただし、イメージストリームの仕様でタグ付けされる一意の参照は、それぞれ 1 回のみカウントされます。内部コンテナーイメージレジストリーへのプッシュを制限しませんが、タグの制限に役立ちます。
openshift.io/images
リソースは、イメージストリームのステータスに記録される一意のイメージ名を表します。内部レジストリーにプッシュできる複数のイメージを制限するのに役立ちます。内部参照か外部参照であるかの区別はありません。
5.3.6. PersistentVolumeClaim の制限
サポートされるリソース:
- ストレージ
サポートされる制約:
プロジェクトのすべての永続ボリューム要求において、以下が一致している必要があります。
制約 | 実施される動作 |
---|---|
| Min[<resource>] <= claim.spec.resources.requests[<resource>] (必須) |
| claim.spec.resources.requests[<resource>] (必須) <= Max[<resource>] |
Limit Range オブジェクトの定義
{ "apiVersion": "v1", "kind": "LimitRange", "metadata": { "name": "pvcs" 1 }, "spec": { "limits": [{ "type": "PersistentVolumeClaim", "min": { "storage": "2Gi" 2 }, "max": { "storage": "50Gi" 3 } } ] } }
関連情報
ストリームの制限の詳細は、イメージストリームの管理 を参照してください。
詳細は、ストリーム制限 を参照してください。
詳細は、コンピュートリソースの制約 を参照してください。
CPU とメモリーの測定方法の詳細は、推奨されるコントロールプレーンのプラクティス を参照してください。
一時ストレージの制限とリクエストを指定できます。この機能の詳細は、一時ストレージについて を参照してください。