728x90
Resource Requirements & Limits
각 노드마다 자원 할당량이 있고, 각 파드는 필요한 자원 용량이 다르다.
스케쥴러는 파드를 배치할 때 파드가 필요로 하는 자원을 고려해 최적의 노드에 배치한다.
만약 모든 노드에서 새로운 파드가 필요로 하는 자원량을 충족하지 못하면 스케쥴러는 파드 배치를 멈추게 된다. 이 때 파드는 Pending 상태가 되고, 에러 메세지가 생성된다. (Insufficient cpu 등)
Resources Request (파드 생성시 필요한 자원)
apiVersion: v1
kind: Pod
metadata:
name: [pod-name]
spec:
containers:
- name: [container-name]
image: [image-name]
ports:
- containerPort: 8080
resources:
request:
memory: "4Gi"
cpu: 2
- cpu: 소숫점으로도 정의 가능
- 1 cpu = 1000m(밀리)
- 1m(0.001)까지 가능
- 1 cpu = 1 AWS 1vCPU = 1 GCP Core = 1 Azure Core = 1 Hyperthread
- memory: G(Gigabyte), M(Megabyte), K(Kilobyte), Gi(Gibibyte), Mi(Mebibyte), Ki(Kibibyte) 등을 단위로 사용 가능
Limit
request은 컨테이너가 동작하기 위해 필요한 최소한의 자원을 정의하는 것이라면, limit은 컨테이너가 사용할 수 있는 최대한의 자원을 제한하는 것이다.
- cpu는 컨테이너가 제한된 cpu 자원을 넘지않도록 제어하므로 제한량을 넘지 않지만, 메모리는 그렇지 않다. 컨테이너는 제한된 양보다 많은 메모리 자원을 사용할 수 있으며, 한계보다 많은 메모리를 사용하면 소멸하게 된다. (로그나 커맨드 출력 결과를 살펴보면 파드가 OOM Error로 종료된 것을 확인할 수 있다.)
- *OOM: Out Of Memory
apiVersion: v1
kind: Pod
metadata:
name: [pod-name]
spec:
containers:
- name: [container-name]
image: [image-name]
ports:
- containerPort: 8080
resources:
request:
memory: "2Gi"
cpu: 1
limit:
memory: "2Gi"
cpu: 2
LimitRange
오브젝트의 일종으로, 파드 정의 파일에 request나 limit 없이 생성된 컨테이너들에 대한 기본값을 정의해준다.
- LimitRange를 생성하고나면, 이 이후로 생성되는 파드들만 여기에 영향을 받는다. (기존에 존재하던 파드들은 영향 X)
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-resource-constrint
spec:
limits:
- default:
cpu: 500m
defaultRequest:
cpu: 500m
max:
cpu: "1"
min:
cpu: 100m
type: Container
Resource Quotas
네임스페이스 레벨의 오브젝트
네임스페이스 내의 모든 파드(내의 클러스터)의 자원 사용량을 제한한다.
apiVersion: v1
kind: ResourceQuotas
metadata:
name: [resource-quotas]
spec:
hard:
requests.cpu: 4
requests.memory: 4Gi
limits.cpu: 10
limits.memory: 10Gi
반응형
'Kubernetes' 카테고리의 다른 글
k8s) Scheduling - 5. Scheduler (1) | 2023.11.17 |
---|---|
k8s) Scheduling - 4. DaemonSet & Static Pod (1) | 2023.11.17 |
k8s) Scheduling - 2. Node Selector & Node Affinity (1) | 2023.11.17 |
k8s) Scheduling - 1. Taints & Tolerations (0) | 2023.11.17 |
k8s) 명령형(Imperative) vs 선언형(Declarative) 관리 (1) | 2023.11.17 |