๋น๋ก ํฌ์ง ์์ ๊ท๋ชจ์ ์ฟ ๋ฒ๋คํฐ์ค์ง๋ง 2๋ ๋์ ์ด์ํ๋ฉด์ ๋ง์ ๊ฒ๋ค์ ๊ฒฝํํ ์ ์์์ต๋๋ค.
๊ฒฝํ์์์ ๋ฐฐ์ธ ์ ์์๋ ์์ ํ๋ค์ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
์ ๊ฐ ๊ณต์ ํ๊ณ ํ ํ๋ค์
- ๋ ธ๋ ๋ฐ ํ๋ ์ค์ผ์ค๋ง
- HA ์ ์ง
- ์ฟ ๋ฒ๋คํฐ์ค ๋งค๋ํ์คํธ ๊ด๋ฆฌ
- IaC
์ ๋๋ค.
๊ทธ๋ผ ๋ฐ๋ก ๋ณธ๋ก ์ผ๋ก ๊ฐ๋ณด์ฃ .
๋ ์ธ ๋๋์ฝ๋~
๋ ธ๋ ๋ฐ ํ๋ ์ค์ผ์ค๋ง
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฒ์ ๊ณต๋ถํ์ ๋, ๋ ธ๋ ๋ฐ ํ๋ ์ค์ผ์ค๋ง ํํธ๋ ๊ทธ๋ ๊ฒ ์ ์ฌํ ๋ณด์ง ์์์ต๋๋ค. ๊ทธ๋ ๊ฒ ์ด๋ ค์ ๋ณด์ด์ง ์์๊ฑฐ๋ ์.
๊ทธ๋ฅ Resource Request/Limit, NodeAffinity/PodAffinity/AntiAffinity ๋ฑ yaml ์ ์์ฑํ๋ฉด ํ๋๋ ๊ทธ์ ๋ง๊ฒ ์์์ ๋ฐฐํฌ๊ฐ ๋๋๊น์.
๋น์ฐํ ๊ฒ์ด ๊ณต๋ถํ ๋ ๊ธฐ๊ปํด์ผ 3๊ฐ ์ ๋์ ํ๋๋ก ์งํํ๋๋ฐ, ํ์ค์์ ์ต์ ๋ช ๋ฐฑ๊ฐ์ ํ๋๊ฐ ์์ด๋ฒ๋ฆฌ๋...!!
๊ทธ๋ฐ๋ฐ ํ์ค์์๋ ๊ทธ๋ฆฌ ๊ฐ๋จํ์ง ์์ต๋๋ค. ๋ค์ํ ํ๊ฒฝ๊ณผ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ค๋ฉด ์๋นํ ์ ๊ฒฝ ์ธ ๊ฒ์ด ๋ง์์ง๋๋ค.
๋ง์ฝ ๋ฌด๋ถ๋ณํ๊ฒ ์์ฑ๋๋ ํ๋๋ค์ ๋ก๊ทธ๋ก ์ธํด, ๋ ธ๋์ ์คํ ๋ฆฌ์ง ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋ฉด ์ด๋จ๊น์? ํน์ ์ฌ์ฉํ์ง ์๋ ์ด๋ฏธ์ง๊ฐ ๊ณ์ํด์ ์์ฌ์ ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋ฉด ์ด๋จ๊น์?
๋ง์ฝ ๋ฌด์ค๋จ์ ์ ์งํด์ผ ํ๋ ํ๋๊ฐ ๊ฐ์ ๋ ธ๋์ ๋ฐฐํฌ๋๋ ๋ฐ๋์ ๋ ธ๋๊ฐ ์ ๋ฐ์ดํธ๋ Drain ๋ ๋ ํ๋๊ฐ Evict ๋๋ฉด ์ด๋จ๊น์?
์ด๋ด ๊ฒฝ์ฐ ๋ฌด์ค๋จ์ด ์ ์ง ๋ ์ ์์ฃ . ํ์ง๋ง ์ด๋ฐ ํ์๋ ์ฟ ๋ฒ๋คํฐ์ค ์ ์ฅ์์ ์ง๊ทนํ ์ ์์ ๋๋ค.
๋ง์ฝ 2Gi ์ Memory ๋ฅผ ๊ฐ์ง ๋ ธ๋์ .resources.request ๊ฐ ๊ฐ๊ฐ 1Gi ์ธ ํ๋๊ฐ 2๊ฐ๊ฐ ๋ฐฐํฌ๋์๋๋ฐ, ํ๋๋ .resources.limit ์ ๊ฑธ์ด๋๊ณ , ๋ค๋ฅธ ํ๋๋ ๊ฑธ์ด๋์ง ์์๋๋ฐ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฝ์ฐผ์ต๋๋ค.
๋ ์ค ํ๋๋ OOM ์ด ๋ฐ์ํ ๊ฒ์ด ๋๋ฌธ์ ํ๋๋ Evict ํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํด์ผํ๋๋ฐ ๊ณผ์ฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋๊ตด Evict ํ ๊น์?
์ฟ ๋ฒ๋คํฐ์ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ๋ ๋ ์ด๋ป๊ฒ ์ค์ผ์ค๋ง์ด ์งํ๋ ์ง ์์ธก์ ํด์ผํ๋๋ฐ ์ฝ์ง ์์ต๋๋ค. ๋ถ๋ช ํ ์๋ฒฝํ ์ค๊ณ๋ฅผ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ ๋ ๊ตฌ๋ฉ์ด ์๊ฒจ์ ๋ง์ฝ์ ๋ถ๋ฆฌ์ฃ .
๊ทธ๋๋ ๋ ์ ํํ ์์ธก์ ์ํด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ณต๋ถํ๋ ๊ฑฐ์ฃ !
์ฐ์ ๋๋ฒ์งธ ์ง๋ฌธ๋ถํฐ ๋ตํด๋ณด์ฃ .
๋ฌด์ค๋จ์ ์๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ ๊ฒฝ์ฐ, ๋น์ฐํ๊ฒ๋ ์ค๋จ๋์์ ๊ฒฝ์ฐ ํฌ๋ฆฌํฐ์ปฌํ ์ด์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฐ์ํ๋ ์ค๋จ์ ํ๋ ๋ด ์๋ฌ๋ก ์ธํ ์ค๋จ์ ๋งํ๋ ๊ฒ์ ์๋๋๋ค.
๋ ธ๋ ์ ๋ฐ์ดํธ ๊ฐ์ ๊ฒ๋ค๋ก ์ธํ ํ๋์ ์ข ๋ฃ๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค์์๋ ์๋ฐ์ ์ค๋จ๋ผ๊ณ ํ์ฃ !
๋ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ ์ฐธ๊ณ !
์ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋ ํ๋์ผ์ง๋ผ๋ ๊ฐ์ ๋ ธ๋์ ํ๋๊ฐ ์กด์ฌํ๋ฉด ์ค๋จ๋ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ฐ๋จํ๊ฒ Node Update ๋ง ์๊ฐํด๋ ์ ๋ฐ์ดํธ๊ฐ ์งํ ์ค์ผ ๋๋ ๋ชจ๋ ํ๋๋ค์ ์ถ์ถํฉ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ์๋ฌด๋ฆฌ ์๋ฒฝํ ํ๋๋ผ๋ ์๊ฐ์ ์ผ๋ก ์ ๋ถ ์ค๋จ๋๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ฃ . (๊ทธ๋ฆผ2 ์ฐธ๊ณ )
์ด๋ด๋๋ PodDistruptionBudget ๋ฅผ ์์ฑํด์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ฐ๋จํ์ง๋ง ์์ฃผ ๊ฐ๋ ฅํ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค๋ผ๊ณ ์๊ฐํฉ๋๋ค.
PodDistruptionBudget ๋ ์ค์ ์ ๋ฐ๋ผ ์ต์/์ต๋ 1๊ฐ ์ด์์ ํ๋๋ ํญ์ ์คํ๋ ์ ์๋๋ก ๋ณด์ฅ ํด์ค๋๋ค. ์ฆ, 2๊ฐ ์ด์์ ํ๋๊ฐ ๋์์ ์ ๋ถ Evicted ๋๋ ๊ฒ์ ๋ง์์ค๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ ธ๋๋ฅผ ์ ๋ฐ์ดํธ ํด์ผ ํ๋๋ฐ, ์ด ๋ ธ๋๋ PodDistruptionBudget ๋ฅผ ๊ฐ์ง 2๊ฐ์ ์ด์์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ ๊น์?
์ ๋ฐ์ดํธ๋ ์งํ๋์ง ์์ต๋๋ค. ์๋น์ค๊ฐ ์ค๋จ๋์ง ์์์ ์ฐ์ ์ ๋คํ์ธ๋ฐ, ์ด๋ฌ๋ฉด ์์ํ ๋ ธ๋๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ด ๊ฒฝ์ฐ PodAnityAffinity ๋ฅผ ํตํด์ ๋ค๋ฅธ ๋ ธ๋์ ํ๋๊ฐ ๋ฐฐํฌ๋ ์ ์๊ฒ ํด์ฃผ์ด ์์ฐจ์ ์ผ๋ก ๋ ธ๋ ์ ๋ฐ์ดํธ๋ฅผ ์งํ์์ผ์ฃผ์ฃ . ๊ทธ๋ฌ๋ฉด ์ต์ 1๊ฐ ์ด์์ ํ๋๋ ์ด์ ์์ ๊ฒ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋คํํ PodDistruptionBudget ์ ๊ฑธ์ด๋ฒ๋ฆฌ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ์๋ก ๋ค๋ฅธ 2๊ฐ์ ๋ ธ๋์ ํ๋๊ฐ ๋ฐฐํฌ๋๊ฒ๋ ํด์ค๋๋ค.
์ธ๋ฒ์งธ ์ง๋ฌธ์ ๋ต์ ์ด๋จ๊น์?
๋ต์ ํ๊ธฐ์ ์ ์ฐ์ QoSClass ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. QoSClass ์ ์ข ๋ฅ์๋ Best-Effort, Bustable, Gauranted ๊ฐ ์๋๋ฐ, ์ด๋ ๋ ธ๋์ ์กด์ฌํ๋ ํ๋๊ฐ Evict ๋๋ ์์๋ฅผ ์ ํด์ค๋๋ค. Best-Effort ์ธ ํ๋๊ฐ ๊ฐ์ฅ ์ฐ์ ์์ Evict ๋ฅผ ๊ฐ์ง๊ณ Gauranted ์ธ ํ๋๊ฐ ๊ฐ์ฅ ํ์์ Evict ๋ฅผ ๊ฐ์ง๋๋ค.
.resources ๋ฅผ ์ค์ ํด์ฃผ์ง ์์ผ๋ฉด Best-Effort ๊ฐ ๋๊ณ , .resources ์ request ์ limit ๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํ๋ฉด Bustable ๋ฅผ, .resources ์ request ์ limit ์ ๊ฐ์ผ๋ฉด Gauranted ๊ฐ ๋ฉ๋๋ค.
์ ๊ฒฝ์ฐ๋ผ๋ฉด .resources.limit ๋ฅผ ์ค์ ํ์ง ์์ ํ๋๋ฅผ ๋จผ์ Evict ํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
QoSClass ๋ง๊ณ ๋ Evict ์ฐ์ ์์๋ฅผ ์ค์ ํ ์ ์๋๋ฐ PriorityClass ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก 2๊ฐ PriorityClass ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋น์ฐํ Value ๊ฐ์ด ๋ฎ์ ๊ฒ์ด ๋จผ์ Evict ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ QoSClass ์ PriorityClass 2๊ฐ๊ฐ ์์ ๊ฒฝ์ฐ, PriorityClass ๊ฐ ๋ ์ฐ์ ์ ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด Best-Effort ์ผ์ง๋ผ๋ system-node-critical ๊ฐ ๊ฑธ๋ ค์๋ค๋ฉด, Gauranted ์ด์ง๋ง ์๋ฌด PriorityClass ๋ฅผ ๊ฐ์ง์ง ์์ ํ๋๊ฐ ๋จผ์ Evict ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋์์ ์ฒซ๋ฒ์งธ ์ง๋ฌธ์ ๋ํด ๋ตํด๋ณด์ฃ .
์ด ๋ถ๋ถ์ ๋ํด์๋ ์์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค๋ง์ผ๋ก๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ ๋ค๊ณ ์ด๋ ต์ง ์์ต๋๋ค. Karpenter ์ Loki (๋ก๊ทธ ์์ง๊ธฐ) ๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ์ต๋๋ค.
์๋ฅผ ๋ค์ด Karpenter ๋ฅผ ํตํด 30์ผ์ด ์ง๋ ๋ ธ๋๋ ์ญ์ ํ๊ณ ์๋กญ๊ฒ ์์ฑํ๋ฉฐ, ๋ ธ๋์ ์๋ ํ๋๋ค์ ๋ก๊ทธ๋ Loki ๋ก ์์งํ๋ ๊ฒ์ด์ฃ .
์ด ๋ถ๋ถ์ ๋ํด์๋ ์์ ์ ๋ค๋ฃฌ ๋ก๊ทธ ๋๋ฌธ์ ๋ ธ๋ ๋์คํฌ๊ฐ ๋ถ์กฑํ๋ฉด? ์ด๋ฏธ์ง๊ฐ ๋ ธ๋ ๋์คํฌ๋ฅผ ์ ๋ถ ์ฐจ์งํ๋ฉด ์ด๋กํ์ง? ์ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
์ ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ๋ค๋ฃจ๋ ์ฌ๋๊ณผ ๊ทธ๋ ์ง ๋ชปํ ์ฌ๋์ ์ฐจ์ด๋ ๋ ธ๋ ๋ฐ ํ๋๋ฅผ ์ด๋ป๊ฒ ์ค์ผ์ค๋งํ๋์ ๋ฌ๋ ค์๋ค๊ณ ์๊ฐํ ์ ๋๋ก ์ค์ผ์ค๋ง์ ์ค์ํ๋ฉด์ ์ด๋ ต๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์์ ๊ณต์ ๋๋ฆฐ ๋ด์ฉ๋ค ๋ง๊ณ ๋ ํจ์ฌ ๋ ๋ค์ํ ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ๋ค์ด ์์ผ๋ ์์๋ณด์๊ธธ ๋ฐ๋๋๋ค!
HA ๊ตฌ์ฑ
ํ๋๋ ์ธ์ ์ฃฝ์์ง ๋ชจ๋ฅผ ๋ ์์ ๋๋ค. ์ฃฝ๋๋ผ๋ ์ด์ํ ๊ฒ ์๋ ๋ ์์ด์ฃ . ๊ทธ๋ด๋ ค๊ณ ๋ง๋ค์ด์ง ๋ ์์ด๋๊น์.
ํ์ง๋ง ํ๋๊ฐ ์ฃฝ๋๋ผ๋ ์๋น์ค๊น์ง ์ฃฝ์ด์ ์๋ฉ๋๋ค. ๋๋ฌธ์ ์ฟ ๋ฒ๋คํฐ์ค์์ HA ๊ตฌ์ฑ์ ์ํด ๋ ์ ๊ฒฝ์จ์ค์ผ ํฉ๋๋ค!
๋จ์ํ replicas: 2 ๋ก ํด๋ ์ฟ ๋ฒ๋คํฐ์ค ์์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์ถฉ๋ถํ HA ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ ์ธ์์ด ์ฝ์ง ์์ฃ . ์ด๋ฐ ๋จ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ HA ๋ฅผ ๊ตฌ์ฑ ํ์ง ๋ชปํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์กด์ฌํฉ๋๋ค.
์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค๋ก ์์๋ฅผ ๋ค์ด๋ณด์ฃ .
์ฟ ๋ฒ๋คํฐ์ค ์์ ํ์ผ์์คํ ์ธ Nexus ๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ต๋๋ค. Nexus ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Stateful ์ ์ ์งํด์ผ ํ๋ ์ฑ๊ธ ์ธ์คํด์ค ์๋น์ค์ ๋๋ค. ๋ง์ฝ HA ๊ตฌ์ฑ์ ์ํด 2๊ฐ ์ด์์ ํ๋๋ก ๋ฐฐํฌ๋๋ค๋ฉด, ๋ฐ์ดํฐ์ ๋ณํฉ์ฑ์ด ๊นจ์ง ์ ์์ต๋๋ค.
Nexus Pro ๋ผ๋ฉด ๋ค์ค ์ธ์คํด์ค HA ๋ฅผ ์ง์ํด์ฃผ๊ธด ํฉ๋๋ค! ์ฌ๊ธฐ์ ์์๋ฅผ ์ํด!
๋ค์์ Karpenter ์ ๋๋ค.
HA ๋ฅผ ๊ตฌ์ฑํด์ฃผ๊ธฐ ์ํด ํ๋๋ฅผ 2๊ฐ ์์ฑํด์ฃผ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ํ ๋๋ง ์ค์ง์ ์ผ๋ก ์คํ๋๊ณ ์์ฃ . ๋ค๋ฅธ ๋ ์์ ๋ฆฌ๋๊ฐ ๋๊ธฐ ์ํด ์ ๋ฅผ ์ฐ๊ณ ์์ต๋๋ค.
๋ง์ฝ ๋ฆฌ๋์ธ ๋ ์์ด ์ฃฝ์ผ๋ฉด, ๋ฐ๋ก ๊ทธ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๊ฒ ์ฃ .
๋ค์์ Prometheus ์ ๋๋ค.
Prometheus ๋ ๋ฉํธ๋ฆญ์ ์์งํด์ฃผ๋ ๋ ์์ธ๋ฐ, ๊ณต์ ๋ฌธ์์๋ ๋์์๋ฏ ์ ๋์ ์ธ Stateful ์๋น์ค์ ๋๋ค.
์ค๋ก์ง 1๊ฐ๋ก๋ง ์คํ๋์ด์ผ ํฉ๋๋ค. ๋๋ฌธ์ HA ๋ ์ง์๋์ง ์์ต๋๋ค. ํ์ง๋ง... ์ ๋ HA ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ถ์ต๋๋ค...
์ด ๋ถ๋ถ๋ค์ ๋ํด์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น์?
๋ค์ด๊ฐ๊ธฐ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ฒ Stateless ์ Stateful ํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
Stateless ๊ฐ์ ๊ฒฝ์ฐ ํ๋๋ฅผ 2๊ฐ ์ด์ ๋ฐฐํฌํจ์ผ๋ก์จ ์์ฃผ ์ฝ๊ฒ HA ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด Stateful ๋ ๋จ์ํ ํ๋๋ฅผ 2๊ฐ ์ด์ ๋ฐฐํฌํ๋ค๊ณ ํด์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Stateful ํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ ๊ฒฝ์ฐ HA ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ ๊ธ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ ์ ๊ธ ๋ฉ์ปค๋์ฆ์ ์ด์ฉํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ ์ ๊ธ์ ๋ ํ๋ฒ Soft ํ ์ ๊ธ๊ณผ Hard ํ ์ ๊ธ์ผ๋ก ๋๋์ฃ .
Soft ํ ์ ๊ธ์ Deployment + Service + replicas = 1 ๋ฅผ ํตํด ๊ตฌํํ ์ ์๊ณ , Hard ํ ์ ๊ธ์ StatefulSet + Headless Service + replicas >= 1 ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
Headless Service ๋๋ถ์ Replica ๊ฐ 1๊ฐ ์ด์์ด ๋์ด๋ ์๊ด์์ต๋๋ค!
์ฌ๊ธฐ์ ๊ผญ ์ฃผ์ํ ์ ์ด ์์ต๋๋ค.
ํ๋์ replicas ๋ ์ ์ง๋๋ ์ต์ํ์ ํ๋ ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ต๋๊ฐ ์๋์ฃ . replicas: 1 ์ผ์ง๋ผ๋ 2๊ฐ๊ฐ ๋ ์ ์๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
๋ง์ฝ ํ๋๊ฐ ๋ฐฐํฌ๋์ด ์๋ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ฒจ, ํด๋ฌ์คํฐ ๋ฐ์ด๋๋ฆฌ์ ๋ฒ์ด๋ ๊ฒฝ์ฐ ์ฟ ๋ฒ๋คํฐ์ค๋ replica ๊ฐ 0 ์ผ๋ก ์ธ์งํ์ฌ 1๊ฐ๋ฅผ ๋ ๋ฐฐํฌํ๊ฒ ๋ฉ๋๋ค. ์ฆ ์ค์ง์ ์ผ๋ก ํ๋๊ฐ 2๊ฐ๊ฐ ๋ ์๋๊ฑฐ์ฃ .
ํด๋ฌ์คํฐ์ ์ํด ๊ด๋ฆฌ๋์ง ์์ง๋ง ์ฌ์ ํ ์คํ๋๊ณ ์๋ ํ๋์ ๋ค์ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ฐฐํฌํ ํ๋ ์ด๋ ๊ฒ ์ด 2๊ฐ์ ๋๋ค.
๋น์๋ฐ์ ์ธ ์ค๋จ์ ์ํด์ ์์ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ ์ํฉ์ฒ๋ผ Pod2 ๊ฐ ์๊ฒจ๋ฒ๋ ค ์๋น์ค๋ก ์ธํด Pod2 ๋ก๋ ๋ก๋๋ฐธ๋ฐ์ฑ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ด ๊ฒฝ์ฐ Stateful ์ด ๊นจ์ง ์ ์์ฃ . ๊ทธ๋์ ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ Soft ํ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ์ด๋ผ๊ณ ํฉ๋๋ค.
Hard ํ ์ ๊ธ ์ญ์ Soft ํ ์ ๊ธ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๊ฐ ๋๊ฐ์ด ๋ฐ์ํ ์ ์๋๋ฐ, Headless Service ๋ฅผ ํตํด ์ด๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๊ธ์์ ์์ธํ ๋ค๋ฃฐํ ์ง๋ง ๊ฐ๋จํ๊ฒ ๋งํด๋ณด๋ฉด, 2๊ฐ์ ํ๋๊ฐ ์๊ธฐ๋๋ผ๋ Headless Service ๋ฅผ ํตํด ์ฒซ๋ฒ์งธ ํ๋์ ๋๋ฉ์ธ์ผ๋ก๋ง ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด์ฃ . StatefulSet ์ ๋คํธ์ํฌ ์๋ณ์๋ฅผ ๊ฐ์ง๋, Headless Service ์ ๊ฒฐํฉํ๋ฉด ๋ค๋ฅธ ํ๋๊ฐ ์๊ธฐ๋๋ผ๋ ํ ๊ณณ์ ํ๋๋ก๋ง ์์ฒญ์ด ๊ฐ ์ ์๊ฒ ํ ์ ์์ฃ .
์๊ฐ์ ์ผ๋ก ํ๋๊ฐ ์ฃฝ์ด ์๋น์ค๊ฐ ์ค๋จ๋๊ฒ ์ง๋ง, ๊ธ๋ฐฉ ๋ค์ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ๋๋ฅผ ์ด๋ฆด ๊ฒ์ ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ ์๋ ์ฟ ๋ฒ๋คํฐ์ค ์์์ ์ด์ฉํด ์ ๊ธ์ ๊ฑด๋คํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ ์ ๊ธ์ด๋ผ๊ณ ๋ช ์นญํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ ์ ๊ธ์ ํตํด Stateful ํ ์ ํ๋ฆฌ์ผ์ด์ ์ HA ๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ฐ, ์๋ฒฝํ HA ์ ์ง๋ ์๋๋๋ค. ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ ์ ๊ธ๋ณด๋จ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ ๊ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ ๊ธ์ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์์ ๋ถ์ฐ๋ฝ ๋ฉ์ปค๋์ฆ, ๋ฆฌ๋-์ ์ถ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ ๊ฒ์ด์ฃ . ์๋๋ฉด zookeeper ์ Kafka ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ ๊ธ์ ๋ํด์๋ ์์ด ๋๋ฌด ๋ฐฉ๋ํ๋ ๋ค๋ฅธ ๊ธ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค!
๊ทธ๋ผ ์ด์ ์์์ ๋์ง ์ฒซ๋ฒ์งธ, ๋๋ฒ์งธ ์ง๋ฌธ์ ๋ต์ ์ถฉ๋ถํ ํ ์ ์์ต๋๋ค.
Nexus ๋ Hard ํ ์ ํ๋ฆฌ์ผ์ด์ ์ธ๋ถ ์ ๊ธ์ ํตํด ์ฑ๊ธ์ธ์คํด์ค์ HA ๋ฅผ ์ ์งํ ์ ์๊ณ , Karpenter ๋ ๋ก๊ทธ์์ ์ ์ ์๋ฏ์ด ๋ฆฌ๋-์ ์ถ ๋ฉ์ปค๋์ฆ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ ๊ธ์ ์ฌ์ฉํ์ต๋๋ค.
๊ทธ๋ผ Prometheus ๋ ์ด๋จ๊น์?
Prometheus ๋ ํผ์๋ง์ ํ์ผ๋ก HA ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ ๊ธ, ์ธ๋ถ ์ ๊ธ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๋์ Prometheus Operator ์ Thanos, Grafana Mimir ๋ฅผ ํตํด HA ๋ฅผ ์ ์งํ ์ ์์ฃ .
์ฌ์ค ์ด ๋ฐฉ๋ฒ๋ ์ ํํ๋ Prometheus ๋ฅผ HA ๋ก ์ ์ง์์ผ์ฃผ๋ ๊ฒ์ ์๋๊ณ , Prometheus ๊ฐ ์์งํ๋ ๋ฉํธ๋ฆญ์ Push ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์ง์์ผ์ค๋๋ค.
์ถ๊ฐ์ ์ผ๋ก CNCF ํ๋ก์ ํธ ๊ฐ์ ๊ฒ๋ค์ ์ฌ์ฉํ ๋ ๋ฌธ์์์ HA ๊ตฌ์ฑ์ ๋๋ถ๋ถ ๊ฐ์ด๋ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ผํ๋ฉด ์ด๋ ต์ง ์๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ArgoCD ์ HA ๋ ๊ณต์ ๋ฌธ์์ ๊ฐ์ด๋๋๊ณ ์์ต๋๋ค.
๋ฐ๋ก ๋ค์ ๊ธ์์ ์ด์ด์ง๋๋ค.
๋ฐ๋ก ๋ค์ ๊ธ์์ ์ด์ด์ง๋ ค๊ณ ํ์ง๋ง, ๊ด๋ จํ ๋ด์ฉ์ ๊ฐ์๋ก ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ๋ค๋ฉด ๊ฐ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
[๊ฐ์ ์ถ์] ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ์ฉํ ์ค๋ชฐ ๋น์ฆ๋์ค ์ด์