Node

Node๋ž€?

  • Kubernetes๋Š” container๋ฅผ pod ๋‚ด์— ๋ฐฐ์น˜ํ•˜๊ณ , node์—์„œ ์‹คํ–‰ํ•จ์œผ๋กœ์จ workload๋ฅผ ๊ตฌ๋™ํ•œ๋‹ค

  • node๋Š” cluster์— ๋”ฐ๋ผ ๊ฐ€์ƒ or ๋ฌผ๋ฆฌ์  ๋จธ์‹ ์ผ ์ˆ˜ ์žˆ๋‹ค

  • ๊ฐ node๋Š” control plane ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ pod๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•œ๋‹ค

  • node์˜ ์ปดํฌ๋„ŒํŠธ์—๋Š” kubelet, kube-proxy , ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ด ์žˆ๋‹ค

    โ†’ Cluster ์ฐธ๊ณ !

Node์˜ ๊ด€๋ฆฌ

Kubernetes API ์„œ๋ฒ„์— node๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค

  1. Node์˜ kubelet์œผ๋กœ control plane์— ์ž์ฒด ๋“ฑ๋ก

  2. ์‚ฌ์šฉ์ž (or ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž)๊ฐ€ node object๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€

Kubelet or node object๋กœ ๋“ฑ๋กํ•œ ํ›„ control plane์€ ์ƒ์„ฑ๋œ node object๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•œ๋‹ค

ex)

{
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": {
    "name": "10.240.79.157",
    "labels": {
      "name": "my-first-k8s-node"
    }
  }
}

Flow

  • Kubernetes๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ node object๋ฅผ ์ƒ์„ฑํ•œ๋‹ค

  • Kubernetes๋Š” kubelet ์ด node์˜ metadata.name ํ•„๋“œ์™€ ์ผ์น˜ํ•˜๋Š” API ์„œ๋ฒ„์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

    • node๊ฐ€ ์ •์ƒ์ด๋ฉด,

      • pod๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค

    • ์ •์ƒ์ด ์•„๋‹ˆ๋ฉด,

      • ํ•ด๋‹น node๋Š” ์ •์ƒ์ด ๋  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  cluster ํ™œ๋™์— ๋Œ€ํ•ด ๋ฌด์‹œ๋œ๋‹ค

๐Ÿ’ก Kubernetes๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ `node object` ๋ฅผ `์œ ์ง€` ํ•˜๊ณ , node๊ฐ€ `์ •์ƒ์ธ์ง€ ํ™•์ธ` ํ•œ๋‹ค

โ†’ ์ƒํƒœ ํ™•์ธ์„ ์ค‘์ง€ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž or ์ปจํŠธ๋กค๋Ÿฌ์—์„œ node object๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค

Node ์ด๋ฆ„์˜ ๊ณ ์œ ์„ฑ

  • ๋‘ node๋Š” ๋™์‹œ์— ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค

    • kubernetes๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋™์ผํ•œ ๊ฐ์ฒด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค!

  • Node์˜ ๊ฒฝ์šฐ, ๋™์ผํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ (ex. ๋„คํŠธ์›Œํฌ ์„ค์ •, root disk contents)์™€ node label๊ณผ ๊ฐ™์€ ๋™์ผํ•œ ์†์„ฑ ์„ ๊ฐ–๋Š”๋‹ค๊ณ  ์•”์‹œ์ ์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค

    • ๋งŒ์•ฝ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์ •๋œ ๊ฒฝ์šฐ, ์ด๋กœ ์ธํ•ด ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค!

    • ๋•Œ๋ฌธ์— ๋…ธ๋“œ๋ฅผ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ์กด node object๋ฅผ ๋จผ์ € API ์„œ๋ฒ„์—์„œ ์ œ๊ฑฐ ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ›„ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค!

Node์˜ ์ƒํƒœ

Node์˜ ์ƒํƒœ๋Š” ์•„๋ž˜์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค

  1. ์ฃผ์†Œ

  2. ์ปจ๋””์…˜

  3. ์šฉ๋Ÿ‰๊ณผ ํ• ๋‹น ๊ฐ€๋Šฅ์—ฌ๋ถ€

  4. ์ •๋ณด

Kubectl์„ ์ด์šฉํ•˜์—ฌ node ์ƒํƒœ์™€ ์„ธ๋ถ€ ์‚ฌํ•ญ ํ™•์ธํ•˜๊ธฐ

