1. Kubernetes ๋™์ž‘์›๋ฆฌ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ ธ์„œ ์šด์˜๊นŒ์ง€์˜ ํ๋ฆ„์ด ์–ด๋–ค ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€

png

  • ๊ฐœ๋ฐœ์ž (or ์šด์˜์ž)๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ k8s ํ”Œ๋žซํผ์— ์˜ฌ๋ ค์„œ ์‹คํ–‰ํ•˜๋ ค๋Š”๊ฒƒ์ด ๋ชฉ์ 

    1. ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ
    1. docker ๋ช…๋ น์œผ๋กœ hub์— push
    1. kubectl ๋ช…๋ น์œผ๋กœ k8s์—๊ฒŒ ์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋ช…๋ น (yml, cli โ€ฆ)
    1. ๋งŒ๋“ค์–ด์ง„ kubectl ๋ช…๋ น์–ด control-plane์—๊ฒŒ ๋ณด๋ƒ„
    1. Control-plane์— ์žˆ๋Š” rest api server๊ฐ€ ๋ฐ›์•„์คŒ
    1. ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค ์ž‘์—… ๋…ธ๋“œ์— ๋ฐฐ์น˜ํ•˜๋ฉด ์ข‹์„์ง€ ๊ฒฐ์ •. ๊ฒฐ์ •๋œ ๋…ธ๋“œ์˜ kubelet์— ์‹คํ–‰ ์š”์ฒญ
    1. ์š”์ฒญ ๋ฐ›์€ ๋…ธ๋“œ๋Š” kubelet ๋ช…๋ น์–ด๋ฅผ docker๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ docker daemon์—๊ฒŒ ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์š”์ฒญ
    1. docker daemon์€ hub์—์„œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ searchํ•œ ํ›„์— pull , run
    1. k8s๋Š” ์ด๋ ‡๊ฒŒ ๋™์ž‘๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ pod๋ผ๋Š” ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ

kubernetes component

  1. Control plane component

png

  • Kube-apiserver

    • kubectl ๋ช…๋ น์œผ๋กœ ๋œ ์š”์ฒญ ๋ฐ›๋Š” ์ปดํฌ๋„ŒํŠธ
    • ๋ฌธ๋ฒ•, ๊ถŒํ•œ ๋“ฑ์ด ํ•ฉ๋‹นํ•œ์ง€ ๊ฒ€์‚ฌ -> ํ•ฉ๋‹นํ•˜๋ฉด ์‹คํ–‰
  • etcd storage

    • Key-value ํƒ€์ž…์œผ๋กœ ์ €์žฅ
    • worker node๋“ค์— ๋Œ€ํ•œ ์ƒํƒœ ์ •๋ณด (hw ๋ฆฌ์†Œ์Šค, ๋™์ž‘์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœโ€ฆ)
    • kubelet ์•ˆ์—๋Š” cAdvisor ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ
    • cAdvisor๊ฐ€ ์ˆ˜์ง‘ํ•œ ์ •๋ณด๋“ค์„ control-plane์•ˆ์— ์žˆ๋Š” etcd์— ์ €์žฅ
    • kubelet์€ daemon์ด๋ผ์„œ ๊ณ„์† ์ง„ํ–‰๋จ
  • scheduler

    • api๋กœ ๋ฐ›์€ ์š”์ฒญ์„ ๋ฌธ๋ฒ• ์ฒดํฌํ•œ ํ›„ etcd์— ์žˆ๋Š” worker node ์ƒํƒœ์ •๋ณด ๋ฐ›์•„์„œ scheduler์—๊ฒŒ ์š”์ฒญ
    • ์–ด๋–ค worker node์— ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•˜๋Š”๊ฒƒ์ด ์ข‹์„์ง€
    • ๊ฒฐ์ •๋œ worker node ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  api ๊ฐ€ ํ•ด๋‹น node์˜ kubelet์— ์ ‘์†
    • ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ

    • kubelet์ด docker์—๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ
  • kube-controller-manager

    • pod๋ฅผ ๊ด€์ฐฐํ•˜๋ฉฐ ๊ฐœ์ˆ˜๋ฅผ ๋ณด์žฅ
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” worker node ํ•˜๋‚˜๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋‹ค์šด๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ๋‹ค ์‚ฌ๋ผ์ ธ ๋ฒ„๋ฆผ
    • control-plane์— ์žˆ๋Š” controller๊ฐ€ ํŒŒ์•…ํ•œ ํ›„ api์—๊ฒŒ ์š”์ฒญ
    • ๋‹ค์‹œ scheduler ํ†ตํ•ด์„œ ํ•„์š”ํ•œ ๊ณณ์— ์ปจํ…Œ์ด๋„ˆ ๋‹ค์‹œ ์‹คํ–‰
  1. worker node component
  • kubelet
    • ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” k8s ์—์ด์ „ํŠธ
    • ๋ฐ๋ชฌ ํ˜•ํƒœ๋กœ ๋™์ž‘
  • kube-proxy
    • k8s์˜ network ๋™์ž‘์„ ๊ด€๋ฆฌ
  • container runtime
    • ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•˜๋Š” ์—”์ง„
    • ์šฐ๋ฆฌ๋Š” docker ์‚ฌ์šฉ

