Post

๐Ÿ‹ Docker ์ž…๋ฌธ โ…ฅ - Kubernetes

๐Ÿ‹ Docker ์ž…๋ฌธ โ…ฅ - Kubernetes

๐Ÿ“˜ ใ€Ž๊ทธ๋ฆผ๊ณผ ์‹ค์Šต์œผ๋กœ ๋ฐฐ์šฐ๋Š” Docker & Kubernetesใ€๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

Kubernetes๋ž€?

  • Kubernetes๋Š” ์˜คํ”ˆ์†Œ์Šค๋กœ, Container Orchestration ๋„๊ตฌ์˜ ์ผ์ข…์ด๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ Container๋ฅผ ์ง€ํœ˜ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋งํ•˜๋ฉฐ, K8S๋ผ๊ณ  ์ค„์—ฌ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ Kubernetes๋ฅผ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ผ์€ ๋งŽ์ง€ ์•Š๋‹ค.
  • ์™œ๋ƒํ•˜๋ฉด Kubernetes๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ Container๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„์— ๊ฑธ์ณ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๋‹ค๋งŒ Kubernetes๋กœ ์–ด๋–ค ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ ํ•™์Šตํ•œ๋‹ค๋ฉด ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์—์„œ ์ผ์ผ์ด Container๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ๋Š” ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค.
  • 20๊ฐœ์˜ Container๋ฅผ ๋งŒ๋“ค๋ ค๋ฉดย docker runย ๋ช…๋ น์–ด๋ฅผ 20๋ฒˆ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, Kubernetes๋Š” ์ด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
  • Kubernetes๋Š” Docker Engine๊ณผ๋Š” ๋ณ„๊ฐœ์˜ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.
  • Kubernetes๋Š” ๊ณต์‹ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๋Š”๋ฐ๋„ Third-party Software๊ฐ€ ์—ฌ๋Ÿฟ ๋‚˜์˜จ๋‹ค.
  • ๊ณต์‹ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ฃผ๋กœ ๋งŽ์ด ์“ฐ์ด๊ณ , ์ง์ ‘ ๊ตฌ์ถ•ํ•˜๊ธฐ๋Š” ๊นŒ๋‹ค๋กญ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š”ย AWSย ๋“ฑ์˜ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค EC2,ย Fargate(Worker Node),ย EKS(Master Node)๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค.

Master Node์™€ Worker Node

  • Master Node๋Š” Worker Node์—์„œ ์‹คํ–‰๋˜๋Š” Container๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • Worker Node๋Š” Container๊ฐ€ ์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์„œ๋ฒ„์ด๋‹ค.
  • Master Node์™€ Worker Node๋กœ ๊ตฌ์„ฑ๋œ ์ผ๊ตฐ์˜ Kubernetes ์‹œ์Šคํ…œ์„ย Cluster๋ผ๊ณ  ํ•œ๋‹ค.
  • Cluster๋Š” ์‚ฌ๋žŒ์ด ๊ฐœ์ž…ํ•˜์ง€ ์•Š์•„๋„ Master Node์— ์„ค์ •๋œ ๋‚ด์šฉ์— ๋”ฐ๋ผ Worker Node๊ฐ€ ๊ด€๋ฆฌ๋˜๋ฉฐ ์ž์œจ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.
  • Master Node์—๋Š” Container ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ดย etcd๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์„ค์น˜๋œ๋‹ค.
  • Worker Node์—๋Š” Docker Engine ๊ฐ™์€ Container Engine์ด ํ•„์š”ํ•˜๋‹ค.
  • Master Node๋Š” ์ œ์–ดํŒ ์—ญํ• ์„ ํ•˜๋Š” Control Plain์„ ํ†ตํ•ด Worker Node๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

Control Plain ๊ตฌ์„ฑ

  • kube-apiserver:ย kubectl์—์„œ ๋ช…๋ น์„ ์ „๋‹ฌ ๋ฐ›์•„ ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
  • kube-controller-manager: ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ฉ, ๊ด€๋ฆฌ, ์‹คํ–‰ํ•œ๋‹ค.
  • kube-scheduler: POD๋ฅผ Worker Node์— ํ• ๋‹นํ•œ๋‹ค.
  • cloud-controller-manager: ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์™€ ์—ฐ๋™ํ•ด ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • etcd: Cluster ๊ด€๋ จ ์ •๋ณด ์ „๋ฐ˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‹ค.

