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