ํŒŒ๋“œ(Pod)

  • Container ์™€ Pod ๊ฐœ๋…
    • container

    png

    • Pod ๋ž€?
      • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” K8S API์˜ ์ตœ์†Œ ๋‹จ์œ„, ๋‹ค์‹œ๋งํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์ž‘์‹œ์ผœ์ฃผ๋Š” ์ตœ์†Œ ๋‹จ์œ„
      • Pod ์—๋Š” ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ

    png

1. Pod ์ƒ์„ฑํ•˜๊ธฐ (2๊ฐ€์ง€ ๋ฐฉ์‹)

png

์‹ค์Šต

  • CLI์œผ๋กœ pod ์ƒ์„ฑ

png

2. multi-container Pod ์ƒ์„ฑํ•˜๊ธฐ

png

์‹ค์Šต

  • yaml๋กœ pod ์ƒ์„ฑ
  • ํ•˜๋‚˜์˜ pod์— centos ์™€ webserver ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋”ฐ๋กœ ์กด์žฌ

png

  • ip ๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๊ณต์œ ๋œ๋‹ค.

png

ํŒŒ๋“œ(Pod)์˜ ๋™์ž‘ flow

  • pending : schduler๊ฐ€ worker node๋“ค ์ค‘ ์–ด๋Š๊ณณ์— webserver ์„ ์‹คํ–‰์‹œํ‚ฌ์ง€ ์„ ํƒํ•˜๋Š” ๊ณผ์ •์„ ์ผ์ปซ๋Š”๋‹ค.

png

Question & Answer

  • dry -run ์˜ต์…˜ : ์‹คํ–‰ํ•˜์ง€๋ง๊ณ  ์‹คํ–‰์ด ๋˜๋Š”์ง€๊นŒ์ง€๋งŒ ํ™•์ธํ•œ๋‹ค.
    # ์ปจํ…Œ์ด๋„ˆ image 'redis123'์„ ์‹คํ–‰ํ•˜๋Š” pod 'redis'๋ฅผ yaml์„ ์ด์šฉํ•ด ์ƒ์„ฑํ•˜์‹œ์˜ค.
    # ์•ž์„œ ๋งŒ๋“  redis pod์˜ image๋ฅผ redis๋กœ ์ˆ˜์ •ํ•˜์—ฌ ๋™์ž‘์‹œํ‚ค์‹œ์˜ค.
    $ kubectl run redis --image=redis123 --dry-run -o yaml > redis.yaml
    # yaml ํŒŒ์ผ ํ•˜๋‚˜๊ฐ€ ์ƒ๊น€
    $ kubectl create -f redis.yaml
    $ kubectl get pods redis
    # ์—๋Ÿฌ ๋ฐœ์ƒ
    $ kubectl describe pod
    $ kubectl edit pod redis
    $ kubectl get pods 
    

    png

png

png

livenessProbe๋ฅผ ์ด์šฉํ•ด self-healing Pod (kubelet์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ง„๋‹จํ•˜๊ธฐ)

  • kubernetes Feacures - self-healing
    • Restarts containers that fail, replaces and reschedules containers when nodes die, kills containers that donโ€™t respond to your user-defined health check, and doesnโ€™t advertise them to clients until they are ready to serve.
  • ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

png

png

png

  • failureThreshold : health check ์‹คํŒจ ํšŸ์ˆ˜

init container๋ฅผ ์ ์šฉํ•œ Pod

  • ์•ฑ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์ „์— ๋ฏธ๋ฆฌ ๋™์ž‘์‹œํ‚ฌ ์ปจํ…Œ์ด๋„ˆ
  • ๋ณธ Cantainer๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์‚ฌ์ „ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ
  • ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋œ ํ›„์— ์•ฑ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
  • https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/ (์˜ˆ์ œ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Œ)

png

์‹ค์Šต

png

png

png

infra container(pause) ์ดํ•ดํ•˜๊ธฐ

  • pod๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ•จ๊ป˜ ์ƒ์„ฑ๋˜๋ฉฐ, pod์˜ ip, hostname ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

png

