Kubernetes

Pod Resource 관리(cpu, mem limits)

babbeolicoding 2023. 5. 22. 22:57
반응형

resources 요청 및 제한 적용

- requests: 처음 pod를 실행할 때 필요한 최소 자원
- limits : cpu, mem 등의 제한 사용량

 아래 코드를 보면 pod가 실행될때의 최소 사용량은 request이고

 최대 사용량은 limits다.

 resources:
      requests:
        memory: "10Mi"
        cpu: "10m"
      limits:
        memory: "50Mi"
        cpu: "50m"

 

그럼 limits을 설정하고 그 이상 자원을 사용하면

어떻게 되는지 확인해 보자.

 

1. CPU limit을 사용하는 경우

-  limits 조건 :  request : 10m // limit : 50m

 resources:
      requests:
        cpu: "10m"
      limits:
        cpu: "50m"

아무리 부하를 줘도 CPU를 limits이상으로 사용할 수 없다.

(아래는 grafana로 확인한 해당 pod의 cpu 사용량)

cpu 사용량이 limits을 넘어가도 pod는 재시작되거나 멈추거나 하지 않는다.

단순히 cpu를 limits 이상 사용하지 못한다.

cpu를 limits까지 사용한 상태에서 다른 작업이 들어오면

이전 작업이 끝날 때까지 서비스가 정상적이지 않거나 많이 느려진다.

 

 

2. Memory 조건이 있는 경우

-limit 조건 : request : 10Mi // limits : 50Mi

 resources:
      limits:
        memory: "50Mi"
        cpu: "50m"
      requests:
        memory: "10Mi"
        cpu: "10m"

메모리를 limits 이상 사용하는 경우 pod는 재시작된다.

(cpu처럼 mem도 제한적으로 사용할 수 있는 건 아니고 그 이상으로 자원을 쓰면 pod는 재시작된다)

 

kubectl get pod로 확인하면 OOMKilled(Out Of Memory) 문구와 함께 Pod 재시작되는 걸 확인할 수 있다.

kubectl describe pod [pod명]으로 재시작 횟수 확인

 

반응형