8.2. 관리자 할당량 사용


8.2.1. 할당량 적용

프로젝트의 리소스 할당량이 처음 생성된 후, 프로젝트는 업데이트된 사용 통계를 계산할 때까지 할당량 제약 조건을 위반할 수 있는 새 리소스를 생성하는 기능을 제한합니다.

할당량이 생성되고 사용량 통계가 업데이트되면 프로젝트에서 새 콘텐츠 생성을 허용합니다. 리소스를 생성하거나 수정할 때는 리소스 생성 또는 수정 요청에 따라 할당량 사용이 즉시 증가합니다.

리소스를 삭제할 때는 프로젝트에 대한 다음 할당량 통계 전체 재계산 중 할당량 사용이 감소합니다.

구성 가능한 시간에 따라 현재 관찰되는 시스템 값으로 할당량 사용을 줄이는 데 걸리는 시간이 결정됩니다.

프로젝트 수정 사항이 할당량 사용 한도를 초과하는 경우, 서버는 해당 작업을 거부하고, 위반된 할당량 제약 조건과 현재 시스템에서 관찰된 사용 통계를 설명하는 적절한 오류 메시지가 사용자에게 반환됩니다.

8.2.2. 요청과 제한 비교

할당량에 따라 컴퓨팅 리소스를 할당할 때 각 컨테이너는 CPU, 메모리, 임시 저장소에 대한 요청과 제한 값을 각각 지정할 수 있습니다. 할당량은 이러한 값 중을 제한할 수 있습니다.

할당량에 requests.cpu 또는 requests.memory에 대해 지정된 값이 있는 경우 들어오는 모든 컨테이너에서 해당 리소스를 명시적으로 요청해야 합니다. 할당량에 limits.cpu 또는 limits.memory에 대해 지정된 값이 있는 경우 들어오는 모든 컨테이너에서 해당 리소스에 대한 제한을 명시적으로 지정해야 합니다.

8.2.3. 리소스 할당량 정의의 예

core-object-counts.yaml 예제

apiVersion: v1
kind: ResourceQuota
metadata:
  name: core-object-counts
spec:
  hard:
    configmaps: "10" 
1

    persistentvolumeclaims: "4" 
2

    replicationcontrollers: "20" 
3

    secrets: "10" 
4

    services: "10" 
5
Copy to Clipboard Toggle word wrap

1
프로젝트에 존재할 수 있는 총 ConfigMap 오브젝트 수입니다.
2
프로젝트에 존재할 수 있는 총 PVC(영구 볼륨 클레임) 수입니다.
3
프로젝트에 존재할 수 있는 총 복제 컨트롤러 수입니다.
4
프로젝트에 존재할 수 있는 총 시크릿 수입니다.
5
프로젝트에 존재할 수 있는 총 서비스 수입니다.

openshift-object-counts.yaml 예시

apiVersion: v1
kind: ResourceQuota
metadata:
  name: openshift-object-counts
spec:
  hard:
    openshift.io/imagestreams: "10" 
1
Copy to Clipboard Toggle word wrap

1
프로젝트에 존재할 수 있는 총 이미지 스트림 수입니다.

예제 compute-resources.yaml

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    pods: "4" 
1

    requests.cpu: "1" 
2

    requests.memory: 1Gi 
3

    requests.ephemeral-storage: 2Gi 
4

    limits.cpu: "2" 
5

    limits.memory: 2Gi 
6

    limits.ephemeral-storage: 4Gi 
7
Copy to Clipboard Toggle word wrap

1
프로젝트에 존재할 수 있는 터미널이 아닌 상태의 총 Pod 수입니다.
2
터미널이 아닌 상태에서 모든 Pod의 CPU 요청 합계는 코어 1개를 초과할 수 없습니다.
3
터미널이 아닌 상태에서 모든 Pod의 메모리 요청 합계는 1Gi를 초과할 수 없습니다.
4
터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 요청 합계는 2Gi를 초과할 수 없습니다.
5
터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 코어 2개를 초과할 수 없습니다.
6
터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 2Gi를 초과할 수 없습니다.
7
터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 4Gi를 초과할 수 없습니다.

