CKA-6์ผ์ฐจ

YeJi Kimยท2023๋…„ 2์›” 20์ผ
0

CKA

๋ชฉ๋ก ๋ณด๊ธฐ
6/15

๐Ÿ“ CKA 6์ผ์ฐจ
๐Ÿ“ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 62-75




63. Solution - Node Affinity

Node์— label์„ ์ ์šฉํ•˜๋Š” ๋ช…๋ น์–ด


Node์— Taints๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด


vi ํ™˜๊ฒฝ์—์„œ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ์ค„์„ shiftํ•˜๊ธฐ ์œ„ํ•ด์„œ 'V + ์—ฌ๋Ÿฌ์ค„ ๋งˆ์šฐ์Šค๋กœ ๋“œ๋ž˜๊ทธ'ํ•˜๋ฉด ๋œ๋‹ค.


nodeAffinity ์ •์˜




64. Taints and Toleration vs Node Affinity

๋นจ๊ฐ•, ํŒŒ๋ž‘, ์ดˆ๋ก, ๊ธฐํƒ€ ๋…ธ๋“œ๋“ค์ด ์žˆ๊ณ  ์ด์— ๋งž์ถฐ ๋นจ๊ฐ•, ํŒŒ๋ž‘, ์ดˆ๋ก, ๊ธฐํƒ€ ํŒŒ๋“œ๋“ค์ด ์กด์žฌํ•œ๋‹ค.
๊ฐ ๋…ธ๋“œ์— ๋™์ผํ•œ ์ƒ‰์˜ ํŒŒ๋“œ๋“ค์ด ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•œ๋‹ค.(๋นจ๊ฐ• ๋…ธ๋“œ - ๋นจ๊ฐ• ํŒŒ๋“œ, ํŒŒ๋ž€ ๋…ธ๋“œ - ํŒŒ๋ž€ ํŒŒ๋“œ, ์ดˆ๋ก ๋…ธ๋“œ - ์ดˆ๋ก ํŒŒ๋“œ)


์ด๋ฅผ Taints์™€ Toleration์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Node์— Taint๋ฅผ, Pod์— Toleration์„ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Taints๊ฐ€ ์—†๋Š” ๊ธฐํƒ€ ํŒŒ๋“œ๋“ค์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— Pod๋“ค์ด ๋™์ผํ•œ ์ƒ‰์„ ๊ฐ€์ง„ Node์—๋งŒ ๋ฐฐํฌ๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.


์ด๋ฒˆ์—๋Š” Node Affinity๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž.
Node Affinity๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋“ค์— ๋ผ๋ฒจ์„ ๋ถ™์ธ ๋‹ค์Œ ํŒŒ๋“œ์˜ nodeAffinity๋ฅผ ์„ค์ •ํ•ด์„œ ์›ํ•˜๋Š” ๋ผ๋ฒจ์˜ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋„ ๊ธฐํƒ€ ํŒŒ๋“œ๊ฐ€ ์ƒ‰์ƒ ๋ผ๋ฒจ์ด ์ง€์ •๋˜์–ด์žˆ๋Š” ๋…ธ๋“œ์— ๋ฐฐ์น˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.


Taints/Toleration๊ณผ Node Affinity๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํŒŒ๋“œ์— ๋…ธ๋“œ๋ฅผ ์™„์ „ํžˆ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฒ˜์Œ์—๋Š” Taints์™€ Toleration์„ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ํŒŒ๋“œ๊ฐ€ ์šฐ๋ฆฌ ๋…ธ๋“œ์— ๋†“์ด๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.
๊ทธ๋ฆฌ๊ณ  Node Affinity๋ฅผ ์ด์šฉํ•ด ํŒŒ๋“œ๊ฐ€ ๊ฐ ๋ผ๋ฒจ์„ ๊ฐ€์ง„ ๋…ธ๋“œ์— ๋ฐฐ์น˜๋˜๋„๋ก ํ•œ๋‹ค.




65. Resource Requirements and Limits

๋‹ค์Œ์€ 3๊ฐœ์˜ ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ง„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์ด๋‹ค.
๊ฐ ๋…ธ๋“œ์—” CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋งŒํผ ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค.


