반응형
Kubernetes에서 리소스 요청(Requests)과 제한(Limits)은 Pod(컨테이너)의 CPU와 메모리 사용량을 제어하기 위해 사용됩니다. 이는 클러스터 리소스를 효율적으로 관리하고, 특정 컨테이너가 과도한 리소스를 소비하는 것을 방지하는 데 필수적입니다.
Pod 안에 여러 개의 컨테이너가 있는 경우, 각각의 컨테이너에 대해 요청 및 제한을 별도로 설정할 수 있습니다. 그러니까 파드 안에 컨테이너의 CPU와 메모리 사용량을 제어하는 것이라고 생각하는게 쉬울 것 같습니다.
1. 리소스 요청(Requests)
- 리소스 요청은 컨테이너가 실행되기 위해 필수적으로 보장받아야 하는 최소 리소스를 정의합니다.
- 스케줄러는 Pod를 배치할 때, 요청된 리소스가 충분한 노드를 선택합니다.
- CPU는 millicores 단위로, 메모리는 Bytes 단위로 설정합니다.
2. 리소스 제한(Limits)
- 리소스 제한은 컨테이너가 사용할 수 있는 최대 리소스를 정의합니다.
- 컨테이너가 제한을 초과하면:
- CPU: 사용량이 제한되지만, 종료되지 않음.
- 메모리: 메모리 사용량 초과 시 OOM(Out of Memory) 오류로 컨테이너가 재시작될 수 있음.
3. 설정 방법
리소스 요청과 제한은 Pod의 각 컨테이너별로 설정합니다.
예시: Pod YAML에서 Requests와 Limits 설정
apiVersion: v1
kind: Pod
metadata:
name: resource-limits-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
memory: "64Mi" # 최소 보장 메모리
cpu: "250m" # 최소 보장 CPU (250 millicores)
limits:
memory: "128Mi" # 최대 사용 가능한 메모리
cpu: "500m" # 최대 사용 가능한 CPU (500 millicores)
4. 동작 원리
- Requests:
- Pod는 요청한 리소스만큼 반드시 사용할 수 있도록 스케줄러에 의해 적절한 노드에 배치됩니다.
- 요청한 리소스보다 적게 사용할 수도 있습니다.
- Limits:
- 컨테이너가 설정된 제한 값을 초과할 경우:
- CPU: 컨테이너가 제한된 CPU만 사용하도록 조정됩니다.
- 메모리: 초과하면 OOM 발생으로 컨테이너가 종료됩니다.
- 컨테이너가 설정된 제한 값을 초과할 경우:
6. 리소스 요청과 제한의 차이
특징 Requests Limits
역할 | 최소 보장 리소스 | 최대 허용 리소스 |
스케줄링에 영향 | 영향을 줌 (Pod 배치 결정에 사용됨) | 영향을 주지 않음 |
초과 사용 시 결과 | 초과 사용 가능 (최대 Limit까지 가능) | 초과 시 OOM 또는 CPU 제한 적용 |
반응형
'Certificated 도전 > CKAD- Kubernetes' 카테고리의 다른 글
[CKAD] 25년 1월 합격 후기, 출제 유형 및 준비 팁 (0) | 2025.01.27 |
---|---|
[CKAD] Service Account도 한 문제는 나온다고 함! (0) | 2025.01.24 |
[CKAD] NetworkPolicy 개념 잡기, 이것도 무조건 출제 (0) | 2025.01.23 |
[CKAD]Liveness와 Readiness 프로브 완벽 정리 (0) | 2025.01.23 |
[CKAD] Blue/Green 배포와 Canary 배포 정리 (0) | 2025.01.22 |