DevOps K8S(7) – Pod의 사양 설정하기_Resource Requirement And Limit

안녕하세요, 오늘은 베스핀글로벌 DevOps실 구연수 님이 작성해 주신 ‘Pod의 사양 설정하기_Resource Requirement And Limit’에 대해 알아보겠습니다.

Resource Requirement And Limit

kube-scheduler는 pod를 어느 노드에 위치 시킬지 결정한다.

고려 사항은 Pod에 의해 요구되는 리소스 양그 양을 감당할 수 있는 Node 이며, Pod를 위치 시키기 위해 가장 적합한 Node를 식별하는 역할을 한다.

  • 기본적으로 Node 내부에서 컨테이너는 소비 가능한 리소스 양에 제한이 없다.
  • Pod 내 컨테이너는 CPU와 함께 실행 시작하며 요구하면 할수록 더 많은 리소스를 소비할 수 있다.

Resource Limit

  • Pod 내 리소스 사용량을 제한할 수 있다.
Exceed Limits
  • 다수 컨테이너가 Pod에 있다면 request와 limit은 각각 컨테이너에 개별적으로 할당된다.
    • 리소스 사용량을 초과한다면?
      • CPU 사용량 : CPU 같은 경우, 리소스 제한보다 초과로 사용할 수 없다!
      • memory 사용량 : memory는 제한보다 더 많이 사용할 수 있다. 계속해서 초과를 한다면 해당 pod는 중지되고, OOM(Out Of Memory) 에러 발생
Limit Range
  • Kubernetes는 기본적으로 파드마다 리소스 양을 요구하거나 제한하지 않는다.
  • Kubernetes 내부에 기본 설정이 필요하다면? -> limit range 사용
    • Limit Range
      • pod 내부 컨테이너들이 기본 제한값을 가질 수 있도록 돕는다.
  • pod 설정 파일에 개별적으로 정의할 필요가 없으며, namespace 레벨에서 적용된다.
  • 제한 정보는 기존에 존재하던 pod들에는 적용되지 않으며, 앞으로 새로 생성되는 pod에만 적용된다.

Resource Quotas

  • Kubernetes 내에 배포된 모든 애플리케이션들이 소모할 수 있는 전체 리소스양 제한
  • namespace 레벨에서 적용

감사합니다 🙂

Written by 구 연수 / Yeonsoo koo

Software Engineer