ํŒŒ๋“œ๊ฐ€ ๋…ธ๋“œ์— ๋†“์ผ ๋•Œ๋งˆ๋‹ค ๊ทธ ๋…ธ๋“œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•œ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํŒŒ๋“œ๊ฐ€ ์–ด๋А ๋…ธ๋“œ๋กœ ๊ฐˆ์ง€ ๊ฒฐ์ •ํ•  ๋•Œ ํŒŒ๋“œ๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ์–‘๊ณผ ๋…ธ๋“œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค์˜ ์–‘์„ ๊ณ ๋ คํ•œ๋‹ค.
๋…ธ๋“œ์— ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํ•ด๋‹น ๋…ธ๋“œ์— ํŒŒ๋“œ๋ฅผ ๋†“๋Š” ๊ฒƒ์„ ํ”ผํ•œ๋‹ค.
๋งŒ์•ฝ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ํŒŒ๋“œ์˜ ๋ฐฐํฌ๋ฅผ ๋ณด๋ฅ˜ํ•œ๋‹ค.


ํŒŒ๋“œ๋ฅผ ์ •์˜ํ•  ๋•Œ resources ์˜์—ญ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.


์œ„์˜ ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์˜ resources ์˜์—ญ์— ์ž‘์„ฑํ•œ 1๊ฐœ์˜ cpu๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ํ•˜๋‚˜์˜ CPU๋ฅผ ๋งํ•œ๋‹ค.


๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋„์ปค ์„ธ๊ณ„์—์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ๋…ธ๋“œ์—์„œ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ํ•œ๊ณ„๊ฐ€ ์—†๋‹ค.
๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ–ฅ์„ ์ค„๋งŒํผ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํŒŒ๋“œ์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์—๋Š” ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ ํŠน๋ณ„ํžˆ ํŒŒ๋“œ์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์„ ์ œํ•œํ•˜์ง€ ์•Š์œผ๋ฉด ํ•˜๋‚˜์˜ ํŒŒ๋“œ๋Š” 1 vCPU, 512 Mi์˜ ๊ธฐ๋ณธ ํ•œ๋„๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
๋งŒ์•ฝ ๊ธฐ๋ณธ ํ•œ๋„๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์˜ resources ์˜์—ญ์— ํ•œ๋„(limits)๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.


ํŒŒ๋“œ์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค requests์™€ limits์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

ํŒŒ๋“œ๊ฐ€ ์ง€์ •๋œ ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์ž์›์„ ์†Œ๋น„ํ•˜๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?
CPU์˜ ๊ฒฝ์šฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ CPU๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ์ง€์ • ํ•œ๋„๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ปจํ…Œ์ด๋„ˆ๋Š”
ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฒฝ์šฐ, ํŒŒ๋“œ๊ฐ€ ์ž์‹ ์˜ ํ•œ๋„๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋ชจํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ทธ ํŒŒ๋“œ๋Š” ์ฆ‰์‹œ ์ข…๋ฃŒ๋œ๋‹ค.




66. Note on default resource requirements and limits

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋“ค๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•œ ๋‹ค์Œ LimitRange๋ฅผ ์ •์˜ํ•˜๋Š” manifest file์„ ์ž‘์„ฑํ•ด์„œ default limits๊ณผ default requests๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ์˜ default limits๊ณผ default requests๋ฅผ ์ •์˜ํ•˜๋Š” LimitRange manifest file

  • CPU์˜ default limits๊ณผ default requests๋ฅผ ์ •์˜ํ•˜๋Š” LimitRange manifest file




67. A quick note on editing PODs and Deployments

์•„๋ž˜ ์ด์™ธ์˜ ์‚ฌํ•ญ๋“ค์€ edit pod๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  • spec.containers[*].image
  • spec.initContainers[*].image
  • spec.activeDeadlineSeconds
  • spec.tolerations

