ํด๋น ๋ฌธ์์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ : v1.30
Kubernetes v1.30 ๋ฌธ์๋ ๋ ์ด์ ์ ๊ทน์ ์ผ๋ก ๊ด๋ฆฌ๋์ง ์์. ํ์ฌ ๋ณด๊ณ ์๋ ๋ฌธ์๋ ์ ์ ์ค๋ ์ท์. ์ต์ ๋ฌธ์๋ฅผ ์ํด์๋, ๋ค์์ ์ฐธ๊ณ . ์ต์ ๋ฒ์ .
๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ CPU ์์ฒญ๋๊ณผ ์ํ ๊ตฌ์ฑ
์ด ํ์ด์ง๋ ๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ CPU ์์ฒญ๋(request) ๋ฐ ์ํ(limit)์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ฌ๋ฌ ๋ค์์คํ์ด์ค๋ก ๋๋ ์ ์๋ค. ๊ธฐ๋ณธ CPU ์ํ์ด ์ค์ ๋์ด ์๋ ๋ค์์คํ์ด์ค์ ํ๋๋ฅผ ์์ฑํ๋๋ฐ, ํด๋น ํ๋์ ๋ชจ๋ ์ปจํ ์ด๋์ CPU ์ํ์ด ๋ช ์๋์ด ์์ง ์๋ค๋ฉด, ์ปจํธ๋กค ํ๋ ์ธ์ด ํด๋น ์ปจํ ์ด๋์ ๊ธฐ๋ณธ CPU ์ํ์ ํ ๋นํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ธฐ๋ณธ CPU ์ฌ์ฉ๋์ ํ ๋นํ๋๋ฐ, ์ด๋ ์ด ํ์ด์ง์ ์ดํ ๋ถ๋ถ์์ ์ค๋ช ๋ ํน์ ์กฐ๊ฑด ํ์์๋ง ์ํ๋๋ค.
์์ํ๊ธฐ ์ ์
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ํ์ํ๊ณ , kubectl ์ปค๋งจ๋-๋ผ์ธ ํด์ด ํด๋ฌ์คํฐ์ ํต์ ํ ์ ์๋๋ก ์ค์ ๋์ด ์์ด์ผ ํ๋ค. ์ด ํํ ๋ฆฌ์ผ์ ์ปจํธ๋กค ํ๋ ์ธ ํธ์คํธ๊ฐ ์๋ ๋ ธ๋๊ฐ ์ ์ด๋ 2๊ฐ ํฌํจ๋ ํด๋ฌ์คํฐ์์ ์คํํ๋ ๊ฒ์ ์ถ์ฒํ๋ค. ๋ง์ฝ, ์์ง ํด๋ฌ์คํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ฉด, minikube๋ฅผ ์ฌ์ฉํด์ ์์ฑํ๊ฑฐ๋ ๋ค์ ์ฟ ๋ฒ๋คํฐ์ค ํ๋ ์ด๊ทธ๋ผ์ด๋ ์ค ํ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํด๋ฌ์คํฐ์ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ ์ ์๋ ๊ถํ์ด ์์ด์ผ ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค์์ โ1.0 CPUโ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์ต์ํ์ง ์๋ค๋ฉด, CPU์ ์๋ฏธ๋ฅผ ์ฐธ์กฐํ๋ค.
๋ค์์คํ์ด์ค ์์ฑ
์ด ์ฐ์ต์์ ์์ฑํ ๋ฆฌ์์ค๊ฐ ํด๋ฌ์คํฐ์ ๋๋จธ์ง์ ๊ฒฉ๋ฆฌ๋๋๋ก ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ๋ค.
kubectl create namespace default-cpu-example
๋ฆฌ๋ฐ๋ ์ธ์ง(LimitRange)์ ํ๋ ์์ฑ
๋ค์์ ์์ ๋ฆฌ๋ฐ๋ ์ธ์ง์ ๋ํ ๋งค๋ํ์คํธ์ด๋ค. ์ด ๋งค๋ํ์คํธ๋ ๊ธฐ๋ณธ CPU ์์ฒญ๋ ๋ฐ ๊ธฐ๋ณธ CPU ์ํ์ ์ง์ ํ๋ค.
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default:
cpu: 1
defaultRequest:
cpu: 0.5
type: Container
default-cpu-example ๋ค์์คํ์ด์ค์ ๋ฆฌ๋ฐ๋ ์ธ์ง๋ฅผ ์์ฑํ๋ค.
kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults.yaml --namespace=default-cpu-example
์ด์ ํ๋๋ฅผ default-cpu-example
๋ค์์คํ์ด์ค์ ์์ฑํ๊ณ ,
ํด๋น ํ๋์ ์ด๋ค ์ปจํ
์ด๋๋ ์์ฒด CPU ์์ฒญ๋(request)๊ณผ ์ํ(limit)์ ๋ช
์ํ์ง ์์ผ๋ฉด,
์ปจํธ๋กค ํ๋ ์ธ์ด ํด๋น ์ปจํ
์ด๋์ CPU ์์ฒญ๋์ ๊ธฐ๋ณธ๊ฐ(0.5)๊ณผ
์ํ์ ๊ธฐ๋ณธ๊ฐ(1)์ ์ง์ ํ๋ค.
๋ค์์ ์ปจํ ์ด๋๊ฐ ํ๋์ธ ํ๋์ ๋งค๋ํ์คํธ์ด๋ค. ํด๋น ์ปจํ ์ด๋๋ CPU ์์ฒญ๋๊ณผ ์ํ์ ์ง์ ํ์ง ์๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: default-cpu-demo
spec:
containers:
- name: default-cpu-demo-ctr
image: nginx
ํ๋๋ฅผ ์์ฑํ๋ค.
kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod.yaml --namespace=default-cpu-example
ํ๋์ ์ฌ์์ ํ์ธํ๋ค.
kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example
์ถ๋ ฅ์ ๋ณด๋ฉด ํ๋ ๋ด ์ ์ผํ ์ปจํ
์ด๋์ CPU ์์ฒญ๋์ด 500m cpu
("500 ๋ฐ๋ฆฌcpu"๋ก ์ฝ์ ์ ์์)์ด๊ณ ,
CPU ์ํ์ด 1 cpu
์์ ์ ์ ์๋ค.
์ด๊ฒ์ ๋ฆฌ๋ฐ๋ ์ธ์ง์ ์ํด ์ง์ ๋ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
containers:
- image: nginx
imagePullPolicy: Always
name: default-cpu-demo-ctr
resources:
limits:
cpu: "1"
requests:
cpu: 500m
์ปจํ ์ด๋ ์ํ์ ์ง์ ํ๊ณ , ์์ฒญ๋์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋?
๋ค์์ ์ปจํ ์ด๋๊ฐ ํ๋์ธ ํ๋์ ๋งค๋ํ์คํธ์ด๋ค. ํด๋น ์ปจํ ์ด๋๋ CPU ์ํ์ ์ง์ ํ์ง๋ง, ์์ฒญ๋์ ์ง์ ํ์ง ์๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: default-cpu-demo-2
spec:
containers:
- name: default-cpu-demo-2-ctr
image: nginx
resources:
limits:
cpu: "1"
ํ๋๋ฅผ ์์ฑํ๋ค.
kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod-2.yaml --namespace=default-cpu-example
์์ฑํ ํ๋์ ๋ช ์ธ๋ฅผ ํ์ธํ๋ค.
kubectl get pod default-cpu-demo-2 --output=yaml --namespace=default-cpu-example
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์ปจํ
์ด๋์ CPU ์์ฒญ๋์ด CPU ์ํ๊ณผ ์ผ์นํ๋๋ก ์ค์ ๋์์์ ๋ณด์ฌ์ค๋ค.
์ฐธ๊ณ ๋ก ์ปจํ
์ด๋์๋ CPU ์์ฒญ๋์ ๊ธฐ๋ณธ๊ฐ์ธ 0.5 cpu
๊ฐ ํ ๋น๋์ง ์์๋ค.
resources:
limits:
cpu: "1"
requests:
cpu: "1"
์ปจํ ์ด๋์ ์์ฒญ๋์ ์ง์ ํ๊ณ , ์ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋?
๋ค์์ ์ปจํ ์ด๋๊ฐ ํ๋์ธ ํ๋์ ์์ ๋งค๋ํ์คํธ์ด๋ค. ํด๋น ์ปจํ ์ด๋๋ CPU ์์ฒญ๋์ ์ง์ ํ์ง๋ง, ์ํ์ ์ง์ ํ์ง ์๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: default-cpu-demo-3
spec:
containers:
- name: default-cpu-demo-3-ctr
image: nginx
resources:
requests:
cpu: "0.75"
ํ๋๋ฅผ ์์ฑํ๋ค.
kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod-3.yaml --namespace=default-cpu-example
์์ฑํ ํ๋์ ๋ช ์ธ๋ฅผ ํ์ธํ๋ค.
kubectl get pod default-cpu-demo-3 --output=yaml --namespace=default-cpu-example
์ถ๋ ฅ์ ๋ณด๋ฉด ํ๋ ์์ฑ ์ ๋ช
์ํ ๊ฐ๋๋ก
์ปจํ
์ด๋์ CPU ์์ฒญ๋์ด ์ค์ ๋ ๊ฒ์ ์ ์ ์๋ค(๋ค์ ๋งํด, ๋งค๋ํ์คํธ์ ์ผ์นํ๋ค).
๊ทธ๋ฌ๋, ํด๋น ์ปจํ
์ด๋์ CPU ์ํ์ 1 cpu
๋ก ์ค์ ๋๋ฉฐ,
์ด๋ ๋ค์์คํ์ด์ค์ CPU ์ํ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
resources:
limits:
cpu: "1"
requests:
cpu: 750m
CPU ์ํ ๋ฐ ์์ฒญ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋ํ ๋๊ธฐ
๋ค์์คํ์ด์ค์ ๋ฆฌ์์ค ์ฟผํฐ๊ฐ ์ค์ ๋์ด ์๋ ๊ฒฝ์ฐ, CPU ์ํ์ ๋ํด ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค. ๋ค์์ CPU ๋ฆฌ์์ค ์ฟผํฐ๊ฐ ๋ค์์คํ์ด์ค์ ์ ์ฉํ๋ ๋ ๊ฐ์ง ์ ํ ์ฌํญ์ด๋ค.
- ๋ค์์คํ์ด์ค์์ ์คํ๋๋ ๋ชจ๋ ํ๋์ ๋ํด, ๋ชจ๋ ์ปจํ ์ด๋์ CPU ์ํ์ด ์์ด์ผ ํ๋ค.
- CPU ์ํ์ ํด๋น ํ๋๊ฐ ์ค์ผ์ค๋ง๋ ๋ ธ๋์ ๋ฆฌ์์ค ์์ฝ์ ์ ์ฉํ๋ค. ํด๋น ๋ค์์คํ์ด์ค์ ๋ชจ๋ ํ๋์ ๋ํด ์์ฝ๋ CPU ์ด๋์ด ์ง์ ๋ ์ํ์ ์ด๊ณผํ์ง ์์์ผ ํ๋ค.
๋ฆฌ๋ฐ๋ ์ธ์ง๋ฅผ ์ถ๊ฐํ ๋์๋ ๋ค์์ ๊ณ ๋ คํด์ผ ํ๋ค.
์ปจํ ์ด๋๋ฅผ ๊ฐ๊ณ ์๋ ํด๋น ๋ค์์คํ์ด์ค์ ํ๋๊ฐ ์์ฒด CPU ์ํ์ ์ง์ ํ์ง ์์๋ค๋ฉด, ์ปจํธ๋กค ํ๋ ์ธ์ด ํด๋น ์ปจํ ์ด๋์ CPU ์ํ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ๋ฉฐ, ํด๋น ํ๋๋ CPU ๋ฆฌ์์ค์ฟผํฐ๊ฐ ์ ์ฉ๋ ๋ค์์คํ์ด์ค์์ ์คํ๋๋๋ก ํ์ฉ๋ ์ ์๋ค.
์ ๋ฆฌ
๋ค์์คํ์ด์ค๋ฅผ ์ญ์ ํ๋ค.
kubectl delete namespace default-cpu-example
๋ค์ ๋ด์ฉ
ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ฅผ ์ํ ๋ฌธ์
-
๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ๋๊ณผ ์ํ ๊ตฌ์ฑ
-
๋ค์์คํ์ด์ค์ ๋ํ ๋ฉ๋ชจ๋ฆฌ์ ์ต์ ๋ฐ ์ต๋ ์ ์ฝ ์กฐ๊ฑด ๊ตฌ์ฑ
-
๋ค์์คํ์ด์ค์ ๋ํ CPU์ ์ต์ ๋ฐ ์ต๋ ์ ์ฝ ์กฐ๊ฑด ๊ตฌ์ฑ
-
๋ค์์คํ์ด์ค์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ์ฟผํฐ ๊ตฌ์ฑ