Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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 값을 설정하지 않거나 min0 으로 설정하면 결과가 제한이 없으며 Pod에서 max CPU 값보다 더 많이 사용할 수 있습니다.
5
Pod에서 모든 컨테이너의 노드에 요청할 수 있는 최소 메모리 양입니다. min 값을 설정하지 않거나 min0 으로 설정하면 결과가 제한이 없으며 Pod에서 max 메모리 값보다 더 많이 사용할 수 있습니다.
6
Pod의 단일 컨테이너에서 요청할 수 있는 최대 CPU 양입니다.
7
Pod의 단일 컨테이너에서 요청할 수 있는 최대 메모리 양입니다.
8
Pod의 단일 컨테이너에서 요청할 수 있는 최소 CPU 양입니다. min 값을 설정하지 않거나 min0 으로 설정하면 결과가 제한이 없으며 Pod에서 max CPU 값보다 더 많이 사용할 수 있습니다.
9
Pod의 단일 컨테이너에서 요청할 수 있는 최소 메모리 양입니다. min 값을 설정하지 않거나 min0 으로 설정하면 결과가 제한이 없으며 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 값을 설정하거나 min0 으로 설정하면 결과가 제한이 없으며 Pod에서 max CPU 값보다 더 많이 사용할 수 있습니다.
8
Pod에서 모든 컨테이너의 노드에 요청할 수 있는 최소 메모리 양입니다. min 값을 설정하지 않거나 min0 으로 설정하면 결과의 제한이 없으며 Pod에서 max 메모리 값보다 더 많이 사용할 수 있습니다.

하나의 제한 범위 오브젝트로 코어 및 OpenShift Container Platform 리소스를 모두 지정할 수 있습니다. 두 가지 예에서 명확성을 보여 줍니다.

25.1.1. 컨테이너 제한

지원되는 리소스:

  • CPU
  • 메모리

지원되는 제한 사항:

지정된 경우 컨테이너당 다음 사항이 충족되어야 합니다.

표 25.1. 컨테이너

제약 조건동작

container.resources.requests[resource] (필수) 보다 작거나 같은 min[resource] (필수) container/resources.limits[resource] (선택 사항)

구성에서 min CPU를 정의하는 경우 요청 값은 CPU 값보다 커야 합니다. min 값을 설정하지 않거나 min 0 으로 설정하면 결과가 제한이 없으며 Pod에서 max 값보다 더 많은 리소스를 사용할 수 있습니다.

Max

container.resources.limits[resource] (필수) Max[resource]보다 작거나 같음

구성이 최대 CPU를 정의하는 경우 CPU 요청 값을 정의할 필요가 없습니다. 그러나 제한 범위에 지정된 최대 CPU 제약 조건을 충족하는 제한을 설정해야 합니다.

MaxLimitRequestRatio

maxLimitRequestRatio[resource] 이하(container.resources.limits[resource] / container.resources.requests[resource])

제한 범위가 maxLimitRequestRatio 제약 조건을 정의하는 경우 새 컨테이너에는 requestlimit 값이 모두 있어야 합니다. 또한 OpenShift Container Platform은 제한을 요청으로 나누어 제한요청 비율을 계산합니다. 결과는 1보다 큰 정수여야 합니다.

예를 들어 컨테이너에 cpu가 있는 경우: 제한 값의 500 및 cpu: 100 요청 값에서 cpu 의 제한 대 요청 비율은 5 입니다. 이 비율은 maxLimitRequestRatio보다 작거나 같아야 합니다.

지원되는 기본값:

default[resource]
기본값은 container.resources.limit[resource] 입니다(없으면).
기본 요청[resource]
기본값은 container.resources.requests[resource] 입니다.

25.1.2. Pod 제한

지원되는 리소스:

  • CPU
  • 메모리

지원되는 제한 사항:

Pod의 모든 컨테이너에서 다음 사항이 충족되어야 합니다.

표 25.2. Pod

제약 조건강제 동작

container.resources. requests[resource] 미만인 min[resources.limits[resource] (필수)는 container.resources.limits[resource] 보다 작거나 같습니다. min 값을 설정하지 않거나 min 0 으로 설정하면 결과가 제한이 없으며 Pod에서 max 값보다 더 많은 리소스를 사용할 수 있습니다.

Max

container.resources.limits[resource] (필수) Max[resource] 이하.

MaxLimitRequestRatio

maxLimitRequestRatio[resource] 이하(container.resources.limits[resource] / container.resources.requests[resource]).

25.1.3. 이미지 제한

지원되는 리소스:

  • 스토리지

리소스 유형 이름:

  • openshift.io/Image

지정된 경우 이미지당 다음 사항이 충족되어야 합니다.

표 25.3. Image

제약 조건동작

Max

image.dockerimagemetadata.sizeMax[resource]보다 작거나 같습니다.

참고

제한을 초과하는 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.4. ImageStream

제약 조건동작

Max[openshift.io/image-tags]

length( uniqueimagetags( imagestream.spec.tags )) Max[openshift.io/image-tags]보다 작거나 같음.

uniqueimagetags 는 지정된 사양 태그의 이미지에 대한 고유한 참조를 반환합니다.

Max[openshift.io/images]

length( uniqueimages( imagestream.status.tags )) Max[openshift.io/images] 보다 작거나 같음.

uniqueimages 는 상태 태그에 있는 고유 이미지 이름을 반환합니다. 이름은 이미지의 다이제스트와 동일합니다.

25.1.4.1. 이미지 참조 수

openshift.io/image-tags 리소스는 고유한 이미지 참조를 나타냅니다. 사용 가능한 참조는 ImageStreamTag, ImageStreamImage 또는 DockerImage 입니다. 태그는 oc tag 및 oc import-image 명령을 사용하거나 태그 추적 을 사용하여 생성할 수 있습니다. 내부 참조와 외부 참조는 구분되지 않습니다. 그러나 이미지 스트림 사양에 태그된 각각의 고유 참조는 한 번만 계산됩니다. 내부 컨테이너 이미지 레지스트리에 대한 내보내기는 어떤 방식으로든 제한하지 않지만 태그 제한에 유용합니다.

openshift.io/images 리소스는 이미지 스트림 상태에 기록되는 고유 이미지 이름을 나타냅니다. 내부 레지스트리로 내보낼 수 있는 이미지 수를 제한할 수 있습니다. 내부 및 외부 참조는 구분되지 않습니다.

25.1.5. 영구 볼륨 클레임 제한

지원되는 리소스:

  • 스토리지

지원되는 제한 사항:

프로젝트의 모든 영구 볼륨 클레임에서 다음 사항이 충족되어야 합니다.

표 25.5. Pod

제약 조건강제 동작

min[resource] <= claim.spec.resources.requests[resource] (필수)

Max

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
        }
      }
    ]
  }
}

1
제한 범위 오브젝트의 이름입니다.
2
영구 볼륨 클레임에서 요청할 수 있는 최소 스토리지 양입니다.
3
영구 볼륨 클레임에서 요청할 수 있는 최대 스토리지 양입니다.