์• ๋“œ์˜จ ํ”„๋กœ๊ทธ๋žจ

  • ํ•„์š”ํ•˜๋‹ค๋ฉด ์ถ”๊ฐ€๋กœ ์ง‘์–ด๋„ฃ์–ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • coreDNS๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋จ
    • weavenet์€ kube ์„ค์น˜ํ•  ๋•Œ ์ด๋ฏธ ํ–ˆ์Œ
  • ๋„คํŠธ์›Œํฌ ์• ๋“œ์˜จ
    • CNI - weave, calico, flanld, kube-route
  • Dns ์• ๋“œ์˜จ - coreDNS

png

  • ๋Œ€์‹œ๋ณด๋“œ ์• ๋“œ์˜จ
    • pods, depoyments. api ๋ฆฌ์†Œ์Šค
  • ํด๋Ÿฌ์Šคํ„ฐ ๋กœ๊น…

    • ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ, k8s ์šด์˜ ๋กœ๊ทธ๋“ค์„ ์ˆ˜์ง‘ํ•ด์„œ ์ค‘์•™ํ™”
    • ELK, EFK, DataDog

2. Namespace

namespace๋ž€

  • K8s api ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜
  • ํด๋Ÿฌ์Šคํ„ฐ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉ
  • K8s ํด๋Ÿฌ์Šคํ„ฐ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ํŒ€์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ•จ๊ป˜ ๊ณต์œ 
  • ์šฉ๋„์— ๋”ฐ๋ผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์•ฑ์„ ๊ตฌ๋ถ„ํ•  ๋•Œ ์‚ฌ์šฉ

์˜ˆ์‹œ

  • ์›๋ž˜๋Š” control-plane 1๊ฐœ worker node 2๊ฐœ
  • ๊ทผ๋ฐ api ๊ธฐ์ค€์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ
$ kubectl create namespace -hs
$ kubectl create namespace -ds
$ kubectl create namespace -dutyfree
  • Hs, ds, dutyfree ์ด๋ผ๋Š” ๊ฐ๊ฐ namespace ๋งŒ๋“ค์–ด์ง
    • (API, pod, service โ€ฆ)
    • A ๊ทธ๋ฃน์˜ ํ™ˆ์‡ผํ•‘์—์„œ ์šด์˜๋˜๋Š” pod๋Š” ๋‹ค hs namespace ์—์„œ ์šด์˜
    • A ๊ทธ๋ฃน์˜ ๋ฐฑํ™”์ ์—์„œ ์šด์˜๋˜๋Š” pod๋Š” ๋‹ค ds namespace ์—์„œ ์šด์˜
    • A ๊ทธ๋ฃน์˜ ๋ฉด์„ธ์ ์—์„œ ์šด์˜๋˜๋Š” pod๋Š” ๋‹ค dutyfree namespace ์—์„œ ์šด์˜
  • ์‹ค์ œ ์žฅ๋น„๋Š” ํ•˜๋‚˜์ง€๋งŒ ์‹œ์Šคํ…œ์ด ๋”ฐ๋กœ ์žˆ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋‚˜๋ˆ ์„œ ์“ธ ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๊ฒƒ - namespace

์žฅ์ 

$ kubectl get pod
  • ํ•ด๋‹น namespace์—์„œ ๋™์ž‘์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ๋ถ„๋ฅ˜์‹œ์ผœ์„œ ๋ณผ ์ˆ˜ ์žˆ์Œ

  • ์ˆ˜๋งŽ์€ pod๋“ค์ด ๋™์ž‘๋˜๋Š”๋ฐ ๋ถ„๋ฅ˜ํ•˜์—ฌ ๊ด€๋ฆฌ๊ฐ€๋Šฅ