static Pod ๋งŒ๋“ค๊ธฐ

  • API ์„œ๋ฒ„์—†์ด ํŠน์ • ๋…ธ๋“œ์— ์žˆ๋Š” kubelet Daemon ๋™์ž‘์— ์˜ํ•ด ์ง์ ‘ ๊ด€๋ฆฌ
  • /etc/kubernetes/manifests/ ๋””๋ ‰ํ† ๋ฆฌ์— k8s yaml ํŒŒ์ผ์„ ์ €์žฅ ์‹œ ์ ์šฉ๋จ

png

# API ๋„์›€์—†์ด kubelet Daemon์œผ๋กœ Pod ์‹คํ–‰
# static Pod path๋กœ ์ •์˜
# ์ •์˜๋œ ๊ณณ์— Pod yaml๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋™์ž‘ํ•œ๋‹ค.
$ cat /var/lib/kubelet/config.yaml 

Pod์— ๋ฆฌ์†Œ์Šค(cpu, memory) ํ• ๋‹นํ•˜๊ธฐ

  • Resource Requests
    • ํŒŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋ฆฌ์†Œ์Šค ์–‘์„ ์š”์ฒญ
  • Resource Limits
    • ํŒŒ๋“œ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฆฌ์†Œ์Šค ์–‘์„ ์ œํ•œ
    • Memory limit์„ ์ดˆ๊ณผํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ๋“œ๋Š” ์ข…๋ฃŒ(OOM kill)๋˜๋ฉฐ ๋‹ค์‹œ ์Šค์ผ€์ค„๋ง ๋œ๋‹ค.
    • OOM killer : out of Memory Killer ์˜ ์•ฝใ…๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ์—ญํ• 
    • CPU๋Š” Milicore๋‹จ์œ„ (1,000 Milicore = 1Core ) , Memory๋Š” Mbyte ๋‹จ์œ„๋กœ ํ• ๋‹น
  • https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/
  • ์˜ˆ๋ฅผ ๋“ค์–ด CPU request๋ฅผ 500ms๋กœ ํ•˜๊ณ , limit์„ 1000ms๋กœ ํ•˜๋ฉด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋Š” ์ฒ˜์Œ์— ์ƒ์„ฑ๋ ๋•Œ 500ms๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์— ์˜ํ•ด์„œ ๋” ํ•„์š”ํ•˜๋‹ค๋ฉด CPU๊ฐ€ ์ถ”๊ฐ€๋กœ ๋” ํ• ๋‹น๋˜์–ด ์ตœ๋Œ€ 1000ms ๊นŒ์ง€ ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค. png

png

png

Pod์— ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

png

์‹ค์Šต

png

png

Pod ๊ตฌ์„ฑ ํŒจํ„ด์˜ ์ข…๋ฅ˜

  • Sidecar : App container์—์„œ ์‹คํ–‰๋˜๋Š” log๋ฅผ sidecar์— ๋‹ด์•„์„œ ์ „์†กํ•จ.
  • Adapter : ์™ธ๋ถ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ Adapter๋กœ ๋Œ๊ณ ์™€ App container๋ฅผ ํ†ตํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹
  • Ambassador : ๋ฐ์ดํ„ฐ๊ฐ€ App container๋กœ ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ Ambassador๊ฐ€ ๋ฐ›์•„ ๊ทธ DB ์ž๋ฃŒ๋ฅผ ๋‹ค์–‘ํ•œ ๊ณณ์œผ๋กœ ์ „์†กํ•ด์ฃผ๋Š” ์—ญํ• 

png


Source

https://www.youtube.com/watch?v=0rYt3PcggzA&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=10

https://www.youtube.com/watch?v=ChArV14J6Ek&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=11

https://www.youtube.com/watch?v=-NeJS7wQu_Q&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=12

https://www.youtube.com/watch?v=ChArV14J6Ek&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=13

https://www.youtube.com/watch?v=qEu_znIYCz0&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=14

https://www.youtube.com/watch?v=lxCtyWPsb-0&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=15

https://www.youtube.com/watch?v=Uc-VnK19T7w&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=16

https://velog.io/@exljhun307/pod-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98-%EC%84%A4%EC%A0%95%EA%B3%BC-%EC%8B%A4%ED%96%89-%ED%8C%A8%ED%84%B4

https://bcho.tistory.com/1291