Worker Node ๊ตฌ์„ฑ

  • kube-let: Master Node์˜ย kube-scheduler์™€ ์—ฐ๋™ํ•˜์—ฌ Worker Node์— POD๋ฅผ ๋ฐฐ์น˜ ๋ฐ ์‹คํ–‰ํ•œ๋‹ค.
  • ์‹คํ–‰ ์ค‘์ธ POD์˜ ์ƒํƒœ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ Monitoringํ•˜์—ฌย kube-scheduler์— ํ†ต์ง€ํ•œ๋‹ค.
  • kube-proxy: Network ํ†ต์‹ ์˜ Routing ๋ฉ”์ปค๋‹ˆ์ฆ˜

Kubernetes๋Š” ํ•ญ์ƒ โ€˜๋ฐ”๋žŒ์งํ•œ ์ƒํƒœโ€™๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

  • "Container๋Š” 4๊ฐœ, ๋ณผ๋ฅจ์€ 4๊ฐœ๋กœ ๊ตฌ์„ฑํ•˜๋ผ"์™€ ๊ฐ™์ด ์–ด๋–ค โ€˜๋ฐ”๋žŒ์งํ•œ ์ƒํƒœโ€™๋ฅผย YAMLย ํŒŒ์ผ์— ์ •์˜ํ•˜๊ณ , ์ž๋™์œผ๋กœ Container๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด์„œ ์ด ์ƒํƒœ๋ฅผ ๋งŒ๋“ค๊ณ  ์œ ์ง€ํ•œ๋‹ค.
  • Kubernetes์˜ ์ •์˜ ํŒŒ์ผ์€ ๋ช…๋ น์–ด๋กœ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ,ย etcdย ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.
  • ๋ฐ˜๋ฉด Docker-compose๋Š” Monitoring ๊ธฐ๋Šฅ์ด ์—†์–ด์„œ Container ๋งŒ๋“ค ๋•Œ ์™ธ์—๋Š” ๊ด€์—ฌํ•˜์ง€๋„ ์•Š๊ณ , ๋ช…๋ น์–ด๋กœ ์ˆ˜์ •๋„ ๋ถˆ๊ฐ€ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๋ฆฌํ•˜์ง€๋„ ์•Š๋Š”๋‹ค.
  • Kubernetes๊ฐ€ ์ •์˜ ํŒŒ์ผ์„ ์ฝ์–ด ๋“ค์ธ ํ›„ ๋ช…๋ น์–ด๋กœ ์ง์ ‘ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด ๊ฐ–๊ณ  ์žˆ๋Š” ์ •์˜ ํŒŒ์ผ๊ณผย etcd์— ์ €์žฅ๋œ ์ •๋ณด๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • Container ํ•˜๋‚˜๊ฐ€ ๋ง๊ฐ€์ง€๋ฉด ํ•ด๋‹น Container๋ฅผ ์ž๋™ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ Container๋กœ ๋Œ€์ฒดํ•œ๋‹ค.
  • Container๋ฅผ ํ•˜๋‚˜ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด ์‚ญ์ œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์—์„œ โ€˜๋ฐ”๋žŒ์งํ•œ ์ƒํƒœโ€™๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ง์ ‘ ์‚ญ์ œํ•  ์ˆ˜๋„ ์žˆ์œผ๋‚˜ Docker ๋ช…๋ น์–ด๋ฅผ ์จ์„œ ์‚ญ์ œํ•˜๋ฉด Kubernetes๊ฐ€ Container๊ฐ€ ํ•˜๋‚˜ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํƒ์ง€ํ•˜๊ณ  Container๋ฅผ ๋ณด์ถฉํ•ด๋ฒ„๋ฆฐ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ Kubernetes๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์‚ฌ๋žŒ์ด ๊ฐœ์ž…ํ•ด์„œ Container๋ฅผ ๊ด€๋ฆฌํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

Load Balancer์™€ Cloud Computing

