Container Orchestration


  • ์ปจํ…Œ์ด๋„ˆ์˜ ์„ฑ๋Šฅ๊ณผ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋Š” ๋„๊ตฌ์™€ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌ์„ฑ
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฃฝ์–ด์„œ ๋‹ค์‹œ ์‚ด๋ ค์•ผ ํ•  ๊ฒฝ์šฐ
    • ํ˜ธ์ŠคํŠธ๊ฐ€ ์ฃฝ์–ด์„œ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ ์‚ด๋ ค์•ผ ํ•  ๊ฒฝ์šฐ
  • Container Orchestration ์†”๋ฃจ์…˜์€ Container ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Host ๋กœ ๊ตฌ์„ฑ๋จ
    • ์ปจํ…Œ์ด๋„ˆ๋‚˜ ํ˜ธ์ŠคํŠธ๊ฐ€ ์ฃฝ์–ด๋„ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ์—‘์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ
  • Container Orchestration ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜๋งŽ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ๊ฐ„๋‹จํžˆ ๋ฐฐํฌ ๊ฐ€๋Šฅ
  • Container Orchestration ์†”๋ฃจ์…˜์€ ์˜คํ†  ์Šค์ผ€์ผ๋ง, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋„คํŠธ์›Œํ‚น, ์Šคํ† ๋ฆฌ์ง€ ๊ณต์œ , ํด๋Ÿฌ์ŠคํŠธ ๋‚ด๋ถ€ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ๋ณด์•ˆ ๋“ฑ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•จ

Kubernetes


Node

  • Kubernetes ๊ฐ€ ์„ค์น˜๋œ ๋ฌผ๋ฆฌ ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ 
  • Worker Node: Container ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณณ
  • Master Node: Kubernetes Control Plane ์ด ์„ค์น˜๋œ Node
    • Cluster ๋‚ด๋ถ€์˜ Node ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  Worker Node ์˜ Container Orchestration ์„ ๊ด€๋ฆฌ

Cluster

  • ๊ทธ๋ฃนํ™”๋œ Node ์˜ ์ง‘ํ•ฉ

Components

  • API Server
    • k8s ์˜ ํ”„๋ก ํŠธ์—”๋“œ ์—ญํ• 
    • ์‚ฌ์šฉ์ž, ๊ด€๋ฆฌ ์žฅ์น˜, CLI ๋ชจ๋‘ ์ด API Server ์™€ ํ†ต์‹ ํ•˜์—ฌ k8s ์™€ ์ƒํ˜ธ์ž‘์šฉ
  • etcd Server
    • k8s ๊ฐ€ Cluster ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ etcd ๋ถ„์‚ฐ ํ‚ค๊ฐ’ ์ €์žฅ์†Œ์— ์ €์žฅ๋จ
  • kubelet Service
    • Cluster ์˜ ๊ฐ Node ์—์„œ ์‹คํ–‰๋˜๋Š” Agent
    • Container ๊ฐ€ Node ์—์„œ ์˜ˆ์ƒ๋Œ€๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
  • Container Runtime
    • Docker ๊ณผ ๊ฐ™์€ Container ์‹คํ–‰์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์†Œํ”„ํŠธ์›จ์–ด
  • Controller
    • k8s ์˜ ๋‘๋‡Œ
    • Node, Container, Endpoint ๊ฐ€ ๋‹ซํž ๋•Œ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ˜์‘
  • Scheduler
    • ์ž‘์—…์ด๋‚˜ Container ๋ฅผ ์—ฌ๋Ÿฌ Node ์— ๋ฐฐํฌ
    • ์ƒˆ๋กœ ์ƒ์„ฑ๋œ Container ๋ฅผ ์ฐพ์•„ Node ์— ํ• ๋‹น

kubectl

kubectl run --replicas=1000 my-web-server
kubectl scale --replicas=2000 my-web-server
kubectl rolling-update my-web-server --image=web-server:2
kubectl rolling-update my-web-server --rollback
  • k8s ๋ฅผ ์ œ์–ดํ•˜๋Š” k8s CLI

References