$ kubectl create deploy ui --image=nginx --namespace hs
$ kubectl create deploy ui --image=nginx --namespace ds
$ kubectl create deploy ui --image=nginx --namespace dutyfree
  • ์‹ค์ œ ๋งŒ๋“ค์–ด์ง„ ui๋Š” ์„ธ๊ฐœ

์ƒ์„ฑ

1) CLI

$ kubectl get namespaces
  • ํ˜„์žฌ ์‹œ์Šคํ…œ์ด namespace ๋ช‡๊ฐœ ์žˆ๋Š”์ง€
  • k8s์—์„œ ์„ค์น˜๋  ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ 4๊ฐœ ๋“ค์–ด๊ฐ
$ kubectl get pods -n hs
$ kubectl get pods --all-namespace
  • Hs namespace ์— ์žˆ๋Š” pod ๋ณด์—ฌ์ค˜๋ผ
  • ์‹น๋‹ค ๋ณด์—ฌ์ค˜๋ผ
$ kubectl create namespace blue
  • blue namespace ์ƒ์„ฑ

2) yaml

$ kubectl create namespace orange --dry-run -o yaml > orange-ns.yaml
  • ์‹ค์ œ๋กœ ๋งŒ๋“ค์ง„ ๋ง๊ณ  ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ๋งŒ
  • ๊ทธ ๊ฒฐ๊ณผ๋ฅผ yamlํŒŒ์ผ (orange-ns.yaml) ๋กœ ๋ณด์—ฌ์ค˜

png

$ kubectl create -f orange-ns.yaml

png

  • yamlํŒŒ์ผ์€ ์‹œ์Šคํ…œ ์•ˆ์— ํ•ญ์ƒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์ œ๋“  ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

์‹คํ–‰

$ kubectl craete -f nginx.yaml -n blue
  • Nginx.yaml๋ฅผ blue namespace์—์„œ ์‹คํ–‰

png

switch

  • ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” namespace๋ฅผ default๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ด๋ฆ„์˜ namespace๋กœ switch
  • namespace๋ฅผ ํฌํ•จํ•œ context ๋“ฑ๋ก
$ kubectl config set-context blue@kubernetes --cluster=kubernetes --user=kubernetes-admin --namespace=blue
$ kubectl config view

png

  • ๋“ฑ๋ก๋œ namespace๋กœ context ๋ณ€๊ฒฝ
$ kubectl config current-context
$ kubectl config use-context blue@kubernetes

png

  • default namespace ์•ˆ์—์„œ ๋™์ž‘์ค‘์ธ mypod๋ผ๋Š” pod ์‚ญ์ œ
$ kubectl delete pods mypod -n default
  • ์›๋ž˜๋กœ ๋Œ๋ ค ๋†“๊ธฐ
$ kubectl config use-context kubernetes-admin@kubernetes

์‚ญ์ œ

  • namespace ์ง€์›Œ๋ฒ„๋ฆฌ๋ฉด ์•ˆ์—์žˆ๋Š” ๋ฆฌ์†Œ์Šค ์‹น ๋‹ค ๋‚ ๋ผ๊ฐ
$ kubectl delete namespaces blue

3. yaml ํ…œํ”Œ๋ฆฟ

yaml

  • ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ์–‘์‹
  • ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ๊ต‰์žฅํžˆ ์ค‘์š”
  • top-down ๋ฐฉ์‹ ์•„๋‹˜
  • k8s์šฉ ๋ฌธ๋ฒ•

๊ธฐ๋ณธ๋ฌธ๋ฒ•

  • Python์ฒ˜๋Ÿผ ๋“ค์—ฌ์“ฐ๊ธฐ๋กœ ๋ฐ์ดํ„ฐ ๊ณ„์ธต ํ‘œ๊ธฐ
  • ๋“ค์—ฌ์“ฐ๊ธฐ ํ• ๋•Œ๋Š” tab์ด ์•„๋‹Œ space bar ์‚ฌ์šฉ
  • Scalar ๋ฌธ๋ฒ• : โ€œ:โ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ key: value ์„ค์ •
  • ๋ฐฐ์—ด ๋ฌธ๋ฒ• : โ€œ-โ€œ ๋ฌธ์ž๋กœ ์—ฌ๋Ÿฌ๊ฐœ ๋‚˜์—ด