예시 besteffort.yaml

apiVersion: v1
kind: ResourceQuota
metadata:
  name: besteffort
spec:
  hard:
    pods: "1" 
1

  scopes:
  - BestEffort 
2
Copy to Clipboard Toggle word wrap

1
프로젝트에서 BestEffort 서비스 품질을 갖춘 비종료 상태의 포드의 총 수입니다.
2
메모리 또는 CPU에 대한 BestEffort 서비스 품질을 갖춘 일치하는 포드에만 할당량을 제한합니다.

예제 compute-resources-long-running.yaml

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources-long-running
spec:
  hard:
    pods: "4" 
1

    limits.cpu: "4" 
2

    limits.memory: "2Gi" 
3

    limits.ephemeral-storage: "4Gi" 
4

  scopes:
  - NotTerminating 
5
Copy to Clipboard Toggle word wrap

1
터미널이 아닌 상태의 총 Pod 수입니다.
2
터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 이 값을 초과할 수 없습니다.
3
터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 이 값을 초과할 수 없습니다.
4
터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 이 값을 초과할 수 없습니다.
5
할당량을 spec.activeDeadlineSecondsnil로 설정된 일치하는 Pod로만 제한합니다. 빌드 Pod는 RestartNever 정책을 적용하지 않는 한 NotTerminating에 해당합니다.

예제: compute-resources-time-bound.yaml

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources-time-bound
spec:
  hard:
    pods: "2" 
1

    limits.cpu: "1" 
2

    limits.memory: "1Gi" 
3

    limits.ephemeral-storage: "1Gi" 
4

  scopes:
  - Terminating 
5
Copy to Clipboard Toggle word wrap

1
터미널이 아닌 상태의 총 Pod 수입니다.
2
터미널이 아닌 상태에서 모든 Pod의 CPU 제한 합계는 이 값을 초과할 수 없습니다.
3
터미널이 아닌 상태에서 모든 Pod의 메모리 제한 합계는 이 값을 초과할 수 없습니다.
4
터미널이 아닌 상태에서 모든 Pod의 임시 스토리지 제한 합계는 이 값을 초과할 수 없습니다.
5
할당량을 spec.activeDeadlineSeconds >=0인 일치하는 Pod로만 제한합니다. 예를 들어, 이 할당량은 빌드 포드에 대해서는 요금을 청구하지만, 웹 서버나 데이터베이스와 같은 장기 실행 포드에는 요금을 청구하지 않습니다.

storage-consumption.yaml 예시

apiVersion: v1
kind: ResourceQuota
metadata:
  name: storage-consumption
spec:
  hard:
    persistentvolumeclaims: "10" 
1

    requests.storage: "50Gi" 
2

    gold.storageclass.storage.k8s.io/requests.storage: "10Gi" 
3

    silver.storageclass.storage.k8s.io/requests.storage: "20Gi" 
4

    silver.storageclass.storage.k8s.io/persistentvolumeclaims: "5" 
5

    bronze.storageclass.storage.k8s.io/requests.storage: "0" 
6

    bronze.storageclass.storage.k8s.io/persistentvolumeclaims: "0" 
7
Copy to Clipboard Toggle word wrap

1
프로젝트의 총 영구 볼륨 클레임 수
2
프로젝트의 모든 영구 볼륨 클레임에서 요청된 스토리지 합계는 이 값을 초과할 수 없습니다.
3
프로젝트의 모든 영구 볼륨 클레임에서 골드 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다.
4
프로젝트의 모든 영구 볼륨 클레임에서 실버 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다.
5
프로젝트의 모든 영구 볼륨 클레임에서 실버 스토리지 클래스의 총 클레임 수는 이 값을 초과할 수 없습니다.
6
프로젝트의 모든 영구 볼륨 클레임에서 브론즈 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다. 이 값을 0으로 설정하면 브론즈 스토리지 클래스에서 스토리지를 요청할 수 없습니다.
7
프로젝트의 모든 영구 볼륨 클레임에서 브론즈 스토리지 클래스에 요청된 스토리지 합계는 이 값을 초과할 수 없습니다. 이 값을 0으로 설정하면 브론즈 스토리지 클래스에서 클레임을 생성할 수 없습니다.

