• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

Limit에 대한 개념이 잘 이해가 가지 않습니다.

21.01.06 12:03 작성 조회수 161

1

안녕하세요, 선생님,

Pod를 생성할 때, Request에 대한 내용은 직관적으로 이해가 되는데요. Limit은 무엇을 의미하는지 잘 모르겠습니다.

Pod를 생성할 때 Request 1G로 요청하고 Limit가 2G라면 K8s가 그냥 1G만 할당하면 되는 것이 아닌지요? 

1G의 차이(Limit - Request)가 어떤 의미인지 가르쳐주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

1

Pod1 생성시 Core의 경우 Reqeust 1G, Limit 2G로 설정한다면. 

해당 Pod1은 CPU를 2G까지 사용할 수 있습니다.

하지만 K8S에는 1G로 예약해놓은 상태이기 때문에,

만약 Node의 전체 Core가 2G 라고 한다면. K8S는 다른 Pod2한테 Request 1G까지만 CPU를 더 할당해 줄 수 있습니다.

Pod2가 Reqeust 1.5G로 설정해서 만들려고 하면 생성이 안되요.

이렇듯 Limit는 최대 사용량이고, Reqeust는 예약(보장)의 개념입니다.

만약 Pod2가 CPU를 1G를 실제 사용중이게 됐다면,

2G까지 사용할수 있다고 생각한 Pod1은 실제로 1G까지만 CPU가 사용가능 해집니다.

그래서 Limit는 상황에 따라 사용이 가능할 수도, 불가능할 수 도 있는 자원이고요.

그리고 Pod1이 1.5G로 사용중인 상태에서. Reqeust 1로 설정된 Pod2가 CPU를 1G까지 사용하려고 한다면.

Pod1의 CPU는 Reqeust값인 1G로 떨어집니다.

이런 동작은 OverCommit 상태에서 동작하고, CPU와 Memory의 동작이 다릅니다.

https://kubetm.github.io/practice/beginner/object-pod/

위 자료실에 아래 내용으로 좀더 참고하시면 되시고.

CPU와 Memory의 (Request, Limits)에 대한 강의 내용 보충

[중급편]에 Pod-QoS Classes를 보시면 좀더 Reqeust와 Limit의 쓰임에 대해서 참고하실 수 있으세요.