쿠버네티스의 기본 작업단위인 파드를 생성할 때 각 컨테이너의 필요한 리소스 양을 지정할 수 있다.
리소스로는 기본적으로CPU
, 메모리
등이 있다.
CPU는 항상 절대 수량으로 요청되며, 상대적 수량은 아니다. 0.1은 단일 코어, 이중 코어 또는 48코어 시스템에서 동일한 양의 CPU이다.
memory 에 대한 제한 및 요청은 바이트 단위로 측정된다.
128974848, 129e6, 129M, 128974848000m, 123Mi
Requests는 pod을 scheduling할 때 참고하는 값
이다.
절대적으로 넘지 않아야 하는 값이 아니다.
실제 container process의 사용량이 이것을 넘는 것은 허용한다.
사용자가 해당 컨테이너의 process 사용양을 예상하며 넣는 값으로 생각하면 편하다.
실제 파드가 실행 중인 노드에 사용 가능한 리소스가 충분하면, 컨테이너가 해당 리소스에 지정한 request 보다 더 많은 리소스를 사용할 수 있도록 허용
된다.
하지만, 컨테이너는 리소스 limit 보다 더 많은 리소스를 사용할 수는 없다
.
Kubernetes에서 pod의 spec을 정의할 때, container별로 CPU와 Memory에 대해서 requests와 limits를 설정할 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: test-image:v1
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
- name: test-container2
image: test-image:v2
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
위에 YAML 파일은 한 파드에 대한 정의이다.
해당 파드에는 test-container
과 test-container2
두 개의 컨테이너가 있다.
0.25 cpu
와 64MiB
(226 바이트) 의 메모리 요청(requests)가 있다.0.5 cpu
와 128MiB
메모리 제한이 있다.