โœ… Load Balancer

  • ํ•œ ๋Œ€์— ์„œ๋ฒ„์— ๋ชจ๋“  ์š”์ฒญ์ด ์ง‘์ค‘๋˜์ง€ ์•Š๋„๋ก ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ๊ฐ–์ถ”๊ณ  ์š”์ฒญ์„ ๊ฐ ์„œ๋ฒ„์— ๋ถ„์‚ฐํ•˜๋Š” ์žฅ์น˜
  • ์„œ๋ฒ„์— ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์€ ๋งŽ์„ ๋•Œ๋„ ์žˆ๊ณ  ์ ์„ ๋•Œ๋„ ์žˆ๋‹ค.
  • ์š”์ฒญ์ด ๋งŽ์„ ๋•Œ ๊ฐ–์ถฐ ๋†“์€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์ด ์ ์„ ๋•Œ์—๋Š” ๊ทธ๋งŒํผ ๋†€๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ๋‚ญ๋น„๋œ๋‹ค.
  • ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ฒƒ์ด Docker, Kubernetes, Cloud Computing ์„œ๋น„์Šค๋‹ค.

โœ… Cloud Computing

  • Cloud Computing ์„œ๋น„์Šค์—๋Š”ย AWS,ย ์• ์ €,ย GCP์ด ์žˆ๋‹ค.
  • ์š”์ฒญ์ด ๋งŽ์€ ๊ธฐ๊ฐ„์— Cloud์—์„œ ์„œ๋ฒ„๋ฅผ ๋Š˜๋ฆฌ๋Š” ์ฒด์ œ๋ฅผ ๊ฐ–์ถ”๋ฉด ๋œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผย ํ™•์žฅ์„ฑ์ด ์ข‹๋‹ค๊ณ  ๋งํ•œ๋‹ค.

Kubernetes์˜ ๊ตฌ์„ฑ

  • Kubernetes์—์„œ Container๋Š”ย POD๋ผ๋Š” ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.
  • POD๋Š” Container์™€ ๋ณผ๋ฅจ์„ ํ•จ๊ป˜ ๋ฌถ์€ ๊ฒƒ์œผ๋กœ, ๊ธฐ๋ณธ์ ์œผ๋กœ POD ํ•˜๋‚˜๊ฐ€ Container ํ•˜๋‚˜์ง€๋งŒ Container๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ POD๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • POD๋ฅผ ๋ชจ์€ ๊ฒƒ์ดย Service์ธ๋ฐ, Load Balancer ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๊ฐ Service๋Š” ์ž๋™์ ์œผ๋กœ ๊ณ ์ •๋œย IPย ์ฃผ์†Œ(Cluster IP)๋ฅผ ๋ถ€์—ฌ ๋ฐ›์•„ ์ด ์ฃผ์†Œ๋กœ ๋“ค์–ด์˜ค๋Š” ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋‚ด๋ถ€์— POD๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์–ด๋„ ๋ฐ–์—์„œ๋Š” ํ•˜๋‚˜์˜ ์ฃผ์†Œ๋งŒ ์กด์žฌํ•˜๋ฉฐ ์ด ์ฃผ์†Œ๋กœ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ Service๊ฐ€ ์ ์ ˆํžˆ ๋ถ„๋ฐฐํ•˜๋ฉฐ, Service๊ฐ€ ๋ถ„๋ฐฐํ•˜๋Š” ํ†ต์‹ ์€ ํ•œ Worker Node ์•ˆ์œผ๋กœ ๊ตญํ•œ๋œ๋‹ค.
  • ์˜ˆ์™ธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Worker Node์— ๊ฑธ์ณ ์‹คํ–‰๋˜๋”๋ผ๋„ ๋™์ผ ๊ตฌ์„ฑ์˜ POD๋Š” ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์—ฌ๋Ÿฌ Worker Node ๊ฐ„์˜ ๋ถ„๋ฐฐ๋Š” ์‹ค์ œ Load Balancer ๋˜๋Š” Ingress๊ฐ€ ๋‹ด๋‹นํ•˜๋Š”๋ฐ, ์ด๋“ค์€ Master Node๋„ Worker Node๋„ ์•„๋‹Œ ๋ณ„๋„์˜ Node์—์„œ ๊ตฌ๋™๋˜๊ฑฐ๋‚˜ ๋ฌผ๋ฆฌ์ ์ธ ์ „์šฉ ํ•˜๋“œ์›จ์–ด์ด๋‹ค.
  • Replicaย Sets๋Š” POD์˜ ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์žฅ์•  ๋“ฑ์˜ ์ด์œ ๋กœ POD๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ •์˜ ํŒŒ์ผ์— ์ •์˜๋œ POD์˜ ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•˜๋ฉด ์‹ค์ œ๋กœ POD์˜ ์ˆ˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค.
  • Replicaย Sets๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋™์ผํ•œ ๊ตฌ์„ฑ์˜ POD๋ฅผย Replica๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ POD์˜ ์ˆ˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์„ Replica์˜ ์ˆ˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
  • Replicaย Sets๋Š” ๋‹จ๋…์œผ๋กœ ์“ฐ์ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๊ณ ย Deployment์™€ ํ•จ๊ป˜ ์“ฐ์ผ ๋•Œ๊ฐ€ ๋งŽ๋‹ค.
  • Deployment๋Š” POD๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Image ๋“ฑ POD์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  • POD, ์„œ๋น„์Šค, Replicaย Sets, Deployment ๋“ฑ์„ย Resource๋ผ๊ณ  ํ•œ๋‹ค.
  • Resource๋Š” ๋ชจ๋‘ 50 ์—ฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์™ธ์šธ ํ•„์š” ์—†์ด ํ•„์š”์— ์˜ํ•ด ํ•™์Šตํ•˜๋ฉด ๋œ๋‹ค.

