본문 바로가기

IT Study/Kubernetes

kubernetes Pod resource setting 파드 자원관리

kubernetes Pod resource Setting

쿠버네티스에서 Pod 실행,배포시 worker node의 H/W상태를 체크.점검하여

가장 적합한 worker Node에 실행,관리시켜주는 컴포넌트는 master Node의 scheduler 

이때 사용량이 많은 파드가 한 node 몰려서 동작시 효율성이 낮아진다.

 

이를 방지하는 몇가지 기능 중 Pod의 컨테이너 용도에 맞게 CPU,MEM 사용량을 관리해주는것을

kubernetes Pod resource setting 이라고 한다.

 

 

●Pod 리소스 단위

쿠버네티스 파드 리소스 표현단위

 

프로세서(CPU):  M , 1 (core)

메모리(memory): Ki , Mi , Gi

 

●Pod 리소스 요청 및 제한

쿠버네티스 파드 리소스관리의 요청,제한은 두가지로 관리된다.컨테이너별로 리소스를 설정해줄 수 있다.

 

Requests (요청) : 파드가 생성될때 요청하는 최소 리소스

Limits (제한): 파드가 사용할 수 있는 최대 리소스

※Mem limits를 초과하면 파드는 재시작 된다, 너무 타이트하게 조정하는 것은 적절하지 않다.

 

●Pod 리소스 Requests & Limits 설정하기

Requests 설정

apiVersion: v1
kind: Pod
metadata:
  name: pod-resources
spec:
  containers:
  - image: nginx
    name: nginx-container
    ports:
    - containerPort: 80
      protocol: TCP
    resources:
      requests:
        memory: 500Mi
        cpu: 1

 

Limits 설정

apiVersion: v1
kind: Pod
metadata:
  name: pod-resources
spec:
  containers:
  - image: nginx
    name: nginx-container
    ports:
    - containerPort: 80
      protocol: TCP
    resources:
      limits:
        memory: 500Mi
        cpu: 1

 

※ requests 설정없이 단독으로 limits만 지정하면 requests는 동일한 용량으로 설정된다.

 

Requests & Limits 설정

apiVersion: v1
kind: Pod
metadata:
  name: pod-resources
spec:
  containers:
  - image: nginx
    name: nginx-container
    ports:
    - containerPort: 80
      protocol: TCP
    resources:
      requests:
        memory: 500Mi
        cpu: 200m

       limits:
        memory: 500Mi
        cpu: 1

 

 

 

※ requests 에서 요구하는 만큼 노드의 여유자원이 없다면 해당파드는 Pending 상태로 실행되지 않다가

   클러스터안에 자원여유가 생기면 실행된다 ( worker node 증설 , 기존pod삭제 등등)

 

Node의 실제로 사용되고있는 리소스양을 확인하는 명령어로 kubectl top nodes 를사용하면 된다.

kubectl top 명령어의 경우 메트릭스 서버를 설치해야 확인할수있는데 

이건 추후 포스팅예정~~!