개요

노드 하나에 여러 개 작은 파드들이 많이 생성되고 각 파드당 자원 사용률이 높다면 성능에 문제가 발생함. 이를 막는 여러 방법 중 가장 기본적인 방법으로 파드 생성시 파드 안 각 컨테이너가 CPU나 메모리를 얼마나 사용할 수 있을지 지정 하는 것임.

필드

항목 설명
.spec.containers[].resources.limits.cpu 최대 cpu 사용량
.spec.containers[].resources.limits.memory 최대 memory 사용량
.spec.containers[].resources.requests.cpu 최소 cpu 사용량
.spec.containers[].resources.requests.memory 최소 memory 사용량

자원 사용량 설정 예

apiVersion: v1
kind: Pod
metadata:
  name: whms-pod
  labels:
    app: whms-pod
spec:
  containers:
  - name: whms-pod
    image: sftth/whms:latest
    resources:
      requests:
        cpu: 0.1
        memory: 512M
      limits:
        cpu: 0.5
        memory: 1G
    ports:
    - containerPort: 8080

환경 변수 설정

env[] 하위 필드 설명

항목 서명
name 사용할 환경 변수 이름
value 문자열이나 숫자 형식의 값 설정
valueFrome 다른 곳에 있는 값을 참조
fieldRef 파드의 현재 설정 내용을 fieldPath에 매핑된 위치의 값으로 설정
fieldPath .fieldRef에서 가져올 값의 위치를 지정
resourceFieldRef 자원 사용량 설정을 위한 참조 컨테이너 설정
containerName 자원 사용량을 가져올 참조 컨테이너 이름
resource CPU, Memory 중 어떤 자원 정보를 가져올지 설정

예제

apiVersion: v1
kind: Pod
metadata:
  name: whms-pod2
  labels:
    app: whms-pod2
spec:
  containers:
  - name: whms-pod2-con1
    image: sftth/whms:latest
    resources:
      requests:
        cpu: 0.1
        memory: 512M
      limits:
        cpu: 0.5
        memory: 1G
    ports:
    - containerPort: 8080
    env:
    - name: CPU_REQUEST
      valueFrom:
        resourceFieldRef:
          containerName: whms-pod2-con1
          resource: requests.cpu
    - name: CPU_LIMIT
      valueFrom:
        resourceFieldRef:
          containerName: whms-pod2-con1
          resource: limits.cpu
    - name: MEM_REQUEST
      valueFrom:
        resourceFieldRef:
          containerName: whms-pod2-con1
          resource: requests.memory
    - name: MEM_LIMIT
      valueFrom:
        resourceFieldRef:
          containerName: whms-pod2-con1
          resource: limits.memory                                                                                                  40,10         All

확인

CPU_REQUEST 값이 0.1 이 아닌 1인 이유는 확인

[summit@gcp-minikube-vm pod]$ kubectl exec -it whms-pod2 -- /bin/bash
[root@whms-pod2 engn001]# env
HOSTNAME=whms-pod2
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
TERM=xterm
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_HOST=10.96.0.1
CPU_LIMIT=1
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MEM_LIMIT=1000000000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CPU_REQUEST=1
PWD=/engn001
SHLVL=1
HOME=/root
MEM_REQUEST=512000000
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
_=/usr/bin/env
[root@whms-pod2 engn001]# 

댓글남기기