Object์™€ Instance

  • Resource๊ฐ€ย etcd์— ๋“ฑ๋ก๋œ ์ƒํƒœ์—์„œ๋Š” โ€˜โ—‹โ—‹ Objectโ€™ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.
  • ๊ทธ๋ž˜์„œ Resource๋ฅผย Object๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • Kubernetes๋Š”ย etcd์— ๋“ฑ๋ก๋œ ๋‚ด์šฉ์„ ๋”ฐ๋ผ ์‹ค์ œ POD๋‚˜ Service๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ด๋•Œ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์„ย Instance๋ผ๊ณ  ํ•œ๋‹ค.

์„œ๋ฒ„ ํ•œ ๋Œ€๋กœ๋„ Kubernetes๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

  • ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค๋ผ๊ณ  Kubernetes๊ฐ€ ๋ถˆํ•„์š”ํ•˜์ง€๋Š” ์•Š๋‹ค.
  • POD๊ฐ€ ์žฅ์•  ๋“ฑ์œผ๋กœ ๋ง๊ฐ€์งˆ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ POD๋ฅผ ์ƒ์„ฑํ•ด ๋Œ€์ฒดํ•˜๋ฏ€๋กœ ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•ด์ง„๋‹ค.
  • ํŠนํžˆ Cloud ํ™˜๊ฒฝ์—์„œ๋Š” ๊ด€๋ฆฌ ์š”์†Œ๊ฐ€ ์ค„์–ด ๋“ค์–ด ์ด๋Ÿฐ ์žฅ์ ์ด ๊ทน๋Œ€ํ™” ๋œ๋‹ค.

Kubernetes ํ•™์Šต ํ™˜๊ฒฝ

  • Kubernetes๋Š” ๋ณธ๋ž˜ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์ด ์ „์ œ ์กฐ๊ฑด์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ Master Node์™€ Worker Node๋„ ๋ณ„๋„์˜ ๋ฌผ๋ฆฌ์  ์ปดํ“จํ„ฐ๋กœ ์„ค์ •ํ•˜์ง€๋งŒ, Docker Desktop์— ๋‚ด์žฅ๋œ Kubernetes์—๋Š” ์ปดํ“จํ„ฐ ํ•œ ๋Œ€์— Master Node์™€ Worker Node๋ฅผ ๋ชจ๋‘ ๊ตฌ์ถ•ํ•œ๋‹ค.
  • ํ•™์Šต ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ Desktop ๋‚ด์žฅ Kubernetes๋ฅผ ์‚ฌ์šฉํ•ด ๋ช…๋ น์–ด๋‚˜ ์ •์˜ ํŒŒ์ผ ์ž‘์„ฑ ์—ฐ์Šต์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹ค์ œ ํ™˜๊ฒฝ๊ณผ ์ฐจ์ด๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— Kubernetes๋ฅผ ๋ชจ๋‘ ์ตํžˆ๊ธฐ ์–ด๋ ต๋‹ค.
  • Kubernetes๋Š” ์ปดํ“จํ„ฐ์˜ Resource๋ฅผ ์†Œ๋ชจํ•˜๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ํ‰์†Œ ์ž‘์—…์— ์ง€์žฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด Kubernetes๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•ด์•ผ ํ•œ๋‹ค.

