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
다음 내용
클러스터 관리자를 위한 내용
애플리케이션 개발자를 위한 내용
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.