본문 바로가기
CSP (Cloud Service Provider)/GCP

[GKE 사용하기] 쿠버네티스 리소스관리

by BTC_yljo 2022. 11. 25.

안녕하세요 Hallo 팀입니다.이번 시간에는 GKE를 잘 사용하기 위한 리소스 관리에 대해 알아보겠습니다.

 

서비스가 안정적으로 제공되기 위해서는 Pod 내의 애플리케이션이 원활하게 동작할 수 있는 충분한 자원이 확보되어야 합니다. 만약 특정 Pod나 컨테이너가 리소스를 독점한다면 다른 Pod에서 서비스를 제공하는 데에 문제가 발생할 수 있습니다. 그러므로 각 Pod의 리소스를 제한하고 관리하는 것이 필요합니다.

 

ResourseQuota

Resource Quota는 네임스페이스별로 리소스 사용과 생성을 제한합니다. 쿠버네티스에는 기본적으로 Resource Quota 지원이 활성화되어 있어, computing resource, storage resource, object count 등 다양한 타입을 통해 Resource Quota를 설정할 수 있습니다.

다음은 Compute Resource Quota의 예시입니다. test 네임스페이스에 CPU는 400~600m으로, 메모리는 200~500MiB로 리소스를 제한했습니다.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: test
sepc:
  hard:
    requests.cpu: 400m
    requests.memory: 200Mi
    limits.cpu: 600m
    limits.memory: 500Mi

 

LimitRange

LimitRange는 네임스페이스에서 리소스 할당을 제한하는 정책으로, 네임스페이스 내에서 포드나 컨테이너는 네임스페이스의 Resource Quota에서 지정된 만큼의 CPU와 메모리를 사용할 수 있습니다. 하나의 네임스페이스에 하나의 LimitRange를 생성할 수 있습니다.

  • 네임스페이스에서 포드 또는 컨테이너별 최소 및 최대 컴퓨팅 리소스 사용량을 지정한다.
  • 네임스페이스에서 스토리지 클래스별 최소 및 최대 스토리지 요청을 지정한다.
  • 네임스페이스에서 리소스에 대한 요청과 제한 사이의 비율을 지정한다.
  • 네임스페이스에서 컴퓨팅 리소스에 대한 default Request와 Limit을 설정하고, 런타임에 있는 컨테이너에 자동으로 설정한다.

다음은 Limit Range의 예시입니다.

apiVersion: v1
kind: LimitRange
metadata:
  name: limit-example
spec:
  limits:
  - type: Pod  
    min: 
      cpu: 50m 
      memory: 5Mi 
    max: 
      cpu: 1 
      memory: 1Gi  
  - type: Container 
    defaultRequest: 
      cpu: 100m 
      memory: 10Mi  
    default: 
      cpu: 200m 
      memory: 100Mi 
    min: 
      cpu: 50m 
      memory: 5Mi 
    max: 
      cpu: 1 
      memory: 200Mi
    maxLimitRequestRatio:
      cpu: 4  
      memory: 10 
  - type: PersistentVolumeClaim 
    min: 
      storage: 1Gi 
    max: 
      storage: 10Gi

댓글