[Retry, k8s] 30. 리소스 관리, 오토 스케일링 - LimitRange
카테고리: KUBERNETES
태그: kubernetes
03. LimitRange
‘LimitRange’를 사용하면 리소스의 최솟값과 최댓값, 기본값 등을 설정할 수 있으며, ‘LimitRange’가 네임스페이스에 제한을 주려면 네임스페이스마다 설정이 필요하다. (또 ‘LimitRange’는 신규로 파드를 생성할 때 사용되므로 기존 파드에는 영향을 주지 않는다.)
| 설정 항목 | 개요 |
|---|---|
| default | 기본 Limit |
| defaultRequest | 기본 Request |
| max | 최대 리소스 |
| min | 최소 리소스 |
| maxLimitRequestRatio | Limit/Request의 비율 |
| 타입 | 사용 가능한 설정 항목 |
|---|---|
| 컨테이너 | default, defaultRequest, max, min, maxLimitRequestRatio |
| 파드 | max, min, maxLimitRequestRatio |
| 영구 볼륨 클레임 | max, min |
(1) 컨테이너에 대한 LimitRange
# 예제 1) sample-limitrange-container.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: sample-limitrange-container
namespace: default
spec:
limits:
- type: Container
default:
memory: 512Mi
cpu: 500m
defaultRequest:
memory: 256Mi
cpu: 250m
max:
memory: 1024Mi
cpu: 1000m
min:
memory: 128Mi
cpu: 125m
maxLimitRequestRatio:
memory: 2
cpu: 2
파드를 기동해보면 LimitRange 값으로 설정된 것을 확인할 수 있고, LimitRange의 설정 값보다 크게 또는 낮게 설정해서 파드를 생성하면 에러가 발생한다.
# 테스트용 파드 생성
$ cat sample-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
spec:
containers:
- name: nginx-container
image: nginx:1.16
$ kubectl apply -f sample-pod.yaml
# 리소스 제한 설정 확인
$ kubectl get pod sample-pod -o json | jq ".spec.containers[].resources"
{
"limits": {
"cpu": "500m",
"memory": "512Mi"
},
"requests": {
"cpu": "250m",
"memory": "256Mi"
}
}
(2) 파드에 대한 LimitRange
# 예제 2) sample-limitrange-pod.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: sample-limitrange-pod
namespace: default
spec:
limits:
- type: Pod
max:
memory: 2048Mi
cpu: 2000m
min:
memory: 128Mi
cpu: 125m
maxLimitRequestRatio:
memory: 1.5
cpu: 1.5
(3) 영구 볼륨 클레임에 대한 LimitRange
# 예제 3) sample-limitrange-pvc.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: sample-limitrange-pvc
namespace: default
spec:
limits:
- type: PersistentVolumeClaim
max:
storage: 20Gi
min:
storage: 3Gi
댓글 남기기