네임스페이스의 파드 할당량 구성하기
네임스페이스의 파드 할당량 구성하기 (Configure a Pod Quota for a Namespace)
이 페이지에서는 네임스페이스에서 실행될 수 있는 총 파드 수에 대한 할당량을 설정하는 방법을 보여 줘요. 할당량은 ResourceQuota 객체에 지정해요.
출처: 문서
본문
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요. 이 튜토리얼은 제어 플레인 호스트 역할을 하지 않는 노드가 최소 두 개 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube를 사용하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용해 만들 수 있어요.
- iximiuz Labs
- Killercoda
- KodeKloud
클러스터에서 네임스페이스를 만들 수 있는 접근 권한이 있어야 해요.
네임스페이스 만들기
이 연습에서 만드는 리소스가 클러스터의 나머지와 격리되도록 네임스페이스를 만들어요.
kubectl create namespace quota-pod-example
ResourceQuota 만들기
ResourceQuota의 예시 매니페스트는 다음과 같아요.
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-demo
spec:
hard:
pods: "2"
ResourceQuota를 만들어요.
kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod.yaml --namespace=quota-pod-example
ResourceQuota에 대한 상세 정보를 확인해요.
kubectl get resourcequota pod-demo --namespace=quota-pod-example --output=yaml
출력은 네임스페이스가 파드 두 개의 할당량을 가지며, 현재 파드가 없다는 것, 즉 할당량 중 아무것도 사용되지 않았음을 보여 줘요.
spec:
hard:
pods: "2"
status:
hard:
pods: "2"
used:
pods: "0"
Deployment의 예시 매니페스트는 다음과 같아요.
apiVersion: apps/v1
kind: Deployment
metadata:
name: pod-quota-demo
spec:
selector:
matchLabels:
purpose: quota-demo
replicas: 3
template:
metadata:
labels:
purpose: quota-demo
spec:
containers:
- name: pod-quota-demo
image: nginx
그 매니페스트에서 replicas: 3은 쿠버네티스가 모두 같은 애플리케이션을 실행하는 새 파드 세 개를 만들도록 지시해요.
Deployment를 만들어요.
kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod-deployment.yaml --namespace=quota-pod-example
Deployment에 대한 상세 정보를 확인해요.
kubectl get deployment pod-quota-demo --namespace=quota-pod-example --output=yaml
출력은 Deployment가 레플리카 세 개를 지정했음에도, 앞서 정의한 할당량 때문에 파드 두 개만 만들어졌음을 보여 줘요.
spec:
...
replicas: 3
...
status:
availableReplicas: 2
...
lastUpdateTime: 2021-04-02T20:57:05Z
message: 'unable to create pods: pods "pod-quota-demo-1650323038-" is forbidden:
exceeded quota: pod-demo, requested: pods=1, used: pods=2, limited: pods=2'
리소스 선택 (Choice of resource)
이 작업에서는 총 파드 수를 제한하는 ResourceQuota를 정의했지만, 다른 종류의 객체의 총 개수도 제한할 수 있어요. 예를 들어 단일 네임스페이스에 몇 개의 CronJob이 존재할 수 있는지 제한하기로 결정할 수도 있어요.
정리하기
네임스페이스를 삭제하세요.
kubectl delete namespace quota-pod-example
더 알아보기 (Learn more)
클러스터 관리자를 위해
- 네임스페이스의 기본 메모리 요청·한도 구성
- 네임스페이스의 기본 CPU 요청·한도 구성
- 네임스페이스의 메모리 최소·최대 제약 구성
- 네임스페이스의 CPU 최소·최대 제약 구성
- 네임스페이스의 메모리·CPU 할당량 구성
- API 객체 할당량 구성