Unlocking Kubernetes Performance with no CPU Resource Limits
Medium
Kubernetes에서 컨테이너가 사용할 리소스를 할당하기 위해 resources 필드를 이용해서 CPU와 메모리를 지정할 수 있습니다. 이때 CPU와 메모리에는 requests와 limits 필드가 있어서 이를 어떻게 설정하냐에 따라 Kubernetes에서 동작 등이 달라지기 때문에 이 필드의 목적 등을 이해하는 것은 중요합니다.
작년에 저도 글을 썼지만 Kubernetes 운영을 하면서 CPU에서는 limits를 지정하지 않는게 좋다고 생각하는 편입니다. 더 정확히 말하자면 limits를 지정하면 훨씬 안정적이긴 하지만 리소스 낭비가 너무 심해서 효율적으로 쓰고자 하면 CPU limits를 지정하지 않는게 좋다고 생각하고 있습니다.
이 글에서도 비슷한 내용을 얘기하고 있습니다. 일단 requests와 limits의 동작부터 설명하는데 requests는 컨테이너(정확히는 Pod)을 노드에 스케쥴링하기 위해서 사용합니다. 예를 들어 2 CPU 코어를 필요하다면 클러스터내의 노드에서 2코어의 여유 공간이 있는 노드를 찾아서 거기에 할당을 합니다. limits는 할당된 뒤에 해당 CPU 이상을 쓰지 않도록 제어하는데 이 이상 쓰려고 하면 CPU를 스로틀링하게 됩니다.
이는 시끄러운 이웃 문제를 해결하기 위해 자연스러운 기능으로 보이지만 실제로는 보장받은 CPU도 제대로 사용할 수 없기 때문에 꽤 높은 CPU limits를 지정해야 합니다. 원글에서는 그림과 함께 설명해 주고 있어서 requests와 limists의 동작방식을 이해하기 좋습니다.
https://medium.com/nordnet-tech/unlocking-kubernetes-performance-with-no-cpu-resource-limits-56d5dc33037b
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 2월 28일 오전 1:26
이
... 더 보기이
... 더 보기AI 기술이 우리 일상과 산업 전반에 스며들면서 소프트웨어 개발 환경 역시 큰 변화의 물결을 맞이하고 있다. 특히 코딩을 돕는 AI 에이전트의 등장은 개발 생산성에 대한 큰 변화를 만들고 있다. 나 역시 이러한 변화를 체감하며, 나에게 익숙한 소프트웨어 개발의 대표적인 두 축인 프론트엔드와 백엔드 영역에서 AI 기술이 미치는 영향과 그로 인해 변화하는 소프트웨어 엔지니어의 역할에 대해 개인적인 생각을 정리해 본다.
... 더 보기안
... 더 보기