๋”ฐ๋ผ์„œ, ์ž‘๋™ ์ค‘์ธ pod์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋ฆฌ์†Œ์Šค ์ œํ•œ ๋“ฑ์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์œผ๋ฉด kubectl edit ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ํŽธ์ง‘์ฐฝ์„ ์—ด๊ณ  ์ˆ˜์ •ํ•œ ๋‹ค์Œ, ํŒŒ์ผ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•ด์„œ ์ž„์‹œ ํŒŒ์ผ์— ๋ถ™์—ฌ ๋„ฃ๊ณ  ๊ธฐ์กด์˜ pod๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ž„์‹œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํŒŒ๋“œ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๋˜๋Š” kubectl get pod webapp -o yaml > my-new-pod.yaml ๋ช…๋ น์–ด๋กœ ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ˆ˜์ •ํ•œ ๋‹ค์Œ, ๊ธฐ์กด์˜ ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ๋กœ ํŒŒ๋“œ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.


ํŒŒ๋“œ์™€ ๋‹ฌ๋ฆฌ, Deployments๋Š” ์ •์˜ ํŒŒ์ผ์˜ ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ ์˜์—ญ์—์„œ ์•„๋ฌด ํ•„๋“œ๋‚˜ ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๋‹ค.
๋”ฐ๋ผ์„œ, kubectl edit deployment my-deployment ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ธฐ์กด์˜ ํŒŒ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ์šด ํŒŒ๋“œ๊ฐ€ ์žฌ์ƒ์„ฑ๋œ๋‹ค.




69. Solution: Resource Limits

ํŒŒ๋“œ์˜ ํ˜„์žฌ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์›์ธ์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” kubectl describe ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด pod์˜ ๋งˆ์ง€๋ง‰ ์ƒํƒœ์™€ ๊ทธ์— ๋Œ€ํ•œ ์ด์œ ๋ฅผ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
OOMKilled๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.


kubectl replace --force ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ญ์ œ์™€ ์žฌ์ƒ์„ฑ์„ ํ•œ๋ฒˆ์— ํ•ด์ค€๋‹ค.




70. DaemonSets

๋ฐ๋ชฌ์…‹์€ ReplicaSet ๊ฐ™์€ ๊ฒƒ์ด๋‹ค.
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค ํŒŒ๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.
ํ•˜์ง€๋งŒ ReplicaSet๊ณผ ๋‹ฌ๋ฆฌ, ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ๋งˆ๋‹ค ํŒŒ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•œ๋‹ค.
ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒˆ ๋…ธ๋“œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ํŒŒ๋“œ ๋ณต์ œ๋ณธ์ด ์ž๋™์œผ๋กœ ํ•ด๋‹น ๋…ธ๋“œ์— ์ถ”๊ฐ€๋œ๋‹ค.
๋…ธ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ํŒŒ๋“œ๋Š” ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋œ๋‹ค.

์ฆ‰, ๋ฐ๋ชฌ์…‹์€ ํŒŒ๋“œ์˜ ๋ณต์‚ฌ๋ณธ์„ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ๋…ธ๋“œ์— ํ•ญ์ƒ ์กด์žฌํ•˜๊ฒŒ ํ•œ๋‹ค.


๋ฐ๋ชฌ์…‹์€ Monoitoring Solution์ด๋‚˜ Logs Viewer๋ฅผ ํŒŒ๋“œ์˜ ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•˜๊ธฐ์— ์ตœ์ ์ด๋‹ค.
๋ฐ๋ชฌ์…‹์ด ์•Œ์•„์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋Ÿฌ์Šคํ„ฐ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ๋…ธ๋“œ์—์„œ ํ•ด๋‹น ํŒŒ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.


ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ๋…ธ๋“œ์— ํ•„์š”ํ•œ kube-proxy์™€ wave-net๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํ‚น ์†”๋ฃจ์…˜์€ ๋ฐ๋ชฌ์…‹์˜ ์ข‹์€ ์˜ˆ์‹œ์ด๋‹ค.

๋ฐ๋ชฌ์…‹ ์ •์˜ ํŒŒ์ผ์„ ํ†ตํ•ด ๋ฐ๋ชฌ์…‹์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ๋ชฌ์…‹ ์ •์˜ ํŒŒ์ผ์€ ๋ ˆํ”Œ๋ฆฌ์นด์…‹ ์ •์˜ ํŒŒ์ผ๊ณผ ๋ชน์‹œ ํก์‚ฌํ•˜๋‹ค.

๋ฐ๋ชฌ์…‹์„ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.


