API 오브젝트에 대한 쿼터 구성

이 페이지에서는 퍼시스턴트볼륨클레임(PersistentVolumeClaim) 및 서비스를 포함한 API 오브젝트에 대한 쿼터를 구성하는 방법을 보여준다. 쿼터는 네임스페이스 내에서 생성할 수 있는 특정 유형의 오브젝트 개수를 제한한다. 쿼터는 리소스쿼터(ResourceQuota) 오브젝트로 지정한다.

시작하기 전에

쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.

버전 확인을 위해서, 다음 커맨드를 실행 kubectl version.

네임스페이스 생성

이 실습에서 생성하는 리소스가 클러스터의 다른 리소스와 격리되도록 네임스페이스를 생성한다.

kubectl create namespace quota-object-example

리소스쿼터(ResourceQuota) 생성

다음은 리소스쿼터 오브젝트에 대한 설정 파일이다.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-quota-demo
spec:
  hard:
    persistentvolumeclaims: "1"
    services.loadbalancers: "2"
    services.nodeports: "0"

리소스쿼터를 생성한다.

kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects.yaml --namespace=quota-object-example

리소스쿼터의 상세 정보를 확인한다.

kubectl get resourcequota object-quota-demo --namespace=quota-object-example --output=yaml

출력 결과를 통해 quota-object-example 네임스페이스에서 퍼시스턴트볼륨클레임은 최대 1개, LoadBalancer 타입 서비스는 최대 2개가 허용되며, NodePort 타입 서비스는 허용되지 않음을 확인할 수 있다.

status:
  hard:
    persistentvolumeclaims: "1"
    services.loadbalancers: "2"
    services.nodeports: "0"
  used:
    persistentvolumeclaims: "0"
    services.loadbalancers: "0"
    services.nodeports: "0"

퍼시스턴트볼륨클레임 생성

다음은 퍼시스턴트볼륨클레임 오브젝트에 대한 설정 파일이다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-quota-demo
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

퍼시스턴트볼륨클레임을 생성한다.

kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc.yaml --namespace=quota-object-example

퍼시스턴트볼륨클레임이 생성되었는지 확인한다.

kubectl get persistentvolumeclaims --namespace=quota-object-example

출력 결과는 퍼시스턴트볼륨클레임이 존재하며 Pending 상태임을 보여준다.

NAME             STATUS
pvc-quota-demo   Pending

두 번째 퍼시스턴트볼륨클레임 생성 시도

다음은 두 번째 퍼시스턴트볼륨클레임 오브젝트에 대한 설정 파일이다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-quota-demo-2
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi

두 번째 퍼시스턴트볼륨클레임을 생성 시도한다.

kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc-2.yaml --namespace=quota-object-example

출력 결과는 네임스페이스의 쿼터 초과에 의해서 두 번째 퍼시스턴트볼륨클레임이 생성되지 않았음을 보여준다.

persistentvolumeclaims "pvc-quota-demo-2" is forbidden:
exceeded quota: object-quota-demo, requested: persistentvolumeclaims=1,
used: persistentvolumeclaims=1, limited: persistentvolumeclaims=1

참고

다음 문자열은 쿼터로 제한할 수 있는 API 리소스를 식별하는데 사용된다.

문자열API 오브젝트
"pods"Pod
"services"Service
"replicationcontrollers"ReplicationController
"resourcequotas"ResourceQuota
"secrets"Secret
"configmaps"ConfigMap
"persistentvolumeclaims"PersistentVolumeClaim
"services.nodeports"Service of type NodePort
"services.loadbalancers"Service of type LoadBalancer

정리하기

네임스페이스를 삭제한다.

kubectl delete namespace quota-object-example

다음 내용

클러스터 관리자를 위한 내용

애플리케이션 개발자를 위한 내용