devOps
[쿠버네티스] 컴퓨팅 리소스 관리 - request & limit
집사킴
2024. 11. 24. 00:22
728x90
컨테이너 리소스 request & limit
- 포드를 만들 때 컨테이너가 필요로 하는(=요청 request) CPU 및 메모리 양과 소비할 수 있는 것(=한계 limit)를 지정할 수 있음
- 컨테이너마다 개별적으로 지정
apiVersion: v1
kind: Pod
metadata:
name: frontend
spec:
containers:
- name: app
image: images.my-company.example/app:v4
resources:
requests:
memory: "64Mi"
cpu: "250m" # 0.25
limits:
memory: "128Mi"
cpu: "500m" # 0.5
컨테이너 리소스 단위
CPU
- 1 CPU = 1코어
- 노드가 물리 호스트인 경우, 1 = 1 물리 CPU 코어
- 가상 머신인 경우, 1 = 1 가상 코어
- 소수점 명시 가능
- 0.5 : 절반의 CPU 시간을 요청
- 0.1 = “백 밀리 CPU”, “백 밀리코어” (=100m)
- CPU 시간
- 컨테이너가 실제로 CPU에서 실행되는 시간으로 측정
- ex) 1 CPU 시간: CPU 하나가 1초 동안 완전히 사용된 것
- ex) 컨테이너가 2개의 CPU 코어를 사용하여 5초간 실행된 경우 10 CPU 시간을 사용한 것
- 사용 예시
containers:
- name: my-nginx
image: nginx
resources:
requests:
cpu: "2" # 2개의 CPU 요청
- my-nginx 컨테이너가 10초 동안 1개의 CPU를 100% 사용했다면 총 10CPU 시간을 소비한 것
메모리 리소스 단위
Kubernetes에서 메모리 요청(requests)과 제한(limits)은 주로 다음과 같은 단위로 설정됩니다:
단위 의미 예시
B | 바이트(Byte) | 512B |
Ki | 키비바이트(1 Ki = 2¹⁰ B = 1024 B) | 128Ki |
Mi | 메비바이트(1 Mi = 2²⁰ B = 1024 Ki) | 256Mi |
Gi | 기비바이트(1 Gi = 2³⁰ B = 1024 Mi) | 1Gi |
Ti | 티비바이트(1 Ti = 2⁴⁰ B = 1024 Gi) | 1Ti |
참고:
- 메모리 단위는 이진 접두사(Ki, Mi, Gi)를 주로 사용합니다.
- kB, MB, GB 같은 10진 단위도 지원되지만, Kubernetes에서는 보통 이진 접두사를 권장합니다.
memory 에 대한 제한 및 요청은 바이트 단위로 측정된다. E, P, T, G, M, k 와 같은 수량 접미사 중 하나를 사용하여 메모리를 일반 정수 또는 고정 소수점 숫자로 표현할 수 있다. Ei, Pi, Ti, Gi, Mi, Ki와 같은 2의 거듭제곱을 사용할 수도 있다. 예를 들어, 다음은 대략 동일한 값을 나타낸다.
128974848, 129e6, 129M, 128974848000m, 123Mi
접미사의 대소문자에 유의한다. 400m의 메모리를 요청하면, 이는 0.4 바이트를 요청한 것이다. 이 사람은 아마도 400 메비바이트(mebibytes) (400Mi) 또는 400 메가바이트 (400M) 를 요청하고 싶었을 것이다.
십진표기 vs 이진 표기 : https://ko.wikipedia.org/wiki/킬로바이트
파드의 리소스 사용량 모니터링
kubectl top pod {pod_name}
728x90