Manifest File

  • Kubernetes๋Š” Manifest File์— ๊ธฐ์žฌ๋œ ๋‚ด์šฉ์— ๋”ฐ๋ผ POD๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • Manifest File์˜ ๋‚ด์šฉ์„ Kubernetes์— ์—…๋กœ๋“œํ•˜๋ฉดย etcd์— โ€˜๋ฐ”๋žŒ์งํ•œ ์ƒํƒœโ€™๋กœ ๋“ฑ๋ก๋˜์–ด ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ์ด ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค.
  • Manifest File์€ย YAMLย ๋˜๋Š”ย JSONย ํ˜•์‹์œผ๋กœ ๊ธฐ์žฌํ•œ๋‹ค.
  • JSONย ํ˜•์‹์€ ์ปดํ“จํ„ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ฏ€๋กœ ์‚ฌ๋žŒ์ด ์„ค์ • ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ด๋‹ค๋ฉดย YAMLย ํŒŒ์ผ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • Manifest File๋ช…์€ ๋”ฐ๋กœ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์ง€๋งŒย ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ์ง“๋„๋ก ํ•˜์ž.

Manifest File์€ Resource ๋‹จ์œ„๋กœ ์ž‘์„ฑํ•œ๋‹ค.

  • POD ํ•ญ๋ชฉ์€ Kubernetes ์ตœ๋Œ€ ์žฅ์ ์ธ ์ž๋™์œผ๋กœ ์„ค์ •๋œ ๊ฐœ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†๊ณ  ์ •๋ง POD๋งŒ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•ญ๋ชฉ์ด๋ฏ€๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • POD๋Š” Replicaย Sets์™€ Deployment๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋˜๋Š”๋ฐ, Replicaย Sets ์—ญ์‹œ Deployment์— ์˜ํ•ด ๊ฐœ์ˆ˜๊ฐ€ ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์š”์•ฝํ•˜์ž๋ฉด Deployment ํ•ญ๋ชฉ์œผ๋กœ Replicaย Sets์™€ POD๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • Manifest File์€ Resource ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ด ์ž‘์„ฑํ•ด๋„ ๋˜๊ณ , ํ•œ ํŒŒ์ผ์— ํ•ฉ์ณ ์ž‘์„ฑํ•ด๋„ ๋œ๋‹ค.
  • ํ•œ ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๊ฐ Resource๋ฅผย ---๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

Manifest File ์ž‘์„ฑ

  • ์ฃผ ํ•ญ๋ชฉ์—๋Š”ย APIย ๊ทธ๋ฃน ๋ฐ ์œ ํ˜• ๋“ฑ์˜ Resource ์„ค์ •๊ณผ Meta Data, Spec์„ ์ž‘์„ฑํ•œ๋‹ค.
  • POD๋‚˜ Service ๊ฐ™์€ Resource์— ์›ํ•˜๋Š” Label์„ ๋ถ™์ผ ์ˆ˜๋„ ์žˆ๋‹ค.
  • Label์„ ๋ถ€์—ฌํ•˜๋ฉด Selector ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ํŠน์ • Label์ด ๋ถ€์—ฌ๋œ POD๋งŒ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

POD ์†์˜ Volume

  • POD ์†์˜ Volume์€ POD ๋ฐ–์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Container ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ ํ”„๋กœ๊ทธ๋žจ์ด ๋“ค์–ด ์žˆ๋Š” Container์™€ Log Monitoring Program์ด ๋“ค์–ด์žˆ๋Š” Container๋ฅผ ํ•˜๋‚˜์˜ POD๋กœ ๊ตฌ์„ฑํ•˜์—ฌ Log๋ฅผ ์ถœ๋ ฅํ•  Volume์„ ๋งŒ๋“ค์–ด ์ด Volume์„ ๊ณต์œ ํ•˜๊ฒŒ ํ•˜๋ฉด ๋‘ Container๊ฐ€ Log ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

POD์˜ Manifest File ์ž‘์„ฑ

  • ์‹ค์ œ๋กœ๋Š” POD์˜ Manifest File์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ฌผ๋‹ค.
1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Pod
metadata:
  name: ์ปจํ…Œ์ด๋„ˆ๋ช…
  labels:
    app: ๋ ˆ์ด๋ธ”๋ช…
spec:
  containers:
    - name: ์ปจํ…Œ์ด๋„ˆ๋ช…
      image: httpd
      ports:
        - containerPort: 80

