5장. 할당량 및 제한 범위 사용
ResourceQuota
오브젝트에서 정의하는 리소스 할당량은 프로젝트당 집계 리소스 사용을 제한하는 제약 조건을 제공합니다. 프로젝트에서 생성할 수 있는 오브젝트의 수량을 유형별로 제한하고 해당 프로젝트의 리소스에서 사용할 수 있는 컴퓨팅 리소스 및 스토리지의 총 양을 제한할 수 있습니다.
클러스터 관리자는 할당량 및 제한 범위를 사용하여 프로젝트에 사용되는 오브젝트 수 또는 컴퓨팅 리소스 양을 제한하는 제약 조건을 설정할 수 있습니다. 이렇게 하면 클러스터 관리자가 모든 프로젝트에서 리소스를 보다 효과적으로 관리하고 할당하며 클러스터 크기에 적합한 프로젝트가 없는지 확인할 수 있습니다.
할당량은 클러스터 관리자가 설정하고 지정된 프로젝트로 범위가 지정됩니다. OpenShift Container Platform 프로젝트 소유자는 프로젝트의 할당량을 변경할 수 있지만 범위를 제한할 수는 없습니다. OpenShift Container Platform 사용자는 할당량 또는 제한 범위를 수정할 수 없습니다.
다음 섹션에서는 할당량 및 제한 범위 설정, 제한할 수 있는 작업 종류 및 자체 Pod 및 컨테이너에서 컴퓨팅 리소스를 요청하거나 제한하는 방법을 확인하는 방법을 설명합니다.
5.1. 할당량으로 관리하는 리소스 링크 복사링크가 클립보드에 복사되었습니다!
ResourceQuota
오브젝트에서 정의하는 리소스 할당량은 프로젝트당 집계 리소스 사용을 제한하는 제약 조건을 제공합니다. 프로젝트에서 생성할 수 있는 오브젝트의 수량을 유형별로 제한하고 해당 프로젝트의 리소스에서 사용할 수 있는 컴퓨팅 리소스 및 스토리지의 총 양을 제한할 수 있습니다.
다음은 할당량으로 관리할 수 있는 컴퓨팅 리소스 및 오브젝트 유형 세트를 설명합니다.
status.phase
이 Failed
또는 Succeeded
인 경우 Pod는 터미널 상태에 있습니다.
리소스 이름 | 설명 |
---|---|
|
터미널이 아닌 상태에서 모든 Pod의 CPU 요청 합계는 이 값을 초과할 수 없습니다. |
|
터미널이 아닌 상태에서 모든 Pod의 메모리 요청 합계는 이 값을 초과할 수 없습니다. |
|
터미널이 아닌 상태에서 모든 Pod의 로컬 임시 스토리지 요청 합계는 이 값을 초과할 수 없습니다. |
|
터미널이 아닌 상태에서 모든 Pod의 CPU 요청 합계는 이 값을 초과할 수 없습니다. |
|
터미널이 아닌 상태에서 모든 Pod의 메모리 요청 합계는 이 값을 초과할 수 없습니다. |
|
터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 요청 합계는 이 값을 초과할 수 없습니다. |
| 터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 이 값을 초과할 수 없습니다. |
| 터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 이 값을 초과할 수 없습니다. |
| 터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 이 값을 초과할 수 없습니다. 이 리소스는 임시 스토리지 기술 프리뷰를 활성화한 경우에만 사용할 수 있습니다. 이 기능은 기본적으로 비활성화되어 있습니다. |
리소스 이름 | 설명 |
---|---|
| 상태와 관계없이 모든 영구 볼륨 클레임의 스토리지 요청 합계는 이 값을 초과할 수 없습니다. |
| 프로젝트에 존재할 수 있는 총 영구 볼륨 클레임 수입니다. |
| 상태와 관계없이 일치하는 스토리지 클래스가 있는 모든 영구 볼륨 클레임의 스토리지 요청 합계는 이 값을 초과할 수 없습니다. |
| 프로젝트에 존재할 수 있는, 일치하는 스토리지 클래스가 있는 총 영구 볼륨 클레임 수입니다. |
리소스 이름 | 설명 |
---|---|
| 프로젝트에 존재할 수 있는 터미널이 아닌 상태의 총 Pod 수입니다. |
| 프로젝트에 존재할 수 있는 총 복제 컨트롤러 수입니다. |
| 프로젝트에 존재할 수 있는 총 리소스 할당량 수입니다. |
| 프로젝트에 존재할 수 있는 총 서비스 수입니다. |
| 프로젝트에 존재할 수 있는 총 시크릿 수입니다. |
|
프로젝트에 존재할 수 있는 총 |
| 프로젝트에 존재할 수 있는 총 영구 볼륨 클레임 수입니다. |
| 프로젝트에 존재할 수 있는 총 이미지 스트림 수입니다. |
oc create quota <name> --hard=count/<resource>.<group>=<quota>
$ oc create quota <name> --hard=count/<resource>.<group>=<quota>
- 1
<resource>
는 리소스 이름이고<group>
은 API 그룹입니다(해당하는 경우).
5.1.1. 확장 리소스에 대한 리소스 할당량 설정 링크 복사링크가 클립보드에 복사되었습니다!
확장 리소스에는 리소스 과다 할당이 허용되지 않으므로 할당량의 해당 확장 리소스에 requests
및 limits
를 지정해야 합니다. 다음은 GPU 리소스 nvidia.com/gpu
에 대한 리소스 할당량을 설정하는 방법에 대한 예제 시나리오입니다.
프로세스
oc describe node ip-172-31-27-209.us-west-2.compute.internal | egrep 'Capacity|Allocatable|gpu'
$ oc describe node ip-172-31-27-209.us-west-2.compute.internal | egrep 'Capacity|Allocatable|gpu'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는 GPU 2개를 사용할 수 있습니다.
이 예에서 할당량은
1
입니다.cat gpu-quota.yaml
$ cat gpu-quota.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f gpu-quota.yaml
$ oc create -f gpu-quota.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
resourcequota/gpu-quota created
resourcequota/gpu-quota created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe quota gpu-quota -n nvidia
$ oc describe quota gpu-quota -n nvidia
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Name: gpu-quota Namespace: nvidia Resource Used Hard -------- ---- ---- requests.nvidia.com/gpu 0 1
Name: gpu-quota Namespace: nvidia Resource Used Hard -------- ---- ---- requests.nvidia.com/gpu 0 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create pod gpu-pod.yaml
$ oc create pod gpu-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE gpu-pod-s46h7 1/1 Running 0 1m
NAME READY STATUS RESTARTS AGE gpu-pod-s46h7 1/1 Running 0 1m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe quota gpu-quota -n nvidia
$ oc describe quota gpu-quota -n nvidia
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Name: gpu-quota Namespace: nvidia Resource Used Hard -------- ---- ---- requests.nvidia.com/gpu 1 1
Name: gpu-quota Namespace: nvidia Resource Used Hard -------- ---- ---- requests.nvidia.com/gpu 1 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드에 GPU가 2개 있으므로 기술적으로 가능합니다.
oc create -f gpu-pod.yaml
$ oc create -f gpu-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Error from server (Forbidden): error when creating "gpu-pod.yaml": pods "gpu-pod-f7z2w" is forbidden: exceeded quota: gpu-quota, requested: requests.nvidia.com/gpu=1, used: requests.nvidia.com/gpu=1, limited: requests.nvidia.com/gpu=1
Error from server (Forbidden): error when creating "gpu-pod.yaml": pods "gpu-pod-f7z2w" is forbidden: exceeded quota: gpu-quota, requested: requests.nvidia.com/gpu=1, used: requests.nvidia.com/gpu=1, limited: requests.nvidia.com/gpu=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2. 할당량 범위 링크 복사링크가 클립보드에 복사되었습니다!
각 할당량에는 일련의 관련 범위가 있을 수 있습니다. 특정 할당량은 열거된 범위의 교집합과 일치하는 경우에만 리소스 사용량을 측정합니다.
할당량에 범위를 추가하면 할당량을 적용할 수 있는 리소스 세트가 제한됩니다. 허용된 설정을 벗어난 리소스를 지정하면 검증 오류가 발생합니다.
범위 | 설명 |
---|---|
|
|
|
|
|
|
|
|
BestEffort
범위는 할당량을 제한하여 다음 리소스를 제한합니다.
-
pods
Terminating
, NotTerminating
, NotBestEffort
범위는 할당량을 제한하여 다음 리소스를 추적합니다.
-
pods
-
memory
-
requests.memory
-
limits.memory
-
cpu
-
requests.cpu
-
limits.cpu
-
ephemeral-storage
-
requests.ephemeral-storage
-
limits.ephemeral-storage
이 기능은 기본적으로 비활성화되어 있습니다.
추가 리소스