WEBBOOK CHAPTER

Git에서 EKS까지: 17장 Namespace·Quota로 실습의 폭발 반경을 자른다

17장 Namespace·Quota로 실습의 폭발 반경을 자른다

먼저 namespace와 quota를 적용한다.


kubectl apply -f examples/k8s/00-namespace.yaml
kubectl get resourcequota -n flownote
kubectl describe resourcequota flownote-budget -n flownote

Namespace는 완전한 보안 경계가 아니다. cluster-scoped resource, shared node, network policy 지원 여부, IAM과 admission policy를 함께 봐야 한다. 그래도 이름 충돌, RBAC scope, quota, lifecycle을 나누는 중요한 단위다.

ResourceQuota만 만들고 container request/limit을 빠뜨리면 admission 또는 scheduling에서 예상과 다른 결과가 날 수 있다. LimitRange로 default를 줄 수도 있지만, source manifest에 workload 의도를 명시하는 편이 review에 유리하다.

quota 실패는 다음처럼 보인다.


Error from server (Forbidden): exceeded quota: flownote-budget,
requested: requests.cpu=3, used: requests.cpu=1, limited: requests.cpu=2

이때 node를 늘리기 전에 namespace budget과 새 release의 request 합계를 비교한다. rollout 중에는 old Pod와 surge Pod가 함께 있어 평소보다 더 많은 quota가 필요하다.