8.2. 관리자 할당량 사용
8.2.1. 할당량 적용 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트의 리소스 할당량이 처음 생성된 후, 프로젝트는 업데이트된 사용 통계를 계산할 때까지 할당량 제약 조건을 위반할 수 있는 새 리소스를 생성하는 기능을 제한합니다.
할당량이 생성되고 사용량 통계가 업데이트되면 프로젝트에서 새 콘텐츠 생성을 허용합니다. 리소스를 생성하거나 수정할 때는 리소스 생성 또는 수정 요청에 따라 할당량 사용이 즉시 증가합니다.
리소스를 삭제할 때는 프로젝트에 대한 다음 할당량 통계 전체 재계산 중 할당량 사용이 감소합니다.
구성 가능한 시간에 따라 현재 관찰되는 시스템 값으로 할당량 사용을 줄이는 데 걸리는 시간이 결정됩니다.
프로젝트 수정 사항이 할당량 사용 한도를 초과하는 경우, 서버는 해당 작업을 거부하고, 위반된 할당량 제약 조건과 현재 시스템에서 관찰된 사용 통계를 설명하는 적절한 오류 메시지가 사용자에게 반환됩니다.
8.2.2. 요청과 제한 비교 링크 복사링크가 클립보드에 복사되었습니다!
할당량에 따라 컴퓨팅 리소스를 할당할 때 각 컨테이너는 CPU, 메모리, 임시 저장소에 대한 요청과 제한 값을 각각 지정할 수 있습니다. 할당량은 이러한 값 중을 제한할 수 있습니다.
할당량에 requests.cpu
또는 requests.memory
에 대해 지정된 값이 있는 경우 들어오는 모든 컨테이너에서 해당 리소스를 명시적으로 요청해야 합니다. 할당량에 limits.cpu
또는 limits.memory
에 대해 지정된 값이 있는 경우 들어오는 모든 컨테이너에서 해당 리소스에 대한 제한을 명시적으로 지정해야 합니다.
8.2.3. 리소스 할당량 정의의 예 링크 복사링크가 클립보드에 복사되었습니다!
core-object-counts.yaml 예제
openshift-object-counts.yaml 예시
- 1
- 프로젝트에 존재할 수 있는 총 이미지 스트림 수입니다.
예제 compute-resources.yaml
- 1
- 프로젝트에 존재할 수 있는 터미널이 아닌 상태의 총 Pod 수입니다.
- 2
- 터미널이 아닌 상태에서 모든 Pod의 CPU 요청 합계는 코어 1개를 초과할 수 없습니다.
- 3
- 터미널이 아닌 상태에서 모든 Pod의 메모리 요청 합계는 1Gi를 초과할 수 없습니다.
- 4
- 터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 요청 합계는 2Gi를 초과할 수 없습니다.
- 5
- 터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 코어 2개를 초과할 수 없습니다.
- 6
- 터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 2Gi를 초과할 수 없습니다.
- 7
- 터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 4Gi를 초과할 수 없습니다.
예시 besteffort.yaml
예제 compute-resources-long-running.yaml
- 1
- 터미널이 아닌 상태의 총 Pod 수입니다.
- 2
- 터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 이 값을 초과할 수 없습니다.
- 3
- 터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 이 값을 초과할 수 없습니다.
- 4
- 터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 이 값을 초과할 수 없습니다.
- 5
- 할당량을
spec.activeDeadlineSeconds
가nil
로 설정된 일치하는 Pod로만 제한합니다. 빌드 Pod는RestartNever
정책을 적용하지 않는 한NotTerminating
에 해당합니다.
예제: compute-resources-time-bound.yaml
- 1
- 터미널이 아닌 상태의 총 Pod 수입니다.
- 2
- 터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 이 값을 초과할 수 없습니다.
- 3
- 터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 이 값을 초과할 수 없습니다.
- 4
- 터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 이 값을 초과할 수 없습니다.
- 5
- 할당량을
spec.activeDeadlineSeconds >=0
인 일치하는 Pod로만 제한합니다. 예를 들어, 이 할당량은 빌드 포드에 대해서는 요금을 청구하지만, 웹 서버나 데이터베이스와 같은 장기 실행 포드에는 요금을 청구하지 않습니다.
storage-consumption.yaml 예시
- 1
- 프로젝트의 총 영구 볼륨 클레임 수
- 2
- 프로젝트의 모든 영구 볼륨 클레임에서 요청된 스토리지 합계는 이 값을 초과할 수 없습니다.
- 3
- 프로젝트의 모든 영구 볼륨 클레임에서 골드 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다.
- 4
- 프로젝트의 모든 영구 볼륨 클레임에서 실버 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다.
- 5
- 프로젝트의 모든 영구 볼륨 클레임에서 실버 스토리지 클래스의 총 클레임 수는 이 값을 초과할 수 없습니다.
- 6
- 프로젝트의 모든 영구 볼륨 클레임에서 브론즈 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다. 이 값을
0
으로 설정하면 브론즈 스토리지 클래스에서 스토리지를 요청할 수 없습니다. - 7
- 프로젝트의 모든 영구 볼륨 클레임에서 브론즈 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다. 이 값을
0
으로 설정하면 브론즈 스토리지 클래스에서 클레임을 생성할 수 없습니다.
8.2.4. 할당량 생성 링크 복사링크가 클립보드에 복사되었습니다!
할당량을 생성하려면 먼저 파일에 할당량을 정의합니다. 그런 다음 해당 파일을 사용하여 프로젝트에 적용합니다. 이에 대한 설명은 추가 자료 섹션을 참조하세요.
oc create -f <resource_quota_definition> [-n <project_name>]
$ oc create -f <resource_quota_definition> [-n <project_name>]
다음은 core-object-counts.yaml
리소스 할당량 정의와 demoproject
프로젝트 이름을 사용한 예입니다.
oc create -f core-object-counts.yaml -n demoproject
$ oc create -f core-object-counts.yaml -n demoproject
8.2.5. 오브젝트 수 할당량 생성 링크 복사링크가 클립보드에 복사되었습니다!
모든 OpenShift Container Platform 표준 네임스페이스 리소스 유형(예: BuildConfig
, DeploymentConfig
)에 대해 오브젝트 수 할당량을 생성할 수 있습니다. 오브젝트 할당량 수는 모든 표준 네임스페이스 리소스 유형에 정의된 할당량을 지정합니다.
리소스 할당량을 사용할 때 서버 스토리지에 존재하는 경우 오브젝트는 할당량에 대해 부과됩니다. 이러한 유형의 할당량은 스토리지 리소스의 소진을 방지하는 데 유용합니다.
리소스에 대한 개체 수 할당량을 구성하려면 다음 명령을 실행하세요.
oc create quota <name> --hard=count/<resource>.<group>=<quota>,count/<resource>.<group>=<quota>
$ oc create quota <name> --hard=count/<resource>.<group>=<quota>,count/<resource>.<group>=<quota>
객체 개수 할당량을 보여주는 예:
이 예제에서는 나열된 리소스가 클러스터에 있는 각 프로젝트의 하드 제한으로 제한됩니다.
8.2.6. 할당량 보기 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔에서 프로젝트의 할당량
페이지로 이동하면 프로젝트 할당량에 정의된 모든 하드 한도와 관련된 사용 통계를 볼 수 있습니다.
CLI를 사용하여 할당량 세부 정보를 볼 수도 있습니다.
먼저, 프로젝트에 정의된 할당량 목록을 가져옵니다. 예를 들어
demoproject
라는 프로젝트의 경우 다음과 같습니다.oc get quota -n demoproject
$ oc get quota -n demoproject NAME AGE besteffort 11m compute-resources 2m core-object-counts 29m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관심 있는 할당량을 입력합니다. 예를 들어
core-object-counts
할당량은 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.7. 할당량 동기화 기간 구성 링크 복사링크가 클립보드에 복사되었습니다!
리소스 세트가 삭제되면 리소스의 동기화 시간대는 /etc/origin/master/master-config.yaml
파일의 resource-quota-sync-period
설정에 따라 결정됩니다.
할당량 사용이 복원되기 전에 사용자는 리소스를 재사용하려고 할 때 문제에 직면할 수 있습니다. 리소스 할당량 동기화 기간
설정을 변경하면 리소스를 다시 사용할 수 있을 때까지 필요한 시간(초) 내에 리소스 집합이 재생성됩니다.
리소스 할당량 동기화 기간
설정 예시
변경 사항을 적용하려면 컨트롤러 서비스를 다시 시작하세요.
master-restart api master-restart controllers
$ master-restart api
$ master-restart controllers
자동화를 사용할 때 재생성 시간을 조정하면 리소스를 생성하고 리소스 사용량을 확인하는 데 도움이 될 수 있습니다.
리소스 할당량 동기화 기간
설정은 시스템 성능을 균형 있게 유지합니다. 동기화 기간을 줄이면 컨트롤러에 큰 부하가 걸릴 수 있습니다.
8.2.8. 리소스를 소비하기 위한 명시적 할당량 링크 복사링크가 클립보드에 복사되었습니다!
리소스가 할당량으로 관리되지 않으면 사용자는 사용할 수 있는 리소스 양에 제한이 없습니다. 예를 들어, 골드 저장 클래스와 관련된 저장 할당량이 없는 경우 프로젝트에서 생성할 수 있는 골드 저장량은 무제한입니다.
고비용 컴퓨팅 또는 스토리지 리소스의 경우 관리자는 리소스를 사용하기 위해 명시적인 할당량을 부여하도록 요구할 수 있습니다. 예를 들어, 프로젝트에 골드 스토리지 클래스와 관련된 스토리지 할당량이 명시적으로 제공되지 않은 경우 해당 프로젝트의 사용자는 해당 유형의 스토리지를 생성할 수 없습니다.
특정 리소스를 사용하기 위해 명시적인 할당량을 요구하려면 다음 구문을 master-config.yaml에 추가해야 합니다.
위의 예에서 할당량 시스템은 PersistentVolumeClaim을
생성하거나 업데이트하는 모든 작업을 가로채고 있습니다. 할당량으로 제어되는 리소스 중 어떤 것이 소모되는지 확인합니다. 해당 프로젝트에 해당 리소스에 대한 할당량이 없는 경우 요청은 거부됩니다. 이 예에서 사용자가 gold 스토리지 클래스와 연결된 스토리지를 사용하는 PersistentVolumeClaim을
생성하고 프로젝트에 일치하는 할당량이 없는 경우 요청은 거부됩니다.
추가 리소스
할당량을 설정하는 데 필요한 파일을 만드는 방법에 대한 예는 할당량으로 관리되는 리소스를 참조하세요.
할당량으로 관리되는 컴퓨팅 리소스를 할당하는 방법에 대한 설명입니다.
프로젝트 리소스에 대한 제한 및 할당량 관리에 대한 자세한 내용은 프로젝트 작업을 참조하세요.
프로젝트에 할당량이 정의된 경우 클러스터 구성의 고려 사항에 대한 배포 이해를 참조하세요.