인프라/시스템 구축

[ EKS ] Limit, Request 설정

김붕어87 2023. 4. 4. 11:13
반응형
개요

Limit 설정하는 이유
Limit를 설정하지 않으면 pod가 리소스를 제한 없이 사용이 가능하다.
POD가 WokerNode의 CPU 리소스를 모두 사용할 경우, CPU Throttle걸려서 다른 POD들도 느려진다.
CPU Throttle이 발생하면, livenessProbe 상태 체크 응답이 느려지면 pod들이 restart 될 수 있다.

Request 설정하는 이유
POD가 실행에 필요한 최소사양을 말한다.
최소사양을 지원하는 WokerNode를 찾아서 배포한다.
찾지못하면 pod은 pending 상태로 빠진다.

 

 

 

1. Node, pod 상태 보기

[ app-ng ]
kubectl describe no ip-10-223-84-128.ap-southeast-1.compute.internal
kubectl describe no ip-10-223-87-123.ap-southeast-1.compute.internal
kubectl describe no ip-10-223-89-71.ap-southeast-1.compute.internal

 

 

  • Node 정보

Allocatable:
attachable-volumes-aws-ebs: 25
cpu: 3920m                                             # 사용 가능한 CPU (3.9 Core)
ephemeral-storage: 95551679124
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 15232052Ki                             # 사용 가능한 MEM (약 14GB 사용 가능)
pods: 58                                                   # 58 POD를 배포할 수 있음.

 

 

 

  • pod resources 정보 보기
  • game-app              메모리 사용 1.6GB ~
  • prod-xxx-frontend 메모리 사용 140MB ~
 
kubectl top pod

NAME                   CPU(cores)   MEMORY(bytes)
prod-game-xxx             7m           1626Mi
prod-game-xxx             8m           1320Mi
prod-xxx-frontend          4m           139Mi
prod-xxx-frontend          4m           139Mi

 

2. Limit, Request 정보 보기

kubectl get po -o custom-columns="Name:metadata.name,CPU-Requet:spec.containers[*].resources.requests.cpu,CPU-limit:spec.containers[*].resources.limits.cpu,MEM-Request:spec.containers[*].resources.requests.memory,MEM-limit:spec.containers[*].resources.limits.memory"

Name                  CPU-Requet   CPU-limit   MEM-Request   MEM-limit
prod-game-xxx             100m         2           128Mi         1Gi
prod-game-xxx             100m         2           128Mi         1Gi
prod-xxx-frontend         100m         2           128Mi         1Gi
prod-xxx-frontend         100m         2           128Mi         1Gi

 

 

 

3. QoS(Qualitu Of Service) 클래스 타입

  • Guaranteed: resources 항목에서 limits와 request의 값이 완전히 동일한 경우
  • Burstable: resources 항목에서 limits가 requests보다 클 경우 
  • BestEffort: resources 항목을 아예 사용하지 않을 경우

 

 

4. CPU, MEMORY 설정 단위

 

 

 

5. Request 설정 필요 여부

  • Request만큼 사용할 수 있는 Node에 배포될 수 있다.
    • Node에 리소스를 많이 사용하고 있으면 CPU, MEM가 부족해서 배포가 안된다.
Service Name Request : CPU Request : memory
prod-game-xxx 100m 128Mi
prod-xxx-frontend 100m 128Mi

 

 

6. Limit 설정 필요 여부

  • pod에서 리소스 사용량이 많아지면 배포된 Node에 문제가 발생하기 때문에 Limit 설정이 필요합니다.
Service Name Request : CPU Request : memory
prod-game-xxx 1000m 2000Mi
prod-xxx-frontend 1000m 1000Mi

 

 

반응형

'인프라 > 시스템 구축' 카테고리의 다른 글

[ EKS ] Secret, ConfigMap 설정  (0) 2023.04.04
[ EKS ] ConfigMap, aws-auth 설정  (0) 2023.04.04
[ EKS ] drain, cordon  (0) 2023.04.04
[ EKS ] NodeSelector 설정  (0) 2023.04.03
[ EKS ] taint, toleration 설정  (0) 2023.04.03