이전에서 파드의 컨테이너 리소스 자원을 조절하는 법을 알았다. 하지만 이를 파드의 컨테이너별로 지정하는 것이 아닌 네임스페이스별로 리소스 사용과 생성을 제한할 수 있다. 네임스페이스 내에서 파드나 컨테이너는 네임스페이스의 리소스 쿼터에 정의된 만큼의 CPU와 메모리를 사용할 수 있다. 하나의 파드 또는 컨테이너가 사용가능한 모든 리소스를 독점할 수 있다는 우려가 있기 때문에 이러한 부분을 방지하고자하는 정책이다.
네임스페이스에서 파드 또는 컨테이너별 최소 및 최대 컴퓨팅 리소스 사용량을 지정한다.
네임스페이스에서 스토리지클래스별 최소 및 최대 스토리지 요청을 지정한다.
네임스페이스에서 리소스에 대한 요청과 제한 사이의 비율을 지정한다.
네임스페이스에서 컴퓨팅 리소스에 대한 기본 요청/제한을 설정하고 런타임에 있는 컨테이너에 자동으로 설정한다.
apiVersion: v1
kind: LimitRange
metadata:
name: lim1
spec:
limits:
- type: Container # 컨테이너 리소스 설정
default: # 기본 limit
cpu: 10m
memory: 20M
defaultRequest: # 기본 request
cpu: 5m
memory: 10M
- type: Pod # pod 리소스 설정
max: # 할당 최대 값
cpu: 1000m
memory: 1G
#min: # 할당 최소 값
maxLimitRequestRatio:
cpu: 2
memory: 2
- type: PersistentVolumeClaim # pvc 리소스 설정
min:
storage: 1Gi
max:
storage: 5Gi
$ kubectl create -f limits.yaml
$ kubectl get limitranges # limitrange 생성확인
NAME CREATED AT
lim1 2021-05-10T04:41:24Z
$ kubectl describe limitranges lim ## 생성한 limitrange 정보 확인
Name: lim1
Namespace: default
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
---- -------- --- --- --------------- ------------- -----------------------
Container memory - - 10M 20M -
Container cpu - - 5m 10m -
Pod cpu - 1 - - 2
Pod memory - 1G - - 2
PersistentVolumeClaim storage 1Gi 5Gi - - -
해당 limitrange를 생성했기 때문에 해당 네임스페이스에서 생성되는 container, pod, pvc는 해당 조건을 만족해야한다.