8.2.4. 할당량 생성

할당량을 생성하려면 먼저 파일에 할당량을 정의합니다. 그런 다음 해당 파일을 사용하여 프로젝트에 적용합니다. 이에 대한 설명은 추가 자료 섹션을 참조하세요.

$ oc create -f <resource_quota_definition> [-n <project_name>]
Copy to Clipboard Toggle word wrap

다음은 core-object-counts.yaml 리소스 할당량 정의와 demoproject 프로젝트 이름을 사용한 예입니다.

$ oc create -f core-object-counts.yaml -n demoproject
Copy to Clipboard Toggle word wrap

8.2.5. 오브젝트 수 할당량 생성

모든 OpenShift Container Platform 표준 네임스페이스 리소스 유형(예: BuildConfig, DeploymentConfig)에 대해 오브젝트 수 할당량을 생성할 수 있습니다. 오브젝트 할당량 수는 모든 표준 네임스페이스 리소스 유형에 정의된 할당량을 지정합니다.

리소스 할당량을 사용할 때 서버 스토리지에 존재하는 경우 오브젝트는 할당량에 대해 부과됩니다. 이러한 유형의 할당량은 스토리지 리소스의 소진을 방지하는 데 유용합니다.

리소스에 대한 개체 수 할당량을 구성하려면 다음 명령을 실행하세요.

$ oc create quota <name> --hard=count/<resource>.<group>=<quota>,count/<resource>.<group>=<quota>
Copy to Clipboard Toggle word wrap

객체 개수 할당량을 보여주는 예:

$ oc create quota test --hard=count/deployments.extensions=2,count/replicasets.extensions=4,count/pods=3,count/secrets=4
resourcequota "test" created

$ oc describe quota test
Name:                         test
Namespace:                    quota
Resource                      Used  Hard
--------                      ----  ----
count/deployments.extensions  0     2
count/pods                    0     3
count/replicasets.extensions  0     4
count/secrets                 0     4
Copy to Clipboard Toggle word wrap

이 예제에서는 나열된 리소스가 클러스터에 있는 각 프로젝트의 하드 제한으로 제한됩니다.

8.2.6. 할당량 보기

웹 콘솔에서 프로젝트의 할당량 페이지로 이동하면 프로젝트 할당량에 정의된 모든 하드 한도와 관련된 사용 통계를 볼 수 있습니다.

CLI를 사용하여 할당량 세부 정보를 볼 수도 있습니다.

  1. 먼저, 프로젝트에 정의된 할당량 목록을 가져옵니다. 예를 들어 demoproject라는 프로젝트의 경우 다음과 같습니다.

    $ oc get quota -n demoproject
    NAME                AGE
    besteffort          11m
    compute-resources   2m
    core-object-counts  29m
    Copy to Clipboard Toggle word wrap
  2. 관심 있는 할당량을 입력합니다. 예를 들어 core-object-counts 할당량은 다음과 같습니다.

    $ oc describe quota core-object-counts -n demoproject
    Name:			core-object-counts
    Namespace:		demoproject
    Resource		Used	Hard
    --------		----	----
    configmaps		3	10
    persistentvolumeclaims	0	4
    replicationcontrollers	3	20
    secrets			9	10
    services		2	10
    Copy to Clipboard Toggle word wrap

8.2.7. 할당량 동기화 기간 구성

