[k8s] requests & limits
쿠버네티스의 컨테이너 리소스 관리
쿠버네티스의 기본 작업단위인 파드를 생성할 때 각 컨테이너의 필요한 리소스 양을 지정할 수 있다.
리소스로는 기본적으로CPU
, 메모리
등이 있다.
-
CPU는 항상 절대 수량으로 요청되며, 상대적 수량은 아니다. 0.1은 단일 코어, 이중 코어 또는 48코어 시스템에서 동일한 양의 CPU이다.
-
memory 에 대한 제한 및 요청은 바이트 단위로 측정된다.
- E, P, T, G, M, k, m(millis) 와 같은 접미사 중 하나를 사용하여 메모리를 일반 정수 또는 고정 소수점 숫자로 표현할 수 있다.
- Ei, Pi, Ti, Gi, Mi, Ki와 같은 2의 거듭제곱을 사용할 수도 있다. 예를 들어, 다음은 대략 동일한 값을 나타낸다.
128974848, 129e6, 129M, 128974848000m, 123Mi
Requests
Requests는 pod을 scheduling할 때 참고하는 값
이다.
절대적으로 넘지 않아야 하는 값이 아니다.
실제 container process의 사용량이 이것을 넘는 것은 허용한다.
사용자가 해당 컨테이너의 process 사용양을 예상하며 넣는 값으로 생각하면 편하다.
Limits
실제 파드가 실행 중인 노드에 사용 가능한 리소스가 충분하면, 컨테이너가 해당 리소스에 지정한 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
메모리 제한이 있다. - CPU의 경우 cpu.shares 값이 설정된다.
- 각 컨테이너는 1:1 비율(0.25, 0.25 cpu)로 스케줄링 된다.
참고
- https://kubernetes.io/ko/docs/concepts/configuration/manage-resources-containers/
- https://jwcheong0420.github.io/2020/04/04/kubernetes-resource-mgmt-1-requests-and-limits/
Author And Source
이 문제에 관하여([k8s] requests & limits), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@1yangsh/k8s-requests-limits저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)