Deployment์˜ Manifest File ์ž‘์„ฑ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ์ปจํ…Œ์ด๋„ˆ๋ช…
spec:
  selector:
    matchLabels:
      app: ๋ ˆ์ด๋ธ”๋ช…
  replicas: 3
  template:
    metadata:
      labels:
        app: ๋ ˆ์ด๋ธ”๋ช…
    spec:
      containers:
        - name: ์ปจํ…Œ์ด๋„ˆ๋ช…
          image: ์ด๋ฏธ์ง€๋ช…
          ports:
            - containerPort: 80

Service์˜ Manifest File ์ž‘์„ฑ

1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Service
metadata:
  name: ์ปจํ…Œ์ด๋„ˆ๋ช…
spec:
  type: NodePort
  ports: 
    - port: 8099
      targetPort: 80
      protocol: TCP
      nodePort: 30080
  selector:
    app: ๋ ˆ์ด๋ธ”๋ช…
  • Deployment์—์„œ๋Š” Selector์— matchLabels ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ Service์—์„œ๋Š” ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
  • Deployment์˜ matchLabels ํ•ญ๋ชฉ์€ ํ•ด๋‹น ์กฐ๊ฑด์˜ ๋ถ€ํ•ฉํ•  ๊ฒฝ์šฐ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ ๋‚ด๋ถ€ ๋™์ž‘์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— Service์—์„œ๋Š” ์ง์ ‘ Resource๋ฅผ ์ง€์ •ํ•œ๋‹ค.

Kubernetes ๋ช…๋ น์–ด

1
kubectl ์ปค๋งจ๋“œ ์˜ต์…˜
  • ์ผ๋ฐ˜์ ์ธ ํ˜•์‹์€ ์œ„์™€ ๊ฐ™๋‹ค.
  • ๋ช…๋ น์„ ํ•˜๋‚˜ ํ•˜๋‚˜ ์‹คํ–‰ํ•˜๋ฉฐ ๋ฐ˜์˜ํ•˜๋Š” Docker์™€ ๋‹ฌ๋ฆฌ Kubernetes๋Š” Manifest File ๋‚ด์šฉ์— ๋”ฐ๋ผ ํ•œ ๋ฒˆ์— ๋ชจ๋“  Resource๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ์ฆ‰ โ€˜๋ฐ”๋žŒ์งํ•œ ์ƒํƒœโ€™๋ฅผ Kubernetes๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ž‘์—…์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ์ผ์€ ๋“œ๋ฌผ๋‹ค.

Manifest File๋กœ POD/Service ์ƒ์„ฑ ์‹ค์Šต

โœ… POD ์ƒ์„ฑ

1
kubectl apply -f ํŒŒ์ผ๊ฒฝ๋กœ๋ช…

โœ… ์ƒ์„ฑ ์—ฌ๋ถ€ ํ™•์ธ

  • Deployment์˜ Manifest File๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์€ POD์ด๋ฏ€๋กœ ์ง์ ‘ ์ ‘๊ทผํ•ด ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ Service๋ถ€ํ„ฐ๋‹ค.
  • ๋Œ€์‹  ๋‹ค์Œ๊ณผ ๊ฐ™์ด POD/Service์˜ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
1
2
3
4
5
# POD ๋ชฉ๋ก ํ™•์ธ
kubectl get pods

# Service ๋ชฉ๋ก ํ™•์ธ
kubectl get services

โœ… ์ •๋ฆฌ

1
2
3
4
5
6
7
8
9
10
11
# Deployment ์‚ญ์ œ
kubectl delete -f ํŒŒ์ผ๊ฒฝ๋กœ๋ช…

# Deployment ๋ชฉ๋ก ํ™•์ธ
kubectl get deployment

# Service ์‚ญ์ œ
kubectl delete -f ํŒŒ์ผ๊ฒฝ๋กœ๋ช…

# Service ๋ชฉ๋ก ํ™•์ธ
kubectl get service

ํšŒ๊ณ 

  • ์ฑ…์„ ๋๊นŒ์ง€ ์ฝ์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ๋๊นŒ์ง€ ์ •๋ฆฌํ•ด๋ณด์•˜์ง€๋งŒ, Kubernetes๋Š” ์‚ฌ์‹ค ์‹ค์Šต์„ ํ•˜๋ฉด์„œ๋„ ๋‚ด์šฉ์ด ํฌ๊ฒŒ ์™€๋‹ฟ์ง€ ์•Š์•˜๋Š”๋ฐ, ์ถ”ํ›„ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
This post is licensed under CC BY 4.0 by the author.