리소스 세트가 삭제되면 리소스의 동기화 시간대는 /etc/origin/master/master-config.yaml 파일의 resource-quota-sync-period 설정에 따라 결정됩니다.

할당량 사용이 복원되기 전에 사용자는 리소스를 재사용하려고 할 때 문제에 직면할 수 있습니다. 리소스 할당량 동기화 기간 설정을 변경하면 리소스를 다시 사용할 수 있을 때까지 필요한 시간(초) 내에 리소스 집합이 재생성됩니다.

리소스 할당량 동기화 기간 설정 예시

kubernetesMasterConfig:
  apiLevels:
  - v1beta3
  - v1
  apiServerArguments: null
  controllerArguments:
    resource-quota-sync-period:
      - "10s"
Copy to Clipboard Toggle word wrap

변경 사항을 적용하려면 컨트롤러 서비스를 다시 시작하세요.

$ master-restart api
$ master-restart controllers
Copy to Clipboard Toggle word wrap

자동화를 사용할 때 재생성 시간을 조정하면 리소스를 생성하고 리소스 사용량을 확인하는 데 도움이 될 수 있습니다.

참고

리소스 할당량 동기화 기간 설정은 시스템 성능을 균형 있게 유지합니다. 동기화 기간을 줄이면 컨트롤러에 큰 부하가 걸릴 수 있습니다.

8.2.8. 리소스를 소비하기 위한 명시적 할당량

리소스가 할당량으로 관리되지 않으면 사용자는 사용할 수 있는 리소스 양에 제한이 없습니다. 예를 들어, 골드 저장 클래스와 관련된 저장 할당량이 없는 경우 프로젝트에서 생성할 수 있는 골드 저장량은 무제한입니다.

고비용 컴퓨팅 또는 스토리지 리소스의 경우 관리자는 리소스를 사용하기 위해 명시적인 할당량을 부여하도록 요구할 수 있습니다. 예를 들어, 프로젝트에 골드 스토리지 클래스와 관련된 스토리지 할당량이 명시적으로 제공되지 않은 경우 해당 프로젝트의 사용자는 해당 유형의 스토리지를 생성할 수 없습니다.

특정 리소스를 사용하기 위해 명시적인 할당량을 요구하려면 다음 구문을 master-config.yaml에 추가해야 합니다.

admissionConfig:
  pluginConfig:
    ResourceQuota:
      configuration:
        apiVersion: resourcequota.admission.k8s.io/v1alpha1
        kind: Configuration
        limitedResources:
        - resource: persistentvolumeclaims 
1

        matchContains:
        - gold.storageclass.storage.k8s.io/requests.storage 
2
Copy to Clipboard Toggle word wrap
1
기본적으로 소비가 제한된 그룹이나 리소스입니다.
2
기본적으로 제한할 그룹/리소스와 연관된 할당량으로 추적되는 리소스의 이름입니다.

위의 예에서 할당량 시스템은 PersistentVolumeClaim을 생성하거나 업데이트하는 모든 작업을 가로채고 있습니다. 할당량으로 제어되는 리소스 중 어떤 것이 소모되는지 확인합니다. 해당 프로젝트에 해당 리소스에 대한 할당량이 없는 경우 요청은 거부됩니다. 이 예에서 사용자가 gold 스토리지 클래스와 연결된 스토리지를 사용하는 PersistentVolumeClaim을 생성하고 프로젝트에 일치하는 할당량이 없는 경우 요청은 거부됩니다.

추가 리소스

할당량을 설정하는 데 필요한 파일을 만드는 방법에 대한 예는 할당량으로 관리되는 리소스를 참조하세요.

할당량으로 관리되는 컴퓨팅 리소스를 할당하는 방법에 대한 설명입니다.

프로젝트 리소스에 대한 제한 및 할당량 관리에 대한 자세한 내용은 프로젝트 작업을 참조하세요.

프로젝트에 할당량이 정의된 경우 클러스터 구성의 고려 사항에 대한 배포 이해를 참조하세요.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat