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