컨테이너 메모리 제한 설정 점검

워크로드에 맞는 메모리 상한을 설정하고 실제 적용값을 확인하세요.

설명

실제로 적용되는 메모리 상한이 없으면 해당 워크로드가 노드 메모리를 과도하게 사용할 수 있습니다. 메모리 누수나 비정상 동작이 발생했을 때 노드 전체에 영향을 줄 수 있습니다.

메모리 제한은 특정 워크로드가 노드 자원을 독점하지 못하게 하는 기본 안전장치입니다. 컨테이너 설정뿐 아니라 LimitRange 기본값이나 지원되는 파드 수준 자원 설정도 함께 확인하세요.

잠재적 영향

  • 하나의 컨테이너가 과도한 메모리를 사용해 노드 전체 안정성에 영향을 줄 수 있습니다.
  • 다른 파드가 메모리 부족으로 종료되거나 성능 저하를 겪을 수 있습니다.
  • 장애가 특정 애플리케이션을 넘어 노드 단위로 확산될 수 있습니다.

해결 방법

  • 각 컨테이너의 resources.limits.memory와 실제 적용되는 상한을 확인하세요.
  • 애플리케이션 특성에 맞는 메모리 상한을 정하고 정기적으로 조정하세요. 너무 낮으면 OOM 종료가 발생할 수 있습니다.
  • 리소스 요청값과 제한값을 함께 검토해 스케줄링과 안정성을 모두 맞추세요.

예시

메모리 설정을 비교하는 예제입니다. stress 이미지의 실제 실행 인수와 필요한 CPU 요청은 별도로 구성하고, 100Mi와 200Mi는 워크로드 사용량에 맞게 조정하세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-1
spec:
  containers:
    - name: memory-demo-ctr
      image: polinux/stress
      resources:
        requests:
          cpu: "0.5"

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-safe
spec:
  containers:
    - name: memory-demo-ctr
      image: polinux/stress
      resources:
        limits:
          memory: "200Mi"
        requests:
          memory: "100Mi"

설명:

  • 변경 전: 이 매니페스트에는 메모리 상한이 없습니다. 클러스터에서 추가로 적용하는 기본값도 확인하세요.
  • 변경 후: 메모리 상한 200Mi와 요청 100Mi를 지정합니다. 한도 초과 시 프로세스가 종료될 수 있으므로 사용량과 OOM을 모니터링하세요.

참조