Kubernetes

Limit Ranges

라온클 2023. 2. 11. 09:36

<한줄 요약>

(특정 네임스페이스 안에서)시스템 자원에 대한 사용량을 오브젝트 단위로 관리하는 방법

 

 

 

<세줄 요약>

시스템 자원에 대한 사용량을 오브젝트 단위로 관리하는 방법

별도의 오브젝트마다 정의해줄 수 있다.(pod에 대해, pvc에 대해)

Limit Ranges는 네임스페이스 단위로 관리한다

 

 

 

 

<특징>

  • 오브젝트 단위로 사용량을 관리하되, 그 범위는 클러스터 전체가 아닌 특정 네임 스페이스 안에서만 적용된다.
    • 1네임스페이스 1Limit Ranges
    • A네임스페이스에 Limit Ranges가 생기면, 오직 해당 A네임스페이스에만 Limit Ranges가 적용된다.
  • Limit Ranges의 type으로는 Container, Pod, PersistentVolumeClaim 세가지가 있다.
  • Limit Ranges를 넘는 사양의 Pod를 생성하면 생성 단계에서 status가 'OutOfmemory'로 나타난다.
  • 'OOMKilled' 상태는 Pod의 메모리가 부족하여 실패했음을 나타낸다. 이 때, Pod에 설정된 memory limit을 확인하자.

 

<그림 설명>

쿠버네티스에서 Resource Quota, Limit Ranges, Requests&Limit 의 역할을 그림으로 나타내면 다음과 같다.

연한 초록색이 Limit Ranges의 영향 범위다.

위 그림에서 빨간색 선은 각 네임스페이스를 의미한다.

Resource Quota 네임스페이스 전체 오브젝트에 대한 사용량을 관리한다.

Limit Ranges 네임스페이스 안에서 각 오브젝트(pod, pvc, container)에 대한 사용량을 관리한다.

(Pod안의 Container에 설정하는)Requests&Limit는 컨테이너에 대한 사용량을 관리한다.

 

Resource Quota, Limit Ranges, Requests&Limit 가 영향끼치는 범위를 연한 색깔로 나타내면 다음과 같다.

 

 

 

<만드는 법>

apiVersion: v1
kind: LimitRange
metadata:
  name: limits-dev1
  namespace: ns-dev1
spec:
  limits:
  - type: Container
    default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi

<존재 이유 or 흐름 속 의미>

(dev, stage, production, monitoring, test)등 각 팀 별로 네임스페이스가 할당된 상황에서)각 팀은 팀의 목적에 알맞게 각 오브젝트의 사용량 limit을 설정해줄 수 있다.

 

<참고 링크>

공식 문서

https://kubernetes.io/ko/docs/concepts/policy/limit-range/ 

https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ 

https://kubernetes.io/ko/docs/concepts/policy/resource-quotas/ 

https://kubernetes.io/ko/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/ 

 

강의

그림으로 배우는 쿠버네티스 > 8.5 Limit Ranges

그림으로 배우는 쿠버네티스 > 8.5 Limit Ranges 깃헙

 

 

블로그

Kubernetes LimitRange를 사용한 리소스 제한