25장. 제한 범위 설정
25.1. 제한 범위를 위한 목적
LimitRange
오브젝트에서 정의하는 제한 범위는 포드, 컨테이너, 이미지, 이미지 스트림, 영구 볼륨 클레임 수준의 프로젝트에서 컴퓨팅 리소스 제약 조건을 열거하고 포드, 컨테이너, 이미지, 이미지 스트림 또는 영구 볼륨 클레임이 사용할 수 있는 리소스 양을 지정합니다.
리소스 생성 및 수정을 위한 모든 요청은 프로젝트의 각 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
- 컨테이너에 대한 최대 제한 대 요청 비율입니다.
CPU 및 메모리를 측정하는 방법에 대한 자세한 내용은 Compute Resources 를 참조하십시오.
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 max: cpu: "1" 7 memory: "1Gi" 8
- 1
- 내부 레지스트리로 내보낼 수 있는 이미지의 최대 크기입니다.
- 2
- 이미지 스트림 사양에 정의된 최대 고유 이미지 태그 수입니다.
- 3
- 이미지 스트림 상태 사양에 정의된 최대 고유 이미지 참조 수입니다.
- 4
- Pod가 노드의 모든 컨테이너에서 요청할 수 있는 최대 CPU 양입니다.
- 5
- Pod에서 모든 컨테이너의 노드에 요청할 수 있는 최대 메모리 양입니다.
- 6
- 임시 스토리지 기술 프리뷰가 활성화된 경우 Pod가 모든 컨테이너에서 노드에 요청할 수 있는 최대 임시 스토리지 양입니다.
- 7
- Pod에서 모든 컨테이너의 노드에 요청할 수 있는 최소 CPU 양입니다.
min 값을 설정하거나 min
을0
으로
설정하면 결과가 제한이 없으며 Pod에서max
CPU 값보다 더 많이 사용할 수 있습니다. - 8
- Pod에서 모든 컨테이너의 노드에 요청할 수 있는 최소 메모리 양입니다.
min 값을 설정하지 않거나 min
을0
으로
설정하면 결과의 제한이 없으며 Pod에서max
메모리 값보다 더 많이 사용할 수 있습니다.
하나의 제한 범위 오브젝트로 코어 및 OpenShift Container Platform 리소스를 모두 지정할 수 있습니다. 두 가지 예에서 명확성을 보여 줍니다.
25.1.1. 컨테이너 제한
지원되는 리소스:
- CPU
- 메모리
지원되는 제한 사항:
지정된 경우 컨테이너당 다음 사항이 충족되어야 합니다.
제약 조건 | 동작 |
---|---|
|
구성에서 |
|
구성이 |
|
제한 범위가
예를 들어 컨테이너에 |
지원되는 기본값:
default[resource]
-
기본값은
container.resources.limit[resource]
입니다(없으면). 기본 요청[resource]
-
기본값은
container.resources.requests[resource]
입니다.
25.1.2. Pod 제한
지원되는 리소스:
- CPU
- 메모리
지원되는 제한 사항:
Pod의 모든 컨테이너에서 다음 사항이 충족되어야 합니다.
제약 조건 | 강제 동작 |
---|---|
|
|
|
|
|
|
25.1.3. 이미지 제한
지원되는 리소스:
- 스토리지
리소스 유형 이름:
-
openshift.io/Image
지정된 경우 이미지당 다음 사항이 충족되어야 합니다.
제약 조건 | 동작 |
---|---|
|
|
제한을 초과하는 Blob이 레지스트리에 업로드되지 않도록 하려면 할당량을 적용하도록 레지스트리를 구성해야 합니다. REGISTRY_MIDDLEWARE_REPOSITORY_OPENSHIFT_ENFORCEQUOTA
환경 변수를 true
로 설정해야 합니다. 기본적으로 환경 변수는 새 배포의 경우 true
로 설정됩니다.
업로드된 이미지의 매니페스트에서 이미지 크기를 항상 사용할 수 있는 것은 아닙니다. 특히 Docker 1.10 이상으로 빌드하여 v2 레지스트리로 내보낸 이미지의 경우 그러합니다. 이전 Docker 데몬을 사용하여 이러한 이미지를 가져오면 레지스트리에서 이미지 매니페스트를 스키마 v1로 변환하고 모든 크기 정보를 포함하지 않습니다. 이미지에 스토리지 제한이 설정되어 있지 않으므로 업로드할 수 없습니다.
문제가 처리되고 있습니다.
25.1.4. 이미지 스트림 제한
지원되는 리소스:
-
openshift.io/image-tags
-
openshift.io/images
리소스 유형 이름:
-
openshift.io/ImageStream
이미지 스트림당 지정된 경우 다음 사항이 충족되어야 합니다.
제약 조건 | 동작 |
---|---|
|
|
|
|
25.1.4.1. 이미지 참조 수
openshift.io/image-tags
리소스는 고유한 이미지 참조를 나타냅니다. 사용 가능한 참조는 ImageStreamTag
, ImageStreamImage
또는 DockerImage
입니다. 태그는 oc tag 및 oc
import-image
명령을 사용하거나 태그 추적 을 사용하여 생성할 수 있습니다. 내부 참조와 외부 참조는 구분되지 않습니다. 그러나 이미지 스트림 사양에 태그된 각각의 고유 참조는 한 번만 계산됩니다. 내부 컨테이너 이미지 레지스트리에 대한 내보내기는 어떤 방식으로든 제한하지 않지만 태그 제한에 유용합니다.
openshift.io/images
리소스는 이미지 스트림 상태에 기록되는 고유 이미지 이름을 나타냅니다. 내부 레지스트리로 내보낼 수 있는 이미지 수를 제한할 수 있습니다. 내부 및 외부 참조는 구분되지 않습니다.
25.1.5. 영구 볼륨 클레임 제한
지원되는 리소스:
- 스토리지
지원되는 제한 사항:
프로젝트의 모든 영구 볼륨 클레임에서 다음 사항이 충족되어야 합니다.
제약 조건 | 강제 동작 |
---|---|
| min[resource] <= claim.spec.resources.requests[resource] (필수) |
| claim.spec.resources.requests[resource] (필수) <= Max[resource] |
제한 범위 오브젝트 정의
{ "apiVersion": "v1", "kind": "LimitRange", "metadata": { "name": "pvcs" 1 }, "spec": { "limits": [{ "type": "PersistentVolumeClaim", "min": { "storage": "2Gi" 2 }, "max": { "storage": "50Gi" 3 } } ] } }