Certificated 도전/CKAD- Kubernetes

[CKAD] 리소스 요청, 제한 ( Requests, Limits) 정리

지추월자 2025. 1. 24. 12:02
반응형

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. 동작 원리

  1. Requests:
    • Pod는 요청한 리소스만큼 반드시 사용할 수 있도록 스케줄러에 의해 적절한 노드에 배치됩니다.
    • 요청한 리소스보다 적게 사용할 수도 있습니다.
  2. Limits:
    • 컨테이너가 설정된 제한 값을 초과할 경우:
      • CPU: 컨테이너가 제한된 CPU만 사용하도록 조정됩니다.
      • 메모리: 초과하면 OOM 발생으로 컨테이너가 종료됩니다.

 

6. 리소스 요청과 제한의 차이

특징 Requests Limits

역할 최소 보장 리소스 최대 허용 리소스
스케줄링에 영향 영향을 줌 (Pod 배치 결정에 사용됨) 영향을 주지 않음
초과 사용 시 결과 초과 사용 가능 (최대 Limit까지 가능) 초과 시 OOM 또는 CPU 제한 적용

 

반응형