Kubernetes

๐Ÿ“Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes) ๊ฐœ์š”


1๏ธโƒฃ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€?

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes, K8s)๋Š” ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Container Orchestration) ํ”Œ๋žซํผ์œผ๋กœ, ๋‹ค์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

Google์ด ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋˜ Borg ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ, ํ˜„์žฌ๋Š” CNCF(Cloud Native Computing Foundation)์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.

๐Ÿ”น ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ฐœ๋…

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์€ ๋‹ค์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋™์œผ๋กœ ๋ฐฐํฌ, ํ™•์žฅ ๋ฐ ์šด์˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๋‹จ๋… ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค:

  • ์ˆ˜๋™ ๊ด€๋ฆฌ ๋ถ€๋‹ด: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ์ž‘์—…์ด ๋ณต์žกํ•˜๋‹ค.
  • ์„œ๋น„์Šค ํ™•์žฅ ์–ด๋ ค์›€: ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์ ์œผ๋กœ ํ™•์žฅ(scale-out)ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ์žฅ์•  ๋Œ€์‘ ๋ถ€์กฑ: ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ข…๋ฃŒ๋˜๋ฉด, ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค.

Kubernetes๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ํ™”๋œ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค.

๐Ÿ”น ์™œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํ•„์š”ํ•œ๊ฐ€? (Docker Swarm, Mesos ๋น„๊ต)

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์ด ์กด์žฌํ•˜์ง€๋งŒ, Kubernetes๊ฐ€ ์‚ฌ์‹ค์ƒ ์—…๊ณ„ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ ์žก์•˜๋‹ค.

ํŠน์ง• Kubernetes Docker Swarm Apache Mesos
ํ™•์žฅ์„ฑ ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›, ๋ณต์žกํ•œ ์„œ๋น„์Šค์—๋„ ์ ํ•ฉ ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค์— ์ ํ•ฉ, ๋Œ€๊ทœ๋ชจ ํ™•์žฅ ์–ด๋ ค์›€ ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ ์ง€์›, ๋น…๋ฐ์ดํ„ฐ ๋ฐ VM๋„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
์ž๋™ํ™” ๊ธฐ๋Šฅ ์ž๋™ ๋ณต๊ตฌ, ์˜คํ† ์Šค์ผ€์ผ๋ง, ํ—ฌ์Šค ์ฒดํฌ ์ง€์› ๊ธฐ๋ณธ์ ์ธ ์ž๋™ํ™” ์ œ๊ณต, ๊ธฐ๋Šฅ์ด ์ œํ•œ์  ์›Œํฌ๋กœ๋“œ ์ž๋™ ๋ถ„๋ฐฐ ๊ฐ€๋Šฅ
๋„คํŠธ์›Œํฌ ๋ชจ๋ธ ๊ฐ•๋ ฅํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ๋ฐ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ์ง€์› ๊ฐ„๋‹จํ•œ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์ž์œ ๋กญ์ง€๋งŒ ๋ณต์žกํ•จ
์ปค๋ฎค๋‹ˆํ‹ฐ & ์ง€์› ๊ฐ€์žฅ ํ™œ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ, ๊ด‘๋ฒ”์œ„ํ•œ ์ง€์› Docker ์ƒํƒœ๊ณ„์™€ ํ†ตํ•ฉ์ด ์‰ฌ์›€ ํŠน์ • ๊ธฐ์—…(์˜ˆ: Twitter, Airbnb ๋“ฑ) ์ค‘์‹ฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€

๐Ÿ‘‰ Kubernetes๊ฐ€ ๋” ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

  • ๋ณต์žกํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์šด์˜
  • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์„œ๋น„์Šค
  • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ(์˜จํ”„๋ ˆ๋ฏธ์Šค, ํด๋ผ์šฐ๋“œ ๋“ฑ)์—์„œ ๋™์ผํ•œ ๋ฐฐํฌ ๋ฐฉ์‹ ์œ ์ง€

๐Ÿ‘‰ Docker Swarm์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

  • ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•œ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ•„์š”
  • Kubernetes์˜ ๋ณต์žก์„ฑ์„ ํ”ผํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

๐Ÿ‘‰ Apache Mesos๊ฐ€ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

  • ์ปจํ…Œ์ด๋„ˆ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ VM, ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊นŒ์ง€ ํฌํ•จํ•˜๋Š” ๋ณตํ•ฉ์ ์ธ ํ™˜๊ฒฝ ์šด์˜

๐Ÿ”น ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ํŠน์ง•

Kubernetes๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

โœ… ์ž๋™ ๋ฐฐํฌ ๋ฐ ์Šค์ผ€์ผ๋ง

  • ์›ํ•˜๋Š” ๊ฐœ์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•˜๊ณ , ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํ™•์žฅ/์ถ•์†Œ ๊ฐ€๋Šฅ
  • HPA(Horizontal Pod Autoscaler)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CPU, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ์ž๋™ ์กฐ์ •

โœ… ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ & ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

  • Pod์˜ IP ๋ณ€๊ฒฝ ์—†์ด ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๋Š” Ingress ๊ธฐ๋Šฅ ์ œ๊ณต

โœ… ์ž๋™ ๋ณต๊ตฌ(Self-healing)

  • ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘
  • ํ—ฌ์Šค ์ฒดํฌ(Liveness, Readiness Probe)๋ฅผ ํ†ตํ•ด ์ƒํƒœ ํ™•์ธ

โœ… ์Šคํ† ๋ฆฌ์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

  • ๋กœ์ปฌ ๋ณผ๋ฅจ, ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€(GCP, AWS, Azure) ์ง€์›
  • PVC(Persistent Volume Claim)์œผ๋กœ ๋™์  ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ

โœ… ๋ณด์•ˆ ๋ฐ ์ ‘๊ทผ ์ œ์–ด

  • RBAC(Role-Based Access Control)๋กœ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๊ด€๋ฆฌ
  • ๋„คํŠธ์›Œํฌ ์ •์ฑ…(Network Policy)์œผ๋กœ Pod ๊ฐ„ ํ†ต์‹  ์ œ์–ด

โœ… ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํด๋ผ์šฐ๋“œ ์ง€์›

  • ์˜จํ”„๋ ˆ๋ฏธ์Šค์™€ ํด๋ผ์šฐ๋“œ๋ฅผ ํ˜ผํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ™˜๊ฒฝ์—์„œ๋„ ์šด์˜ ๊ฐ€๋Šฅ
RSS Feed