Kubernetes๋ฅผ ์์ํ ๋ ์ปจํ ์ด๋ ๋ฆฌ์์ค ์ค์ ์ ์์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ์ด ์์ ์์๋ Docker ์ด๋ฏธ์ง๊ฐ ์๋ํ๊ณ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ํ๋ก๋์ ํด๋ฌ์คํฐ์ ๋ฐฐํฌํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ์ปจํ ์ด๋์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ๊ณ ํด๋น ๋ฆฌ์์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ๊ณ ์คํํ๋ ๋ฐ ์ถฉ๋ถํ์ง, ์คํ ์ค์ธ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
ํ
์ปดํจํ ๋ฆฌ์์ค
๋ค์ ๋จ์๋ฅผ ํฌํจํ๋ ๋ ๊ฐ์ง ์ ํ์ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค.
- ์ค์ ์ฒ๋ฆฌ ์ฅ์น(CPU) - ์ฝ์ด
- ๋ฉ๋ชจ๋ฆฌ(MEM) - ๋ฐ์ดํธ.
๊ฐ ์ปจํ ์ด๋๋ง๋ค ๋ฆฌ์์ค๊ฐ ์ง์ ๋ฉ๋๋ค. ๋ค์ Pod YAML ํ์ผ์๋ ์์ฒญ๋ ๋ฆฌ์์ค์ ์ ํ ๋ฆฌ์์ค๊ฐ ํฌํจ๋ ๋ฆฌ์์ค ์น์ ์ด ํ์๋ฉ๋๋ค.
- ์์ฒญ๋ ํฌ๋ ๋ฆฌ์์ค = ๋ชจ๋ ์ปจํ ์ด๋์ ์์ฒญ๋ ๋ฆฌ์์ค ํฉ๊ณ.
- ํฌ๋ ๋ฆฌ์์ค ์ ํ = ๋ชจ๋ ํฌ๋ ๋ฆฌ์์ค ์ ํ์ ํฉ๊ณ์ ๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: backend-pod-name
labels:
application: backend
spec:
containers:
โ name: main-container
image: my-backend
tag: v1
ports:
โ containerPort: 8080
resources:
requests:
cpu: 0.2 # REQUESTED CPU: 200m cores
memory: "1Gi" # REQUESTED MEM: 1Gi
limits:
cpu: 1 # MAX CPU USAGE: 1 core
memory: "1Gi" # MAX MEM USAGE: 1Gi
โ name: other-container
image: other-app
tag: v1
ports:
โ containerPort: 8000
resources:
requests:
cpu: "200m" # REQUESTED CPU: 200m cores
memory: "0.5Gi" # REQUESTED MEM: 0.5Gi
limits:
cpu: 1 # MAX CPU USAGE: 1 core
memory: "1Gi" # MAX MEM USAGE: 1Gi
์์ฒญ๋ ์์๊ณผ ์ ํ๋ ์์์ ์
๋ถ์ผ resources.requested
์ฌ์์์ Pod๋ ์ํ๋ ๋
ธ๋๋ฅผ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ ์์ ์ค ํ๋์
๋๋ค. ์ด๋ฏธ Pod ๋ฐฐํฌ๋ฅผ ๊ณํํ ์ ์์ต๋๋ค. ์ ํฉํ ๋
ธ๋๋ฅผ ์ด๋ป๊ฒ ์ฐพ๋์?
Kubernetes๋ ๋ง์คํฐ ๋ ธ๋ ๋๋ ๋ง์คํฐ ๋ ธ๋(Kubernetes Control Plane)๋ฅผ ํฌํจํ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ง์คํฐ ๋ ธ๋์๋ kube-apiserver, kube-controller-manager ๋ฐ kube-scheduler ๋ฑ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค.
kube-scheduler ํ๋ก์ธ์ค๋ ์๋ก ์์ฑ๋ ํฌ๋๋ฅผ ๊ฒํ ํ๊ณ ์์ฒญ๋ ๋ฆฌ์์ค ์๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ํฌ๋ ์์ฒญ๊ณผ ์ผ์นํ๋ ๊ฐ๋ฅํ ์์ ์ ๋ ธ๋๋ฅผ ์ฐพ๋ ์ผ์ ๋ด๋นํฉ๋๋ค. kube-scheduler๊ฐ ์ฐพ์ ๋ ธ๋ ๋ชฉ๋ก์ ์์๊ฐ ์ง์ ๋ฉ๋๋ค. Pod๋ ์ ์๊ฐ ๊ฐ์ฅ ๋์ ๋ ธ๋์ ์์ฝ๋ฉ๋๋ค.
๋ณด๋ผ์ ํฌ๋๋ ์ด๋์ ๋ฐฐ์น๋๋์?
๊ทธ๋ฆผ์์ kube-scheduler๊ฐ ์๋ก์ด ๋ณด๋ผ์ ํฌ๋๋ฅผ ์์ฝํด์ผ ํจ์ ๋ณผ ์ ์์ต๋๋ค. Kubernetes ํด๋ฌ์คํฐ์๋ A์ B๋ผ๋ ๋ ๊ฐ์ ๋ ธ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ณด์๋ค์ํผ kube-scheduler๋ ๋ ธ๋ A์์ Pod๋ฅผ ์์ฝํ ์ ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ(์์ฒญ๋์ง ์์) ๋ฆฌ์์ค๊ฐ ๋ณด๋ผ์ Pod์ ์์ฒญ๊ณผ ์ผ์นํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณด๋ผ์ Pod์์ ์์ฒญํ 1GB ๋ฉ๋ชจ๋ฆฌ๋ ๋ ธ๋ A์ ๋ง์ง ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ 0,5GB์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ๋ ธ๋ B์๋ ์ถฉ๋ถํ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก kube-scheduler๋ ๋ณด๋ผ์ Pod์ ๋์์ด ๋ ธ๋ B๋ผ๊ณ ๊ฒฐ์ ํฉ๋๋ค.
์ด์ ์์ฒญ๋ ๋ฆฌ์์ค๊ฐ ํฌ๋๋ฅผ ์คํํ ๋ ธ๋ ์ ํ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๊ณ ์์์ ์ํฅ์ ๋ฌด์์ ๋๊น?
๋ฆฌ์์ค ์ ํ์ CPU/MEM์ด ๋์ ์ ์๋ ๊ฒฝ๊ณ์ ๋๋ค. ๊ทธ๋ฌ๋ CPU ๋ฆฌ์์ค๋ ์ ์ฐํ๋ฏ๋ก CPU ํ๋์ ๋๋ฌํ ์ปจํ ์ด๋๋ก ์ธํด ํฌ๋๊ฐ ์ข ๋ฃ๋์ง๋ ์์ต๋๋ค. ๋์ CPU ์กฐ์ ์ด ์์๋ฉ๋๋ค. MEM ์ฌ์ฉ ์ ํ์ ๋๋ฌํ๋ฉด OOM-Killer๋ก ์ธํด ์ปจํ ์ด๋๊ฐ ์ค์ง๋๊ณ RestartPolicy ์ค์ ์์ ํ์ฉ๋๋ ๊ฒฝ์ฐ ๋ค์ ์์๋ฉ๋๋ค.
์์ฒญ๋ ๋ฆฌ์์ค ๋ฐ ์ต๋ ๋ฆฌ์์ค ์ธ๋ถ์ ๋ณด
Docker์ Kubernetes ๊ฐ์ ๋ฆฌ์์ค ํต์
๋ฆฌ์์ค ์์ฒญ๊ณผ ๋ฆฌ์์ค ์ ํ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ช ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ Kubernetes์ Docker ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐํ๋ ๊ฒ์ ๋๋ค. ์ ์ด๋ฏธ์ง์์ Kubernetes ํ๋์ Docker ์์ ํ๋๊ทธ๊ฐ ์ด๋ป๊ฒ ๊ด๋ จ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ธฐ์ต: ์์ฒญ๊ณผ ์ ํ
containers:
...
resources:
requests:
memory: "0.5Gi"
limits:
memory: "1Gi"
์์์ ์ธ๊ธํ๋ฏ์ด ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํธ ๋จ์๋ก ์ธก์ ๋ฉ๋๋ค. ๊ธฐ๋ฐ G
ะธ Gi
, ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ทธ๊ฒ๋ค์ด ๋์ผํ์ง ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ๋ ๊ฒ์
๋๋ค. ์ฒซ ๋ฒ์งธ๋ 8์ง์์ด๊ณ ๋ ๋ฒ์งธ๋ XNUMX์ง์์
๋๋ค. kXNUMXs ๋ฌธ์์ ์ธ๊ธ๋ ์์ ๊ฐ์ต๋๋ค. 128974848
, 129e6
, 129M
, 123Mi
- ์ค์ง์ ์ผ๋ก ๋์ผํฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ต์
limits.memory
๊ตญ๊ธฐ์ ์ผ์นํ๋ค --memory
๋์ปค์์. ๋ค์์ ๊ฒฝ์ฐ request.memory
Docker๋ ์ด ํ๋๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก Docker์ ๋ํ ํ์ดํ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด ๊ผญ ํ์ํ๊ฐ?๋ผ๊ณ ๋ฌผ์ผ์ค ์๋ ์์ต๋๋ค. ๋ค, ํ์ํด์. ์์ ๋งํ๋ฏ์ด, Kubernetes์์๋ ํ์ฅ์ด ์ค์ํฉ๋๋ค. kube-scheduler๋ ์ด ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฌ๋๋ฅผ ์์ฝํ ๋
ธ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์์ฒญ์ ๋ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ์กฑํ๊ฒ ์ค์ ํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ปจํ ์ด๋๊ฐ ์์ฒญ๋ ๋ฉ๋ชจ๋ฆฌ ํ๋์ ๋๋ฌํ ๊ฒฝ์ฐ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์์ ๋ ์ค์ง๋๋ ํฌ๋ ๊ทธ๋ฃน์ ํฌ๋๊ฐ ๋ฐฐ์น๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ปจํ
์ด๋๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ด๊ณผํ๋ฉด OOM-Killed๋ก ์ธํด ์ข
๋ฃ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ RestartPolicy์ ๋ฐ๋ผ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ค์ ์์๋ฉ๋๋ค. Always
.
์์ฒญ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?
Kubernetes๋ ์ ํ ๊ฐ์ ๊ฐ์ ธ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ปจํ ์ด๋์๋ ์ ํ์ด ์์ผ๋ฉฐ ์ํ๋ ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ธ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด OOM์ด ๊ทธ๋ฅผ ์ฃฝ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ RestartPolicy์ ๋ฐ๋ผ ์ปจํ ์ด๋๊ฐ ๋ค์ ์์๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ด๋ ์ต์ ์ ์๋๋ฆฌ์ค์ ๋๋ค. ์ค์ผ์ค๋ฌ๋ ์ปจํ ์ด๋์ ํ์ํ ๋ฆฌ์์ค ์๋ฅผ ์์ง ๋ชปํ๋ฉฐ ์ด๋ก ์ธํด ๋ ธ๋์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ ์ ํ(LimitRange๋ก ์ค์ )์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ธฐ๋ณธ ์ ํ์ ์์ต๋๋ค. Pod์๋ ์ ํ์ด ์์ผ๋ฉฐ ์ํ๋ ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ฒญ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋
ธ๋๊ฐ ์ ๊ณตํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ง์ผ๋ฉด ํฌ๋๊ฐ ์์ฝ๋์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค Requests.memory
- ์ต์๊ฐ์ด ์๋๋๋ค. ์ด๋ ์ปจํ
์ด๋๋ฅผ ์ง์์ ์ผ๋ก ์คํํ๋ ๋ฐ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ํ ์ค๋ช
์
๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋์ผํ ๊ฐ์ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. request.memory
ะธ limit.memory
. ์ด๋ ๊ฒ ํ๋ฉด Kubernetes๊ฐ ํฌ๋๋ฅผ ์คํํ๊ธฐ์ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ง ์คํํ๊ธฐ์๋ ์ถฉ๋ถํ์ง ์์ ๋
ธ๋์์ ํฌ๋๋ฅผ ์์ฝํ์ง ์์ต๋๋ค. ๋ช
์ฌํ์ธ์: Kubernetes Pod ๊ณํ์ ์ค์ง ๊ณ ๋ ค ์ฌํญ๋ง ๊ณ ๋ คํฉ๋๋ค requests.memory
๊ณผ limits.memory
๊ณ ๋ คํ์ง ์์ต๋๋ค.
CPU: ์์ฒญ ๋ฐ ์ ํ
containers:
...
resources:
requests:
cpu: 1
limits:
cpu: "1200m"
CPU๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์กฐ๊ธ ๋ ๋ณต์กํด์ง๋๋ค. Kubernetes์ Docker์ ๊ด๊ณ ๊ทธ๋ฆผ์ผ๋ก ๋์๊ฐ๋ฉด ๋ค์์ ์ ์ ์์ต๋๋ค. request.cpu
์ผ์น --cpu-shares
๋ฐ๋ฉด์ limit.cpu
๊ตญ๊ธฐ์ ์ผ์นํ๋ค cpus
๋์ปค์์.
Kubernetes๊ฐ ์์ฒญํ๋ CPU์๋ CPU ์ฃผ๊ธฐ์ ๋น์จ์ธ 1024๋ฅผ ๊ณฑํฉ๋๋ค. 1๊ฐ์ ์ ์ฒด ์ฝ์ด๋ฅผ ์์ฒญํ๋ ค๋ฉด ๋ค์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. cpu: 1
์์ ํ์๋ ๋๋ก.
์ ์ฒด ์ปค๋(๋น์จ = 1024)์ ์์ฒญํ๋ค๊ณ ํด์ ์ปจํ ์ด๋๊ฐ ์ด๋ฅผ ์์ ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ํธ์คํธ ๋จธ์ ์ ์ฝ์ด๊ฐ ํ๋๋ง ์๊ณ ๋ ์ด์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ปจํ ์ด๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ CPU๋ฅผ ์๋ก ๊ณต์ ํด์ผ ํฉ๋๋ค. ์ด๋ป๊ฒ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋์? ์ฌ์ง์ ๋ณด์.
CPU ์์ฒญ - ๋จ์ผ ์ฝ์ด ์์คํ
์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๋จ์ผ ์ฝ์ด ํธ์คํธ ์์คํ ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ง(Kubernetes)๊ฐ ํ์ด(CPU)๋ฅผ ๊ตฌ์ ์์ด๋ค(์ปจํ ์ด๋)์๊ฒ ๋๋ ์ฃผ๊ณ ์ถ์ด ํฉ๋๋ค. ์ธ ๋ช ์ ์ด๋ฆฐ์ด๋ ํ์ด ์ ์ฒด๋ฅผ ์ํ๊ณ (๋น์จ = 1024), ๋ค๋ฅธ ์ด๋ฆฐ์ด๋ ํ์ด ์ ๋ฐ์ ์ํฉ๋๋ค(512). ์๋ง๋ ๊ณต์ ํ๊ธธ ์ํ์ ์ ๊ฐ๋จํ ๊ณ์ฐ์ ํ์ญ๋๋ค.
# ะกะบะพะปัะบะพ ะฟะธัะพะณะพะฒ ั
ะพััั ะดะตัะธ?
# 3 ัะตะฑะตะฝะบะฐ ั
ะพััั ะฟะพ ัะตะปะพะผั ะฟะธัะพะณั ะธ ะตัะต ะพะดะธะฝ ั
ะพัะตั ะฟะพะปะพะฒะธะฝั ะฟะธัะพะณะฐ
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# ะััะฐะถะตะฝะธะต ะฟะพะปััะฐะตััั ัะฐะบ:
3 (ัะตะฑะตะฝะบะฐ/ะบะพะฝัะตะนะฝะตัะฐ) * 1 (ัะตะปัะน ะฟะธัะพะณ/ะฟะพะปะฝะพะต ัะดัะพ) + 1 (ัะตะฑะตะฝะพะบ/ะบะพะฝัะตะนะฝะตั) * 0.5 (ะฟะพะปะพะฒะธะฝะฐ ะฟะธัะพะณะฐ/ะฟะพะปะพะฒะธะฝะฐ ัะดัะฐ)
# ะกะบะพะปัะบะพ ะฟะธัะพะณะพะฒ ะธัะฟะตัะตะฝะพ?
availableCakesNumber = 1
# ะกะบะพะปัะบะพ ะฟะธัะพะณะฐ (ะผะฐะบัะธะผะฐะปัะฝะพ) ะดะตัะธ ัะตะฐะปัะฝะพ ะผะพะณัั ะฟะพะปััะธัั?
newMaxRequest = 1 / 3.5 =~ 28%
๊ณ์ฐ์ ๋ฐ๋ฅด๋ฉด ์ธ ๋ช ์ ์ด๋ฆฐ์ด๋ ์ฝ์ด ์ ์ฒด๊ฐ ์๋ ์ฝ์ด์ 28%๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๋ค ๋ฒ์งธ ์์์ ์ ์ฒด ์ปค๋์ ์ ๋ฐ์ด ์๋ 14%๋ฅผ ๋ฐ์ต๋๋ค. ํ์ง๋ง ๋ฉํฐ์ฝ์ด ์์คํ ์ด ์๋ค๋ฉด ์ํฉ์ ๋ฌ๋ผ์ง๋๋ค.
CPU ์์ฒญ - ๋ฉํฐ ์ฝ์ด(4) ์์คํ
์ ์ด๋ฏธ์ง์์ ์ธ ๋ช ์ ์ด๋ฆฐ์ด๋ ํ์ด ์ ์ฒด๋ฅผ ์ํ๊ณ ํ ๋ช ์ ์ ๋ฐ์ ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์๋ง๊ฐ ํ์ด ๋ค ๊ฐ๋ฅผ ๊ตฌ์ ์ผ๋, ์๋ง์ ์์ด๋ค์ ๊ฐ์ ์ํ๋ ๋งํผ ํ์ด๋ฅผ ๋จน์ ๊ฒ์ด๋ค. ๋ฉํฐ ์ฝ์ด ์์คํ ์์๋ ํ๋ก์ธ์ ๋ฆฌ์์ค๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํ๋ก์ธ์ ์ฝ์ด์ ๋ถ์ฐ๋ฉ๋๋ค. ์ปจํ ์ด๋๊ฐ ์ ์ฒด CPU ์ฝ์ด 100๊ฐ ๋ฏธ๋ง์ผ๋ก ์ ํ๋๋ ๊ฒฝ์ฐ์๋ ์ฌ์ ํ XNUMX%๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ ๊ณ์ฐ์ CPU๊ฐ ์ปจํ
์ด๋ ๊ฐ์ ์ด๋ป๊ฒ ๋ถ์ฐ๋๋์ง ์ดํดํ๊ธฐ ์ํด ๋จ์ํ๋์์ต๋๋ค. ๋ฌผ๋ก ์ปจํ
์ด๋ ์์ฒด ์ธ์๋ CPU ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์์ต๋๋ค. ํ ์ปจํ
์ด๋์ ํ๋ก์ธ์ค๊ฐ ์ ํด ์ํ์ด๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. CPU: "200m"
์ผ์น CPU: 0,2
, ์ด๋ ์ฝ์ด 20๊ฐ์ ์ฝ XNUMX%๋ฅผ ์๋ฏธํฉ๋๋ค.
์ด์ ์ด์ผ๊ธฐํ์ limit.cpu
. Kubernetes๊ฐ ์ ํํ๋ CPU์ 100์ ๊ณฑํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์ปจํ
์ด๋๊ฐ 100ฮผs๋ง๋ค ์ฌ์ฉํ ์ ์๋ ์๊ฐ์
๋๋ค(cpu-period
).
limit.cpu
Docker ํ๋๊ทธ์ ์ผ์นํฉ๋๋ค. --cpus
. ์ด๊ฒ์ ์ค๋๋ ๊ฒ์ ์๋ก์ด ์กฐํฉ์
๋๋ค. --cpu-period
ะธ --cpu-quota
. ์ด๋ฅผ ์ค์ ํ๋ฉด ์ ํ์ด ์์๋๊ธฐ ์ ์ ์ปจํ
์ด๋๊ฐ ์ต๋๋ก ์ฌ์ฉํ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ CPU ๋ฆฌ์์ค ์๋ฅผ ๋ํ๋
๋๋ค.
- CPU๋ฅผ - ์กฐํฉ
cpu-period
ะธcpu-quota. cpus = 1.5
์ค์ ๊ณผ ๋์ผcpu-period = 100000
ะธcpu-quota = 150000
; - CPU ๊ธฐ๊ฐ - ๊ธฐ๊ฐ
CPU CFS ์ค์ผ์ค๋ฌ , ๊ธฐ๋ณธ๊ฐ์ 100๋ง์ดํฌ๋ก์ด์ ๋๋ค. - CPU ํ ๋น๋ - ๋ด๋ถ์ ๋ง์ดํฌ๋ก์ด ์
cpu-period
, ์ด๋ ์ปจํ ์ด๋์ ์ํด ์ ํ๋ฉ๋๋ค.
์์ฒญํ CPU๊ฐ ๋ถ์กฑํ๊ฒ ์ค์น๋๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ปจํ ์ด๋์ ์ค์น๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ด ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ CPU๋ฅผ ํ์น๊ฒ ๋ฉ๋๋ค.
CPU ์ ํ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
CPU ๋ฆฌ์์ค๋ ์กฐ์ ๊ฐ๋ฅํ๋ฏ๋ก ์กฐ์ ๊ธฐ๋ฅ์ด ์ผ์ง๋๋ค.
CPU ์์ฒญ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?
๋ฉ๋ชจ๋ฆฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฒญ ๊ฐ์ ์ ํ๊ณผ ๊ฐ์ต๋๋ค.
CPU ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ปจํ ์ด๋๋ ํ์ํ ๋งํผ์ CPU๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ CPU ์ ์ฑ (LimitRange)์ด ๋ค์์คํ์ด์ค์ ์ ์๋ ๊ฒฝ์ฐ ์ด ์ ํ์ ์ปจํ ์ด๋์๋ ์ฌ์ฉ๋ฉ๋๋ค.
์์ฒญ์ด๋ CPU ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?
๋ฉ๋ชจ๋ฆฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ ์ต์ ์ ์๋๋ฆฌ์ค์ ๋๋ค. ์ค์ผ์ค๋ฌ๋ ์ปจํ ์ด๋์ ํ์ํ ๋ฆฌ์์ค ์๋ฅผ ์์ง ๋ชปํ๋ฉฐ ์ด๋ก ์ธํด ๋ ธ๋์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ ์ ํ(LimitRange)์ ์ค์ ํด์ผ ํฉ๋๋ค.
๊ธฐ์ตํ์ธ์: ๋
ธ๋๊ฐ ์ ๊ณตํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ CPU๋ฅผ ์์ฒญํ๋ฉด ํฌ๋๊ฐ ์์ฝ๋์ง ์์ต๋๋ค. Requests.cpu
- ์ต์๊ฐ์ ์๋์ง๋ง Pod๋ฅผ ์์ํ๊ณ ์ค๋ฅ ์์ด ์๋ํ๊ธฐ์ ์ถฉ๋ถํ ๊ฐ์
๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ณต์กํ ๊ณ์ฐ์ ์ํํ์ง ์๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ค์นํ๋ ๊ฒ์
๋๋ค. request.cpu <= 1
ํ์ํ ๋งํผ ๋ณต์ ๋ณธ์ ์คํํฉ๋๋ค.
์์ฒญ๋ ๋ฆฌ์์ค์ ์ด์์ ์ธ ์ ๋๋ ๋ฆฌ์์ค ์ ํ
์ฐ๋ฆฌ๋ ์ปดํจํ ์์์ ํ๊ณ์ ๋ํด ๋ฐฐ์ ์ต๋๋ค. ์ด์ ๋ค์ ์ง๋ฌธ์ ๋๋ตํ ์๊ฐ์ ๋๋ค. โ๋ด ํฌ๋๊ฐ ๋ฌธ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ค๋ฉด ์ผ๋ง๋ ๋ง์ ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๊น? ์ด์์ ์ธ ๊ธ์ก์ ์ผ๋ง์ ๋๊น?
๋ถํํ๊ฒ๋ ์ด๋ฌํ ์ง๋ฌธ์ ๋ํ ๋ช ํํ ๋ต์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ผ๋ง๋ ๋ง์ CPU๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ์ CPU๋ฅผ ์ ๊ณตํ ๋ค์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒ์ ๋๋ค.
์ฑ๋ฅ ํ ์คํธ ์ธ์๋ ์ผ์ฃผ์ผ ๋์ ๋ชจ๋ํฐ๋ง์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๊ทธ๋ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฒญํ ๊ฒ๋ณด๋ค ์ ์ ๋ฆฌ์์ค๋ฅผ ์๋นํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ํ๋๋ฉด ์์ฒญ๋ CPU ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ค์ผ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ด๊ฒ์ ์ฐธ์กฐํ์ญ์์ค
๊ฒฐ๋ก
๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ ์ ํํ๋ฉด Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ ์ ์ํ๋ก ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ ์ ํ ์ ํ ๊ตฌ์ฑ์ ๋น์ฉ์ ์ต์ํํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ํญ์ ์คํ ์ํ๋ก ์ ์งํฉ๋๋ค.
๊ฐ๋จํ ๋งํด, ๋ช ์ฌํด์ผ ํ ๋ช ๊ฐ์ง ์ฌํญ์ด ์์ต๋๋ค.
- ์์ฒญ๋ ๋ฆฌ์์ค๋ ์์ ์(Kubernetes๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ ๊ณํ์ธ ๊ฒฝ์ฐ) ๊ณ ๋ ค๋๋ ๊ตฌ์ฑ์ ๋๋ค. ๋์กฐ์ ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฏธ ๋ ธ๋์์ ์คํ ์ค์ธ ๋ฐํ์์๋ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๋นํด CPU๋ ๊ท์ ๋ ๋ฆฌ์์ค์ ๋๋ค. CPU๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด ํฌ๋๊ฐ ์ข ๋ฃ๋์ง ์๊ณ ์กฐ์ ๋ฉ์ปค๋์ฆ์ด ์ผ์ง๋๋ค.
- ์์ฒญํ ๋ฆฌ์์ค์ ๋ฆฌ์์ค ์ ํ์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ด ์๋๋๋ค! ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฌธ์ ์์ด ์คํ๋ ์ ์์ต๋๋ค.
- ์ข์ ๋ฐฉ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ๊ณผ ๋์ผํ๊ฒ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
- ์๊ฒ ์ต๋๋ค. ์ค์น๋ฅผ ์์ฒญํ์ต๋๋ค.
CPU <=1
, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์กํ ๊ณ์ฐ์ ์ํํ์ง ์๋ ๊ฒฝ์ฐ. - ๋ ธ๋์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉด ํฌ๋๊ฐ ํด๋น ๋ ธ๋์ ์์ฝ๋์ง ์์ต๋๋ค.
- ์์ฒญ๋ ๋ฆฌ์์ค์ ์ ํํ ์/๋ฆฌ์์ค ์ ํ์ ํ์ธํ๋ ค๋ฉด ๋ถํ ํ ์คํธ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉํ์ญ์์ค.
์ด ๊ธ์ด ์์ ์ ํ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ด ์ง์์ ๋น์ ์ ์ ๋ฌด์ ์ ์ฉํ ์ ์์ ๊ฒ์ ๋๋ค.
ํ์ด์ ๋น๋๋ค!
๊ทธ ๋ฐ์ ์ฝ์ ๋ด์ฉ:
SRE ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ: ๋ค์์คํ์ด์ค ๋ฐ ๋ฉํธ๋ฆญ ๊ตฌ์กฐ .Kubernetes๋ฅผ ์ํ 90๊ฐ ์ด์์ ์ ์ฉํ ๋๊ตฌ: ๋ฐฐํฌ, ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋ง, ๋ณด์ ๋ฑ .Telegram์ Kubernetes ์ฃผ๋ณ ์ฑ๋ .
์ถ์ฒ : habr.com