์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „ 1.2 ์ด์ „์—๋Š” nodeName์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ๋ชฌ์…‹์ด ๋™์ž‘ํ–ˆ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „ 1.2 ๋ถ€ํ„ฐ๋Š” nodeAffinity์™€ default scheduler๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ๋ชฌ์…‹์„ ๊ฐ ๋…ธ๋“œ์— ์Šค์ผ€์ค„๋งํ•œ๋‹ค.




72. Solution - DaemonSets

DaemonSet ์ •์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ Deployment ์ •์˜ ํŒŒ์ผ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
Deployment ์ •์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ๋‹ค์Œ, kind ํ•„๋“œ๋ฅผ DaemonSet์„ ๋ณ€๊ฒฝํ•˜๊ณ  replicas ๋“ฑ ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋œ๋‹ค.




73. Static Pods

๊ฐ•์˜ ์ดˆ๋ฐ˜์— ์ด์•ผ๊ธฐํ–ˆ๋“ฏ์ด kubelet์€ kubeAPI ์„œ๋ฒ„์— ์˜์กดํ•ด ๋…ธ๋“œ์— ํŒŒ๋“œ๋ฅผ ๋ฐฐํฌํ•œ๋‹ค.
์ด๋Š” ETCD ํด๋Ÿฌ์Šคํ„ฐ์— ์ €์žฅ๋œ kube-scheduler์˜ ๊ฒฐ์ •์— ๊ธฐ์ดˆํ•œ๋‹ค.


API ์„œ๋ฒ„๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ฐœ์ž… ์—†์ด kubelet์€ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘” ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์„ ์ฝ์–ด์„œ ์Šค์Šค๋กœ Static Pod๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
kubelet์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๊ณ  ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์„ ์ฝ๊ณ  ํ˜ธ์ŠคํŠธ์— ํŒŒ๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค. ํŒŒ๋“œ๋ฅผ ๋งŒ๋“ค ๋ฟ ์•„๋‹ˆ๋ผ ํŒŒ๋“œ์˜ ์ƒ์กด์„ ๋ณด์žฅํ•œ๋‹ค. kubelet์€ Static pod๊ฐ€ ๋‹ค์šด๋˜๋ฉด Static pod์„ ์žฌ์‹œ์ž‘ํ•˜๊ณ  ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์ด ์ˆ˜์ •๋˜๋ฉด ํŒŒ๋“œ๋ฅผ ์žฌ์ฐฝ์กฐํ•˜๋ฉฐ ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์ด ์‚ญ์ œ๋˜๋ฉด ํŒŒ๋“œ๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค.
๋‹ค๋ฅธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค๋“ค์€ kubelet์„ ํฌํ•จํ•œ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋„์›€์ด ์žˆ์–ด์•ผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, kubelet์€ ๋ ˆํ”Œ๋ฆฌ์นด์…‹, ๋””ํ”Œ๋กœ์ด๋จผํŠธ, ์„œ๋น„์Šค ๋“ฑ์€ ๋งŒ๋“ค ์ˆ˜ ์—†๊ณ  Static Pod๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.


Static Pod๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์œ„์น˜๋Š” kubelet.service์˜ ์˜ต์…˜์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

๋˜๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ kubelet.service์˜ ์˜ต์…˜์œผ๋กœ ์ง์ ‘ ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋Œ€์‹  ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜๋ฅผ ์ €์žฅํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
kubeadm ํˆด์€ ํ›„์ž์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.


Static Pod๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด docker ps ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Static Pod๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
kubectl ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋‚˜๋จธ์ง€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
kubectl ์ปค๋งจ๋“œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” kube API ์„œ๋ฒ„์™€ ์ž‘๋™ํ•œ๋‹ค.


