본문으로 바로가기

Pod에 리소스(cpu, memory) 할당하기

category Kubernetes 2021. 7. 15. 01:02
반응형

여태 실습을 해왔을 때 1개의 pod에 리소스의 제한을 걸어 두지 않고 생성하고 실행하였다.

하나의 컴퓨트에는 사용할 수 있는 리소스가 제한돼 있는데 (ex cpu 2 core memory 4GB) 각각 의 Pod에 리소스 제한을 걸어두지 않는다면 그 1개의 pod가 컴퓨터의 리소스를 전부 잡아먹고 사용할 수도 있기 때문이다.

1개의 Pod 때문에 다른 필수 Pod가 실행되지 못할 수 있기 때문에 리소스를 제한시켜줘야 한다.

 

Resource Requests

: Pod를 실행하기 위한 최소 리소스 양을 요청

 

Resource Limits

Pod가 사용할 수 있는 최대 리소스 양을 제한

Memory limit을 초과해서 사용되는 파드는 종료되며 다시 스케쥴링 된다.

 

 

실습 

Container Resource 설정 예시

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
   - name: nginx
     image: nginx:1.14
     livenessProbe:
       httpGet:
         path: /
         port: 80
     resources:
       requests:
         cpu: 200m
         memory: 250Mi
       limits:
         cpu: 1
         memory: 500Mi

 

resource는 각 컨테이너마다 설정을 해줘야 한다. 현재는 싱글 컨테이너이기 때문에 한번 들어갔지만 멀티 컨테이너일 경우 각 컨테이너에다 설정을 해줘야 한다.

requests 방식으로 cpu 200m 여유공간에 메모리 250mi를 최소조건으로 요청한다(스케쥴러에) 그렇게 할당된 Pod는

최대 cpu 1코어 메모리 500Mi를 초과해서 사용할 시 종료가 되고 다시 스케쥴링 된다.

쿠버네티스 에서 1MiB  = 1024 Kib 1core = 1000m 

 

 

위의 yaml 파일을 사용하여 pod를 생성한 후 describe 옵션으로 상세 스펙을 확인하니.

리소스 리밋과 요청사항의 정보가 명시 돼 있다.

반응형