๋ชจ๋ ์๋ ! ์ ์ด๋ฆ์ Oleg Sidorenkov์ด๊ณ DomClick์์ ์ธํ๋ผ ํ ๋ฆฌ๋๋ก ์ผํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ๋งค์ฉ ํ๋ธ๋ฅผ XNUMX๋ ์ด์ ์ฌ์ฉํด ์์ผ๋ฉฐ ์ด ๊ธฐ๊ฐ ๋์ ๋ค์ํ ํฅ๋ฏธ๋ก์ด ์๊ฐ์ ๊ฒฝํํ์ต๋๋ค. ์ค๋ ์ ๋ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ํด๋ฌ์คํฐ์ ๋ฐ๋๋ผ ์ฟ ๋ฒ๋คํฐ์ค์์ ํจ์ฌ ๋ ๋ง์ ์ฑ๋ฅ์ ๋์ด๋ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ค๋น ๊พธ์คํ ์ด๋!
์ฌ๋ฌ๋ถ ๋ชจ๋ Kubernetes๊ฐ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํ ํ์ฅ ๊ฐ๋ฅํ ์คํ ์์ค ์์คํ ์ด๋ผ๋ ๊ฒ์ ์ ์๊ณ ๊ณ์ค ๊ฒ์ ๋๋ค. ๋๋ ์๋ฒ ํ๊ฒฝ์์ ๋ง์ดํฌ๋ก์๋น์ค์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ์ฌ ๋ง์ ์ ๋ถ๋ฆฌ๋ 5๊ฐ์ ๋ฐ์ด๋๋ฆฌ. ๋ํ ์ด๊ฒ์ ๋ค์ํ ์์ ์ ๋ํ ์ต๋ ์ฌ์ฉ์ ์ ์๋ฅผ ์ํด ๋ ๊ณ ์์ฑ์์ฒ๋ผ ์กฐ๋ฆฝํ ์ ์๋ ์๋นํ ์ ์ฐํ ๋๊ตฌ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฅ์์ ํ์ค์ ๋ฃ๋ ๊ฒ์ฒ๋ผ ์๋ฒ๋ฅผ ํด๋ฌ์คํฐ์ ๋์ง๊ณ ์ฌํ์ ๋ชจ๋ฆ ๋๋ค. ๊ทธ๋ฌ๋ ํ๊ฒฝ์ ์๊ฐํ๋ค๋ฉด "์ด๋ป๊ฒ ์คํ ๋ธ์ ๋ถ์ ํผ์ฐ๊ณ ์ฒ์ ํํํ ์ ์์ต๋๊น? "๋ผ๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค. ์ฆ, ์ธํ๋ผ๋ฅผ ๊ฐ์ ํ๊ณ ๋น์ฉ์ ์ ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
1. ํ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฆฌ์์ค ์ถ์
๊ฐ์ฅ ์ง๋ถํ์ง๋ง ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋๋ ์์ฒญ/์ ํ์ ๋์ ํ๋ ๊ฒ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์์คํ์ด์ค๋ณ๋ก, ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ๋ฐ ํ๋ณ๋ก ๊ตฌ๋ถํฉ๋๋ค. ํ๋ก์ธ์ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ, ์์ ์คํ ๋ฆฌ์ง ์๋น์ ๋ํ ๊ฐ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ํ์ญ์์ค.
resources:
requests:
memory: 2Gi
cpu: 250m
limits:
memory: 4Gi
cpu: 500m
๊ฒฝํ์ ์ฐ๋ฆฌ๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค. ํ๋์์ ์์ฒญ์ ๋ ๋ฐฐ ์ด์ ๋ถํ๋ฆด ๊ฐ์น๊ฐ ์์ต๋๋ค. ํด๋ฌ์คํฐ ํฌ๊ธฐ๋ ์์ฒญ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์์ค ์ฐจ์ด(์: 5-10๋ฐฐ)๋ก ์ค์ ํ ๊ฒฝ์ฐ ๋ ธ๋๊ฐ ํฌ๋๋ก ์ฑ์์ง๊ณ ๊ฐ์๊ธฐ ๋ก๋๊ฐ ์์ ๋ ๋ ๋ ธ๋์ ์ด๋ค ์ผ์ด ๋ฐ์ํ ์ง ์์ํด ๋ณด์ธ์. ์ข์ ๊ฑด ์์ด. ์ต์ํ ์ค๋กํ๋งํ๊ณ ์ต๋๋ก ์์ ์์๊ฒ ์๋ณ ์ธ์ฌ๋ฅผ ํ๊ณ ํ(Pod)์ด ์ด๋ํ๊ธฐ ์์ํ ํ ๋๋จธ์ง ๋ ธ๋์์ ์ฃผ๊ธฐ์ ๋ก๋๋ฅผ ์ป์ต๋๋ค.
๊ฒ๋ค๊ฐ ๋์์ ๋ฐ์ limitranges
์ต์, ์ต๋ ๋ฐ ๊ธฐ๋ณธ๊ฐ๊ณผ ๊ฐ์ด ์์ํ ๋ ์ปจํ
์ด๋์ ๋ฆฌ์์ค ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
โ ~ kubectl describe limitranges --namespace ops
Name: limit-range
Namespace: ops
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
---- -------- --- --- --------------- ------------- -----------------------
Container cpu 50m 10 100m 100m 2
Container ephemeral-storage 12Mi 8Gi 128Mi 4Gi -
Container memory 64Mi 40Gi 128Mi 128Mi 2
ํ๋์ ๋ช ๋ น์ด ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ค์์คํ์ด์ค ๋ฆฌ์์ค๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
โ ~ kubectl describe resourcequotas --namespace ops
Name: resource-quota
Namespace: ops
Resource Used Hard
-------- ---- ----
limits.cpu 77250m 80
limits.memory 124814367488 150Gi
pods 31 45
requests.cpu 53850m 80
requests.memory 75613234944 150Gi
services 26 50
services.loadbalancers 0 0
services.nodeports 0 0
์ค๋ช
์์ ์ ์ ์๋ฏ์ด resourcequotas
, ops ๋ช
๋ น์ด ๋ค๋ฅธ 10 cpu๋ฅผ ์๋นํ๋ ํ(Pod)์ ๋ฐฐ์นํ๋ ค๋ ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๋ ์ด๋ฅผ ํ์ฉํ์ง ์๊ณ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
Error creating: pods "nginx-proxy-9967d8d78-nh4fs" is forbidden: exceeded quota: resource-quota, requested: limits.cpu=5,requests.cpu=5, used: limits.cpu=77250m,requests.cpu=53850m, limited: limits.cpu=10,requests.cpu=10
์ ์ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
2. ์ต์์ ํ์ผ ์ ์ฅ์ ์ ํ
์ฌ๊ธฐ์๋ Kubernetes ์์ ์ ๋ ธ๋์ ์๊ตฌ ๋ณผ๋ฅจ ๋ฐ ๋์คํฌ ํ์ ์์คํ ์ ๋ํ ์ฃผ์ ๋ฅผ ๋ค๋ฃจ๊ณ ์ ํฉ๋๋ค. ์๋ฌด๋ ํ๋ก๋์ ์์ HDD์ "Cube"๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ง๋ง ๋๋ก๋ ์ผ๋ฐ SSD๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ก๊ทธ๊ฐ I/O ์์ ์ผ๋ก ๋์คํฌ๋ฅผ ์ฃฝ์ด๋ ๋ฌธ์ ์ ์ง๋ฉดํ์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ํด๊ฒฐ์ฑ ์ด ๋ง์ง ์์ต๋๋ค.
-
๊ณ ์ฑ๋ฅ SSD๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ NVMe๋ก ์ ํํ์ญ์์ค(์์ฒด ํ๋์จ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ).
-
๋ก๊น ์์ค์ ๋ฎ์ถฅ๋๋ค.
-
๋์คํฌ๋ฅผ ๊ฐ๊ฐํ๋ ํฌ๋์ "์ค๋งํธ" ๋ฐธ๋ฐ์ฑ์ ์ํํฉ๋๋ค(
podAntiAffinity
).
์์ ์คํฌ๋ฆฐ์ท์ access_logs๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ(~12k ๋ก๊ทธ/์ด) ๋์คํฌ๊ฐ ์๋ nginx-ingress-controller์์ ๋ฐ์ํ๋ ์ํฉ์ ๋ณด์ฌ์ค๋๋ค. ๋ฌผ๋ก ์ด๋ฌํ ์ํ๋ ์ด ๋ ธ๋์ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
PV์ ๊ดํด์๋ ์์ฝ๊ฒ๋ ๋ชจ๋ ๊ฒ์ ์๋ํ์ง ์์์ต๋๋ค.
3. ์ต์ ํ๋ ์ด๋ฏธ์ง ๊ตฌ์ถ
Kubernetes๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ค๊ณ ๋ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์๋๋ก ์ปจํ ์ด๋ ์ต์ ํ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
์ต์ ํ๋ ์ด๋ฏธ์ง๊ฐ ๋ค์์ ์๋ฏธํฉ๋๋ค.
-
ํ๋์ ์์ฉ ํ๋ก๊ทธ๋จ๋ง ํฌํจํ๊ฑฐ๋ ํ๋์ ๊ธฐ๋ฅ๋ง ์ํํฉ๋๋ค.
-
์์ ํฌ๊ธฐ, ํฐ ์ด๋ฏธ์ง๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ ์ ์ ์ก๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
-
๋ค์ดํ์ ๋ฐ์ ์ Kubernetes๊ฐ ์กฐ์น๋ฅผ ์ทจํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ํ ๋ฐ ์ค๋น ์๋ํฌ์ธํธ ๋ณด์
-
๊ตฌ์ฑ ์ค๋ฅ์ ๋ ๊ฐํ ์ปจํ ์ด๋ ์นํ์ ์ธ ์ด์ ์ฒด์ (์: Alpine ๋๋ CoreOS)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
ํจ๊ป ์ ๊ณต๋๋ ์์ค๊ฐ ์๋ ์ปดํ์ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ๋ฐฐํฌํ ์ ์๋๋ก ๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฆ์์์ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ๊ณ ์ต์ ํํ ์ ์๋ ๋ง์ ๋๊ตฌ์ ์๋น์ค๊ฐ ์์ต๋๋ค. ํญ์ ์ต์ ์ํ๋ก ์์ ํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์์ ์ป์ต๋๋ค.
-
์ ์ฒด ํด๋ฌ์คํฐ์ ๋คํธ์ํฌ ๋ถํ ๊ฐ์.
-
์ปจํ ์ด๋ ์์ ์๊ฐ์ด ๊ฐ์ํ์ต๋๋ค.
-
์ ์ฒด Docker ๋ ์ง์คํธ๋ฆฌ์ ๋ ์์ ํฌ๊ธฐ.
4. DNS ์บ์ ์ฌ์ฉ
๋์ ๋ถํ์ ๋ํด ์ด์ผ๊ธฐํ๋ฉด ํด๋ฌ์คํฐ์ DNS ์์คํ
์ ์กฐ์ ํ์ง ์์ผ๋ฉด ์ถ์ด ๋งค์ฐ ํํธ ์์ต๋๋ค. ์๋ ์์ ์ Kubernetes ๊ฐ๋ฐ์๋ kube-dns ์๋ฃจ์
์ ์ง์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋๋ผ์์๋ ๊ตฌํ๋์์ง๋ง์ด ์ํํธ์จ์ด๋ ํน๋ณํ ์กฐ์ ๋์ง ์์๊ณ ํ์ํ ์ฑ๋ฅ์ ์ ๊ณตํ์ง ๋ชปํ์ง๋ง ์์
์ ๊ฐ๋จ ํด ๋ณด์
๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฐ๋ฆฌ๊ฐ ์ ํํ๊ณ ์ฌํ์ ์์ง ๋ชปํ๋ coredns๊ฐ ๋ํ ๋ฌ์ผ๋ฉฐ ๋์ค์ K8s์ ๊ธฐ๋ณธ DNS ์๋น์ค๊ฐ๋์์ต๋๋ค. ์ด๋ ์๊ฐ DNS ์์คํ
๊น์ง 40๋ง rps๊น์ง ์ฑ์ฅํ๋๋ฐ ์ด ์๋ฃจ์
๋ ๋ง๋ง์น ์์๋ค. ๊ทธ๋ฐ๋ฐ ์ด์ข๊ฒ Nodelocaldns๊ฐ ๋์ค๊ฒ ๋์๊ณ , ์ผ๋ช
๋
ธ๋ ๋ก์ปฌ ์บ์, ์ผ๋ช
์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? Linux ์ปค๋์๋ UDP๋ฅผ ํตํ conntrack NAT๋ฅผ ํตํ ๋ค์ค ์ก์ธ์ค๊ฐ conntrack ํ ์ด๋ธ์ ์ฐ๊ธฐ ์ํ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ด์ด์ง๊ณ NAT๋ฅผ ํตํ ํธ๋ํฝ์ ์ผ๋ถ๊ฐ ์์ค๋๋ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค(์๋น์ค๋ฅผ ํตํ ๊ฐ ์ด๋์ NAT์). Nodelocaldns๋ NAT๋ฅผ ์ ๊ฑฐํ๊ณ ์ ์คํธ๋ฆผ DNS์ ๋ํ TCP ์ฐ๊ฒฐ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ ์คํธ๋ฆผ DNS ์ฟผ๋ฆฌ๋ฅผ ๋ก์ปฌ๋ก ์บ์ฑ(์งง์ 5์ด ๋ค๊ฑฐํฐ๋ธ ์บ์ ํฌํจ)ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
5. ํฌ๋๋ฅผ ์ํ ๋ฐ ์์ง์ผ๋ก ์๋ ํ์ฅ
๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ XNUMX~XNUMX๋ฐฐ์ ๋ถํ ์ฆ๊ฐ์ ๋๋นํ๊ณ ์๋ค๊ณ ์์ ์๊ฒ ๋งํ ์ ์์ต๋๊น? ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฆฌ์์ค๋ฅผ ์ ์ ํ๊ฒ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ์ํฌ๋ก๋๋ฅผ ์ด๊ณผํ์ฌ ๋ช ๊ฐ์ ํฌ๋๋ฅผ ์คํํ๋ ๊ฒ์ ์ค๋ณต๋ ์ ์์ผ๋ฉฐ ์ฐ์์ ์ผ๋ก ์ ์งํ๋ฉด ์๋น์ค์ ๋ํ ํธ๋ํฝ์ด ๊ฐ์๊ธฐ ์ฆ๊ฐํ์ฌ ๋ค์ดํ์์ด ๋ฐ์ํ ์ํ์ด ์์ต๋๋ค. ํฉ๊ธ ํ๊ท ์ ๋ค์๊ณผ ๊ฐ์ ์๋น์ค์ ๊ฐ์ ๊ณฑ์
์ ์ฃผ๋ฌธ์ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
VPA ์ค์ ์ฌ์ฉ๋์ ๋ฐ๋ผ ํ(Pod)์ ์๋ ์ปจํ ์ด๋์ ์์ฒญ/์ ํ์ ์๋์ผ๋ก ๋์ผ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ์ ์ฉํ ์ ์์ต๋๊น? ์ด๋ค ์ด์ ๋ก ์ํ์ผ๋ก ํ์ฅํ ์ ์๋ Pod๊ฐ ์๋ ๊ฒฝ์ฐ(์์ ํ ์ ๋ขฐํ ์ ์์) VPA๋ฅผ ์ ๋ขฐํ์ฌ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ ๊ธฐ๋ฅ์ ๋ฉํธ๋ฆญ ์๋ฒ์ ๊ณผ๊ฑฐ ๋ฐ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ถ์ฒ ์์คํ ์ด๋ฏ๋ก ์์ฒญ/์ ํ์ ์๋์ผ๋ก ๋ณ๊ฒฝํ์ง ์์ผ๋ ค๋ฉด ์ปจํ ์ด๋์ ๋ํ ๊ถ์ฅ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ค์ ์ ์ต์ ํํ์ฌ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ์์.
https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231์์ ๊ฐ์ ธ์จ ์ด๋ฏธ์ง
Kubernetes์ ์ค์ผ์ค๋ฌ๋ ํญ์ ์์ฒญ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด๋ค ๊ฐ์ ์ ๋ ฅํ๋ ์ค์ผ์ค๋ฌ๋ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํฉํ ๋ ธ๋๋ฅผ ์ฐพ์ต๋๋ค. ์ ํ ๊ฐ์ ํ(Pod)์ ์ ํํ๊ฑฐ๋ ์ข ๋ฃํ ์๊ธฐ๋ฅผ ์๊ธฐ ์ํด kublet์ ํ์ํฉ๋๋ค. ์ ์ผํ ์ค์ํ ๋งค๊ฐ๋ณ์๋ ์์ฒญ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ VPA๊ฐ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ง์ผ๋ก ํ์ฅํ ๋๋ง๋ค ์ด๋ค ์์ฒญ์ด ๋์ด์ผ ํ๋์ง ์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํ๊ณ๋ ์ด๋ป๊ฒ ๋ ๊น์? ์ด ๋งค๊ฐ๋ณ์๋ ๋น๋ก์ ์ผ๋ก ์กฐ์ ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ผ๋ฐ์ ์ธ ํฌ๋ ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
resources:
requests:
memory: 250Mi
cpu: 200m
limits:
memory: 500Mi
cpu: 350m
์ถ์ฒ ์์ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ๋๋ก ์คํ๋๊ธฐ ์ํด 300m CPU์ 500Mi๊ฐ ํ์ํ๋ค๊ณ ํ๋จํฉ๋๋ค. ๋ค์ ์ค์ ์ ์ป๊ฒ ๋ฉ๋๋ค.
resources:
requests:
memory: 500Mi
cpu: 300m
limits:
memory: 1000Mi
cpu: 525m
์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ์ด๋ ๋งค๋ํ์คํธ์ ์์ฒญ/์ ํ ๋น์จ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋น๋ก ์กฐ์ ์ ๋๋ค.
-
CPU: 200m โ 300m: ๋น์จ 1:1.75;
-
๋ฉ๋ชจ๋ฆฌ: 250Mi โ 500Mi: 1:2 ๋น์จ.
...์ ๊ดํ์ฌ ๊ณ ์ ๋ ฅ ์ฆํญ๊ธฐ, ์๋ ๋ฉ์ปค๋์ฆ์ด ๋ ํฌ๋ช ํฉ๋๋ค. ํ๋ก์ธ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๋ฉํธ๋ฆญ์ ๋ํ ์๊ณ๊ฐ์ด ์ค์ ๋๋ฉฐ, ๋ชจ๋ ๋ณต์ ๋ณธ์ ํ๊ท ์ด ์๊ณ๊ฐ์ ์ด๊ณผํ๋ฉด ๊ฐ์ด ์๊ณ๊ฐ ์๋๋ก ๋จ์ด์ง๊ฑฐ๋ ์ต๋ ๋ณต์ ๋ณธ ์์ ๋๋ฌํ ๋๊น์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด +1 pod๋ก ํ์ฅ๋ฉ๋๋ค.
https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231์์ ๊ฐ์ ธ์จ ์ด๋ฏธ์ง
CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ฉํธ๋ฆญ ์ธ์๋ ์ฌ์ฉ์ ์ง์ Prometheus ๋ฉํธ๋ฆญ์ ๋ํ ์๊ณ๊ฐ์ ์ค์ ํ๊ณ ์ด๊ฒ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ ์๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฐ์ฅ ์ ํํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ ์์ ํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ง์ ๋ ๋ฉํธ๋ฆญ ์๊ณ๊ฐ ์๋๋ก ์์ ํ๋๋ฉด HPA๋ ์ต์ ๋ณต์ ๋ณธ ์๋ก ๋๋ ๋ก๋๊ฐ ์ง์ ๋ ์๊ณ๊ฐ์ ์ถฉ์กฑํ ๋๊น์ง ํฌ๋๋ฅผ ์ถ์ํ๊ธฐ ์์ํฉ๋๋ค.
6. Node Affinity์ Pod Affinity๋ฅผ ์์ง ๋ง์ธ์
๋ชจ๋ ๋ ธ๋๊ฐ ๋์ผํ ํ๋์จ์ด์์ ์คํ๋๋ ๊ฒ์ ์๋๋ฉฐ ๋ชจ๋ ํฌ๋๊ฐ ์ปดํจํ ์ง์ฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ํ์๋ ์์ต๋๋ค. Kubernetes๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ๋ ธ๋ ๋ฐ ํฌ๋์ ์ ๋ฌธํ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ ธ๋ ์ ํธ๋ ะธ ํฌ๋ ์ ํธ๋.
์ปดํจํ
์ง์ฝ์ ์ธ ์์
์ ์ ํฉํ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ต๋ ํจ์จ์ฑ์ ์ํด ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ ํ ๋
ธ๋์ ๋ฐ์ธ๋ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. nodeSelector
๋
ธ๋ ๋ ์ด๋ธ.
๋ ๊ฐ์ ๋
ธ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. CPUType=HIGHFREQ
๋ง์ ์์ ๋น ๋ฅธ ์ฝ์ด, ๋ค๋ฅธ ํ๋๋ MemoryType=HIGHMEMORY
๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ๋น ๋ฅธ ์ฑ๋ฅ. ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ํฌ๋ ๋ฐฐํฌ๋ฅผ ๋
ธ๋์ ํ ๋นํ๋ ๊ฒ์
๋๋ค. HIGHFREQ
์น์
์ ์ถ๊ฐํ์ฌ spec
๋ค์๊ณผ ๊ฐ์ ์ ํ๊ธฐ:
โฆ
nodeSelector:
CPUType: HIGHFREQ
์ด๋ฅผ ์ํํ๋ ๋ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. nodeAffinity
ํ์ฅ์์ affinity
์น์
spec
. ๋ ๊ฐ์ง ์ต์
์ด ์์ต๋๋ค.
-
requiredDuringSchedulingIgnoredDuringExecution
: ํ๋ ์ค์ (์ค์ผ์ค๋ฌ๋ ํน์ ๋ ธ๋์๋ง ํฌ๋๋ฅผ ๋ฐฐํฌํฉ๋๋ค(๋ค๋ฅธ ๋ ธ๋์๋ ์์)). -
preferredDuringSchedulingIgnoredDuringExecution
: ์ํํธ ์ค์ (์ค์ผ์ค๋ฌ๋ ํน์ ๋ ธ๋์ ๋ฐฐํฌ๋ฅผ ์๋ํ๊ณ ์คํจํ ๊ฒฝ์ฐ ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ธ๋์ ๋ฐฐํฌ๋ฅผ ์๋ํฉ๋๋ค).
์๋ฅผ ๋ค์ด ๋
ธ๋ ๋ ์ด๋ธ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํน์ ๊ตฌ๋ฌธ์ ์ง์ ํ ์ ์์ต๋๋ค. In
, NotIn
, Exists
, DoesNotExist
, Gt
๋๋ Lt
. ๊ทธ๋ฌ๋ ๊ธด ๋ ์ด๋ธ ๋ชฉ๋ก์ ๋ณต์กํ ๋ฐฉ๋ฒ์ ์ค์ํ ์ํฉ์์ ์์ฌ ๊ฒฐ์ ์๋๋ฅผ ๋ฆ์ถ ์ ์์์ ๊ธฐ์ตํ์ญ์์ค. ์ฆ, ์ง๋์น๊ฒ ๋ณต์กํ๊ฒ ๋ง๋ค์ง ๋ง์ญ์์ค.
์์์ ์ธ๊ธํ๋ฏ์ด Kubernetes๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ํฌ๋์ ๋ฐ์ธ๋ฉ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ฆ, ๋์ผํ ๊ฐ์ฉ ์์ญ(ํด๋ผ์ฐ๋ ๊ด๋ จ) ๋๋ ๋ ธ๋์์ ํน์ ํฌ๋๊ฐ ๋ค๋ฅธ ํฌ๋์ ํจ๊ป ์๋ํ๋๋ก ํ ์ ์์ต๋๋ค.
ะ podAffinity
์ฌ๋ฐฑ affinity
์น์
spec
์ ๊ฒฝ์ฐ์ ๋์ผํ ํ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. nodeAffinity
: requiredDuringSchedulingIgnoredDuringExecution
ะธ preferredDuringSchedulingIgnoredDuringExecution
. ์ ์ผํ ์ฐจ์ด์ ์ matchExpressions
ํด๋น ๋ ์ด๋ธ์ด ์๋ ํฌ๋๋ฅผ ์ด๋ฏธ ์คํ ์ค์ธ ๋
ธ๋์ ํฌ๋๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค.
Kubernetes๋ ํ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. podAntiAffinity
๋ฐ๋๋ก ํน์ ํฌ๋๊ฐ ์๋ ๋
ธ๋์ ํฌ๋๋ฅผ ๋ฐ์ธ๋ฉํ์ง ์์ต๋๋ค.
ํํ์ ์ ๋ณด nodeAffinity
๋์ผํ ์กฐ์ธ์ด ์ ๊ณต๋ ์ ์์ต๋๋ค. ๊ท์น์ ๋จ์ํ๊ณ ๋
ผ๋ฆฌ์ ์ผ๋ก ์ ์งํ๊ณ ๋ณต์กํ ๊ท์น ์ธํธ๋ก ํฌ๋ ์ฌ์์ ๊ณผ๋ถํํ์ง ๋ง์ญ์์ค. ํด๋ฌ์คํฐ์ ์กฐ๊ฑด๊ณผ ์ผ์นํ์ง ์๋ ๊ท์น์ ์์ฑํ์ฌ ์ค์ผ์ค๋ฌ์ ์ถ๊ฐ ๋ถํ๋ฅผ ๊ฐํ๊ณ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ์ ํ์ํค๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค.
7. ์ค์ผ ๋ฐ ํ์ฉ
์ค์ผ์ค๋ฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฐฑ ๊ฐ์ ๋ ธ๋์ ์์ฒ ๊ฐ์ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์๋ ๋๊ท๋ชจ ํด๋ฌ์คํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ํน์ ํฌ๋๊ฐ ํน์ ๋ ธ๋์์ ํธ์คํ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
์ค์ผ์ ๋ฉ์ปค๋์ฆ(๊ธ์ง ๊ท์น)์ด ์ด์ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ์๋๋ฆฌ์ค์์ ํน์ ๋
ธ๋๊ฐ ํฌ๋๋ฅผ ์คํํ์ง ๋ชปํ๋๋ก ํ ์ ์์ต๋๋ค. ํน์ ๋
ธ๋์ ์ค์ผ์ ์ ์ฉํ๋ ค๋ฉด ์ต์
์ ์ฌ์ฉํ์ญ์์ค. taint
kubectl์์. ํค์ ๊ฐ์ ์ง์ ํ ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ผ NoSchedule
๋๋ NoExecute
:
$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule
์ค์ผ ๋ฉ์ปค๋์ฆ์ด ์ธ ๊ฐ์ง ์ฃผ์ ํจ๊ณผ๋ฅผ ์ง์ํ๋ค๋ ์ ๋ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. NoSchedule
, NoExecute
ะธ PreferNoSchedule
.
-
NoSchedule
ํฌ๋ ์ฌ์์ ํด๋น ํญ๋ชฉ์ด ์์ ๋๊น์งtolerations
, ๋ ธ๋์ ๋ฐฐํฌํ ์ ์์ต๋๋ค(์ด ์์์๋node10
). -
PreferNoSchedule
- ๋จ์ํ๋ ๋ฒ์ NoSchedule
. ์ด ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๋ ์ผ์นํ๋ ํญ๋ชฉ์ด ์๋ ํฌ๋๋ฅผ ํ ๋นํ์ง ์์ผ๋ ค๊ณ ํฉ๋๋ค.tolerations
๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๋ ์ ํ์ด ์๋๋๋ค. ํด๋ฌ์คํฐ์ ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ํฌ๋๊ฐ ์ด ๋ ธ๋์ ๋ฐฐํฌ๋๊ธฐ ์์ํฉ๋๋ค. -
NoExecute
- ์ด ํจ๊ณผ๋ ์ผ์นํ๋ ํญ๋ชฉ์ด ์๋ ํฌ๋์ ์ฆ๊ฐ์ ์ธ ๋ํผ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.tolerations
.
ํฅ๋ฏธ๋กญ๊ฒ๋ ์ด ๋์์ ํ์ฉ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์คํ ์ทจ์ํ ์ ์์ต๋๋ค. ์ด๋ "๊ธ์ง๋" ๋ ธ๋๊ฐ ์๊ณ ์ธํ๋ผ ์๋น์ค๋ง ๋ฐฐ์นํด์ผ ํ๋ ๊ฒฝ์ฐ์ ํธ๋ฆฌํฉ๋๋ค. ๊ทธ๊ฒ์ํ๋ ๋ฐฉ๋ฒ? ์ ์ ํ ํ์ฉ ์ค์ฐจ๊ฐ ์๋ ํฌ๋๋ง ํ์ฉํฉ๋๋ค.
ํฌ๋ ์ฌ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
spec:
tolerations:
- key: "node-role.kubernetes.io/ingress"
operator: "Equal"
value: "true"
effect: "NoSchedule"
์ด๊ฒ์ ๋ค์์ ์ฌ๋ฐฐํฌํ๋ ๋์ ํฌ๋๊ฐ ์ ํํ ์ด ๋
ธ๋์ ๋๋ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๋
ธ๋ ์ ํธ๋ ๋ฉ์ปค๋์ฆ์ด ์๋๋ฉฐ nodeSelector
. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ฒฐํฉํ๋ฉด ๋งค์ฐ ์ ์ฐํ ์ค์ผ์ค๋ฌ ์ค์ ์ ์ป์ ์ ์์ต๋๋ค.
8. Pod ๋ฐฐํฌ ์ฐ์ ์์ ์ค์
ํฌ๋-๋ ธ๋ ๋ฐ์ธ๋ฉ์ ๊ตฌ์ฑํ๋ค๊ณ ํด์ ๋ชจ๋ ํฌ๋๊ฐ ๋์ผํ ์ฐ์ ์์๋ก ์ฒ๋ฆฌ๋์ด์ผ ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ถ ํฌ๋๋ฅผ ๋ค๋ฅธ ํฌ๋๋ณด๋ค ๋จผ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
Kubernetes๋ Pod ์ฐ์ ์์ ๋ฐ ์ ์ ์ ์ค์ ํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. PriorityClass
๋ฐ ํ๋ ์ค๋ช
priorityClassName
ํฌ๋ ์ฌ์์์. ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 99999
globalDefault: false
description: "This priority class should be used for very important pods only"
์ฐ๋ฆฌ๋ ์์ฑ PriorityClass
, ์ด๋ฆ, ์ค๋ช
๋ฐ ๊ฐ์ ์ง์ ํฉ๋๋ค. ๋ ๋์ด value
, ์ฐ์ ์์๊ฐ ๋์์๋ก. ๊ฐ์ 32๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ 1๋นํธ ์ ์์ผ ์ ์์ต๋๋ค. ๋ ๋์ ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ ํ ์ ์๋ ๋ฏธ์
ํฌ๋ฆฌํฐ์ปฌ ์์คํ
ํฌ๋์ฉ์ผ๋ก ์์ฝ๋์ด ์์ต๋๋ค. ์ ๊ฑฐ๋ ์ฐ์ ์์๊ฐ ๋์ ํฌ๋๊ฐ ๋๋ฆด ๊ณณ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํ๋ฉฐ ํน์ ๋
ธ๋์ ์ผ๋ถ ํฌ๋๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ด ๋๋ฌด ๋ฑ๋ฑํ ๊ฒฝ์ฐ ์ต์
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. preemptionPolicy: Never
๊ทธ๋ฌ๋ฉด ์ ์ ์ด ์์ ๊ฒ์ด๋ฉฐ ํฌ๋๋ ๋๊ธฐ์ด์ ์ฒซ ๋ฒ์งธ๊ฐ ๋๊ณ ์ค์ผ์ค๋ฌ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
๋ค์์ผ๋ก ์ด๋ฆ์ ์ง์ ํ๋ ํฌ๋๋ฅผ ๋ง๋ญ๋๋ค. priorityClassName
:
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
role: myrole
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
priorityClassName: high-priority
์ํ๋ ๋งํผ ์ฐ์ ์์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์์ง๋ง, ์ด๊ฒ์ ํฉ์ธ๋ฆฌ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค(์: ๋ฎ์, ์ค๊ฐ ๋ฐ ๋์ ์ฐ์ ์์๋ก ์ ํ).
๋ฐ๋ผ์ ํ์ํ ๊ฒฝ์ฐ nginx-ingress-controller, coredns ๋ฑ๊ณผ ๊ฐ์ ์ค์ํ ์๋น์ค ๋ฐฐํฌ์ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
9. ETCD ํด๋ฌ์คํฐ ์ต์ ํ
ETCD๋ ์ ์ฒด ํด๋ฌ์คํฐ์ ๋๋๋ผ๊ณ ํ ์ ์์ต๋๋ค. "Cube"์ ์์ ์๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌ๋ ค ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ์ ๋์ ์์ค์ผ๋ก ์ ์งํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๋นํ ํ์ค์ ์ด๋ฉฐ ๋์์ ์ข์ ์๋ฃจ์ ์ kube-apiserver์ ๋ํ ์ง์ฐ์ ์ต์ํํ๊ธฐ ์ํด ๋ง์คํฐ ๋ ธ๋์ ETCD ํด๋ฌ์คํฐ๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ์ง ์๋ค๋ฉด ETCD๋ฅผ ์ฐธ๊ฐ์๋ค ์ฌ์ด์ ์ถฉ๋ถํ ๋์ญํญ์ ๊ฐ์ง๊ณ ๊ฐ๋ฅํ ํ ๊ฐ๊น๊ฒ ๋ฐฐ์นํ์ญ์์ค. ๋ํ ํด๋ฌ์คํฐ์ ํด๋ฅผ ๋ผ์น์ง ์๊ณ ETCD์์ ์ผ๋ง๋ ๋ง์ ๋ ธ๋๊ฐ ๋จ์ด์ง ์ ์๋์ง ์ฃผ์ํ์ญ์์ค.
ํด๋ฌ์คํฐ์ ์ฐธ๊ฐ์ ์๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋ ๋์ ๋ด๊ฒฐํจ์ฑ์ด ์ฆ๊ฐํ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ๊ฒ์ด ์ ์ ํด์ผ ํฉ๋๋ค.
์๋น์ค ์ค์ ์ ๋ํด ์ด์ผ๊ธฐํ๋ฉด ๋ช ๊ฐ์ง ๊ถ์ฅ ์ฌํญ์ด ์์ต๋๋ค.
-
ํด๋ฌ์คํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ข์ ํ๋์จ์ด๋ฅผ ๊ฐ์ถ์ญ์์ค(๋ค์์ ์ฝ์ ์ ์์).
์ฌ๊ธฐ์ ). -
ํ ์์ DC ๋๋ ๋คํธ์ํฌ์ ๋์คํฌ ์ฌ์ด์ ํด๋ฌ์คํฐ๋ฅผ ๋ถ์ฐ์ํจ ๊ฒฝ์ฐ ๋ช ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํ์ฌ ์ํ๋ ๋๋ก ๋จ๊ฒจ๋ก๋๋ค(์ฝ์ ์ ์์).
์ฌ๊ธฐ์ ).
๊ฒฐ๋ก
์ด ๋ฌธ์๋ ์ฐ๋ฆฌ ํ์ด ์ค์ํ๋ ค๊ณ ํ๋ ์ฌํญ์ ์ค๋ช ํฉ๋๋ค. ์ด๊ฒ์ ์์ ์ ๋ํ ๋จ๊ณ๋ณ ์ค๋ช ์ด ์๋๋ผ ํด๋ฌ์คํฐ์ ์ค๋ฒํค๋๋ฅผ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํ ์ ์๋ ์ต์ ์ ๋๋ค. ๊ฐ ํด๋ฌ์คํฐ๋ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ๊ณ ์ ํ๋ฉฐ ์กฐ์ ์๋ฃจ์ ์ ํฌ๊ฒ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ, ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค. ์๊ฒฌ์ ๊ทํ์ ๊ฒฝํ์ ๊ณต์ ํ์ญ์์ค. ์๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค.
์ถ์ฒ : habr.com