kubectl describe node <NODE_NAME>

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ๋˜๋Š” ์ •๋ณด๋Š” ์•„๋ž˜๊ณผ ๊ฐ™์ด ์ฃผ์†Œ, ์ปจ๋””์…˜, ์šฉ๋Ÿ‰๊ณผ ํ• ๋‹น ๊ฐ€๋Šฅ์—ฌ๋ถ€, ์ •๋ณด์ด๋‹ค.

์ฃผ์†Œ

addresses ํ•„๋“œ๋Š” cloud provider or bare metal ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค

  • HostName

    • ๋…ธ๋“œ์˜ ์ปค๋„์— ์˜ํ•ด ์•Œ๋ ค์ง„ ํ˜ธ์ŠคํŠธ๋ช…์ด๋‹ค

    • -hostname-override parameter๋ฅผ ํ†ตํ•ด ์น˜ํ™˜๋  ์ˆ˜ ์žˆ๋‹ค

  • ExternalIP

    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋…ธ๋“œ์˜ IP ์ฃผ์†Œ๋Š” ์™ธ๋ถ€๋กœ ๋ผ์šฐํŠธ ๊ฐ€๋Šฅํ•˜๋‹ค

    • ์ฆ‰, ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค

  • InternalIP

    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋…ธ๋“œ์˜ IP ์ฃผ์†Œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ๋งŒ ๋ผ์šฐํŠธ ๊ฐ€๋Šฅํ•˜๋‹ค

์ปจ๋””์…˜

conditions field๋Š” ๋ชจ๋“  Running ์ƒํƒœ์˜ node๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค

๋…ธ๋“œ ์ปจ๋””์…˜
์„ค๋ช…

Ready

๋…ธ๋“œ๊ฐ€ ์ƒํƒœ ์–‘ํ˜ธํ•˜๋ฉฐ ํŒŒ๋“œ๋ฅผ ์ˆ˜์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ True, ๋…ธ๋“œ์˜ ์ƒํƒœ๊ฐ€ ๋ถˆ๋Ÿ‰ํ•˜์—ฌ ํŒŒ๋“œ๋ฅผ ์ˆ˜์šฉํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ False, ๋…ธ๋“œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋งˆ์ง€๋ง‰ node-monitor-grace-period (๊ธฐ๋ณธ๊ฐ’ 40 ๊ธฐ๊ฐ„ ๋™์•ˆ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ) Unknown

DiskPressure

๋””์Šคํฌ ์‚ฌ์ด์ฆˆ ์ƒ์— ์••๋ฐ•์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ๋””์Šคํฌ ์šฉ๋Ÿ‰์ด ๋„‰๋„‰์น˜ ์•Š์€ ๊ฒฝ์šฐ True, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ False

MemoryPressure

๋…ธ๋“œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์••๋ฐ•์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ๋…ธ๋“œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋„‰๋„‰์น˜ ์•Š์€ ๊ฒฝ์šฐ True, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ False

PIDPressure

ํ”„๋กœ์„ธ์Šค ์ƒ์— ์••๋ฐ•์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ๋…ธ๋“œ ์ƒ์— ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ True, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ False

NetworkUnavailable

๋…ธ๋“œ์— ๋Œ€ํ•ด ๋„คํŠธ์›Œํฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ True, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ False

์šฉ๋Ÿ‰๊ณผ ํ• ๋‹น ๊ฐ€๋Šฅ ์—ฌ๋ถ€

  • node ์ƒ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

    • ๋ฆฌ์†Œ์Šค์—๋Š” CPU, ๋ฉ”๋ชจ๋ฆฌ ๊ทธ๋ฆฌ๊ณ  node ์ƒ์œผ๋กœ ์Šค์ผ€์ค„ ๋˜์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ pod ์ˆ˜๊ฐ€ ์žˆ๋‹ค

  • ์šฉ๋Ÿ‰ ๋ธ”๋ก์˜ ํ•„๋“œ๋Š” node์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ด๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ธ๋‹ค

    • ํ• ๋‹น๊ฐ€๋Šฅ ๋ธ”๋ก์€ ์ผ๋ฐ˜ pod์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” node์˜ ๋ฆฌ์†Œ์Šค ์–‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค

์ •๋ณด

  • ์ปค๋„ ๋ฒ„์ „, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „ (kubelet๊ณผ kube-proxy ๋ฒ„์ „), ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ƒ์„ธ ์ •๋ณด ๋ฐ ๋…ธ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์šด์˜ ์ฒด์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ๊ฐ™์€ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๊ฐ€ ๊ธฐ์ˆ ๋œ๋‹ค

    • ์ด ์ •๋ณด๋Š” kubelet์ด node์—์„œ ์ˆ˜์ง‘ํ•˜์—ฌ kubernetes API๋กœ ์ „์†กํ•œ๋‹ค

Last updated

Was this helpful?