๐Ÿšข Kubernetes (K8s) ์ดํ•ดํ•˜๊ธฐ

๐Ÿ’ก ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€?

์ปจํ…Œ์ด๋„ˆํ™”๋œ ์›Œํฌ๋กœ๋“œ์™€ ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”Œ๋žซํผ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € Docker(์ปจํ…Œ์ด๋„ˆ)์˜ ๊ฐœ๋…์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿณ Docker์˜ ์ดํ•ด

Docker๋ž€?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„๋กœ ํŒจํ‚ค์ง•(์ด๋ฏธ์ง€ํ™”)ํ•ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  1. OS ๋…๋ฆฝ์„ฑ ๐Ÿ“ฆ

    • ๊ธฐ์กด: ๊ฐ OS๋ณ„ ๋ณ„๋„ ํŒจํ‚ค์ง• ํ•„์š” (RedHat, Ubuntu, Windows ๋“ฑ)
    • Docker: OS ์ข…์†์„ฑ ํ•ด๊ฒฐ, ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„ ์‹คํ–‰ ๊ฐ€๋Šฅ
  2. ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ ๐Ÿ”ง

    • Web/App Applications
    • Database (MySQL, Oracle)
    • ์บ์‹œ ์„œ๋ฒ„ (Redis) ๋“ฑ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆํ™” ๊ฐ€๋Šฅ

Docker ์•„ํ‚คํ…์ฒ˜

Docker Architecture

โš™๏ธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋งค์ปค๋‹ˆ์ฆ˜

ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์™€ ์›Œ์ปค ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ œ์–ด๋ฅผ ๋‹ด๋‹นํ•˜๋ฉฐ, API ์„œ๋ฒ„, ์ปจํŠธ๋กค๋Ÿฌ ๋งค๋‹ˆ์ €, ์Šค์ผ€์ค„๋Ÿฌ, etcd๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์›Œ์ปค ๋…ธ๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๋…ธ๋“œ๋กœ, Kubelet, Kube-Proxy, ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ: ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ œ์–ด ํ‰๋ฉด์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • API ์„œ๋ฒ„: ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ปจํŠธ๋กค๋Ÿฌ ๋งค๋‹ˆ์ €: ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์Šค์ผ€์ค„๋Ÿฌ: ์›Œ์ปค ๋…ธ๋“œ์— POD๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • etcd: ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
  • ์›Œ์ปค ๋…ธ๋“œ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.
    • Kubelet: ๊ฐ ๋…ธ๋“œ์—์„œ POD์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • Kube-Proxy: ๋„คํŠธ์›Œํฌ ํ”„๋ก์‹œ์™€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก POD: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋ฐฐํฌ ๋‹จ์œ„๋กœ, 1:N ๊ฐœ๋…์˜ ์ปจํ…Œ์ด๋„ˆ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์˜คํ† ์Šค์ผ€์ผ๋ง

์˜คํ† ์Šค์ผ€์ผ๋ง์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  • Horizontal Pod Autoscaler (HPA): CPU ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ ๋ฉ”ํŠธ๋ฆญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ๋“œ์˜ ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Vertical Pod Autoscaler (VPA): ํŒŒ๋“œ์— ํ• ๋‹น๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋กค๋ง ์—…๋ฐ์ดํŠธ์™€ ๋กค๋ฐฑ (์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์ „๋žต)

๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์ ์ง„์ ์œผ๋กœ ๋ฐฐํฌํ•˜์—ฌ ๋‹ค์šดํƒ€์ž„ ์—†์ด ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ํŒŒ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•˜์—ฌ ์„œ๋น„์Šค ์ค‘๋‹จ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋กค๋ฐฑ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋กค๋ง ์—…๋ฐ์ดํŠธ ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋กค๋ฐฑํ•˜์—ฌ ์•ˆ์ •์ ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. Canary Deployment: ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ๋ฐฐํฌํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  2. Blue-Green Deployment: ๋‘ ๊ฐœ์˜ ํ™˜๊ฒฝ(Blue์™€ Green)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋ฐฐํฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•œ ํ›„, ํŠธ๋ž˜ํ”ฝ์„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด๋Ÿฌํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฏธ ํ•ด๋‹น ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŽ์€ ๋„๋ฉ”์ธ์—์„œ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค.

๐Ÿš€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํ•„์š”์„ฑ

  • ์ˆ˜๋งŽ์€ Docker ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
  • ๋Œ€๊ทœ๋ชจ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ฐ€๋Šฅ
  • ์—…๊ณ„์—์„œ๋Š” ์ฃผ๋กœ โ€˜K8sโ€™๋กœ ๋ถˆ๋ฆผ

๐Ÿ’ก K8s: Kubernetes์˜ ์•ฝ์ž (K + 8๊ธ€์ž + s)