kubelet์€ Static Pod ์ •์˜ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ kube-api server๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๊ฐ’์„ ์ œ๊ณต๋ฐ›์•„ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
kube-api server๋Š” kubelet์ด ๋งŒ๋“  static pod๋ฅผ ์ธ์‹ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ kubectl ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํŒŒ๋“œ๋ฅผ ์กฐํšŒํ•˜๋ฉด ๋‹ค๋ฅธ ํŒŒ๋“œ๋“ค๊ณผ ๋™์ผํ•˜๊ฒŒ static pod๊ฐ€ ์กฐํšŒ๋œ๋‹ค.
์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” kubelet์ด static pod๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด kube-api server์— ๋ฏธ๋Ÿฌ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
kube-api sever์—์„œ ๋ณด์ด๋Š” ๋ฏธ๋Ÿฌ ๊ฐœ์ฒด๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค. ํŒŒ๋“œ์— ๋Œ€ํ•œ ์„ธ๋ถ€์‚ฌํ•ญ์€ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ํŒŒ๋“œ์ฒ˜๋Ÿผ ํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด Static Pod๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?
Static Pod๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค control plane์— ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Static Pod๋ฅผ ์ด์šฉํ•ด์„œ control plane์— ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์„œ๋น„์Šค ์ถฉ๋Œ์„ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์„œ๋น„์Šค๊ฐ€ ๊ณ ์žฅ๋‚˜๋ฉด kubelet์ด ์ž๋™์ ์œผ๋กœ ์žฌ๊ฐ€๋™ํ•ด์ค€๋‹ค.
์ด ๋ฐฉ๋ฒ•์ด kubeadm ํˆด์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ทธ๋ž˜์„œ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ํŒŒ๋“œ๋ฅผ ์กฐํšŒํ•  ๋•Œ control plane์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.


๋ฐ๋ชฌ์…‹์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๋ฐ๋ชฌ์…‹์€ kube-api server๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ๋‹ค.

๋ฐ˜๋ฉด์— Static Pod๋Š” kube-api server๋‚˜ control plane์˜ ๋ฐฉํ•ด ์—†์ด kubelet์ด ์ง์ ‘ ์ƒ์„ฑํ•œ๋‹ค. ๋˜ํ•œ Static Pod์€ control plane์˜ ๊ตฌ์„ฑ์š”์†Œ ์ž์ฒด๋ฅผ ๋ฐฐํฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

kube-scheduler๋Š” ๋ฐ๋ชฌ์…‹๊ณผ Static Pod์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.




75. Solution - Static Pods

Static Pod๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํŒŒ๋“œ์˜ ์ด๋ฆ„์„ ๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ํŒŒ๋“œ์˜ ์ด๋ฆ„ ๋์— ๋…ธ๋“œ ์ด๋ฆ„์ด ๋“ค์–ด ์žˆ์œผ๋ฉด Static Pod์ด๋‹ค.
๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ kubectl get ํŒŒ๋“œ๋ช… -o yaml ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํŒŒ๋“œ์˜ ownerRefrences ์˜์—ญ์˜ kind์™€ name ํ•„๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ์†Œ์œ ์ฃผ๊ฐ€ ๋…ธ๋“œ์ด๋ฉด Static Pod์ด๋‹ค.


Static Pod ์ •์˜ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.




Static Pod๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Static Pod ์ •์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋””๋ ‰ํ„ฐ๋ฆฌ์— Static Pod ์ •์˜ ํŒŒ์ผ์„ ์˜ฎ๊ธฐ๋ฉด ๋œ๋‹ค.


Static Pod๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Static Pod ์ •์˜ ํŒŒ์ผ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.


kubectl delete pod ๋ช…๋ น์œผ๋กœ Static Pod๋ฅผ ์‚ญ์ œํ•˜๋ฉด Static Pod๊ฐ€ ๊ณง๋ฐ”๋กœ ์žฌ์ƒ์„ฑ๋œ๋‹ค.
'static-greenbox-node01' Static Pod๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ Static Pod ์ •์˜ ํŒŒ์ผ์„ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.
์•„๋ž˜์˜ ๊ฒฝ์šฐ, Static Pod๊ฐ€ node01์— ์ƒ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ssh {IP} ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ node01์— ์ ‘์†ํ•˜๊ณ  ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ Static Pod ์ •์˜ ํŒŒ์ผ์„ ์‚ญ์ œํ•œ๋‹ค.





profile
์ด์ „์˜ ๊ธฐ๋ก๋“ค ๐Ÿ‘‰ https://blog.naver.com/reviewerkyj

0๊ฐœ์˜ ๋Œ“๊ธ€