Static Pods

Yu Sang Minยท2025๋…„ 5์›” 28์ผ

CKA

๋ชฉ๋ก ๋ณด๊ธฐ
22/110
post-thumbnail

๐Ÿ“Œ Static Pods

  • kubelet ์€ kube-apiserver์— ์˜์กดํ•ด ๋…ธ๋“œ์—์„œ ๋กœ๋“œํ•  pod์—๋Œ€ํ•œ ์ง€์‹œ๋ฅผ ๋ฐ›์Œ
  • ์ด๋Š” kube-scheduler์˜ ๊ฒฐ์ •์— ๊ทผ๊ฑฐํ•œ ๊ฒƒ์œผ๋กœ etcd-cluster(๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ)์— ์ €์žฅ๋จ
  • ๋งŒ์•ฝ kube-apiserver ๋‚˜ kube-scheduler controller, etcd-cluster๊ฐ€ ์—†๋‹ค๋ฉด?
  • ๋˜๋Š” master node๊ฐ€ ์—†๋‹ค๋ฉด?

๐Ÿงญ kubelet์€ node๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • worker node์—๋Š” kubelet๊ณผ docker๊ฐ€ ์žˆ๋‹ค
  • kube-apiserver๋Š” ์—†๋‹ค
  • kubelet๊ฐ€ ์•„๋Š”๊ฑด pod๋ฅผ ๋งŒ๋“œ๋Š”๊ฒƒ ๋ฟ
  • ํ•˜์ง€๋งŒ pod์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  kube-apiserver๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • pod๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ (yamlํŒŒ์ผ)์ด ์žˆ์–ด์•ผํ•œ๋‹ค.
  • /etc/kubernetes/manifests ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ†ตํ•ด pod์˜ Definition ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— pod ์ •์˜ ํŒŒ์ผ์„ ๋„ฃ์œผ๋ฏ€๋กœ์„œ static pod ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • kubelet์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ณ  ์ฝ๊ณ  ํ˜ธ์ŠคํŠธ์— pod๋ฅผ ๋งŒ๋“ ๋‹ค.
  • pod ์ƒ์„ฑ ๋ฟ ์•„๋‹ˆ๋ผ ์ฃฝ์ง€ ์•Š๋„๋ก ๋ณด์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ •์˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด kubelet์ด ์ฆ‰์‹œ ์ˆ˜์ •ํ•œ๋‹ค.
  • ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ •์˜ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋ฉด kubelet์ดpod๋ฅผ ์ฆ‰์‹œ ์‚ญ์ œํ•œ๋‹ค.

๐Ÿ‘‰Static Pods

  • kubelet ์Šค์Šค๋กœ ๋งŒ๋“  ์ด pod๋Š” api-server์˜ ๊ฐ„์„ญ์ด๋‚˜ ๋‚˜๋จธ์ง€ K8S ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์š”์†Œ์˜ ๊ฐ„์„ญ์ด ์—†๋‹ค
  • ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์— Definition ํŒŒ์ผ์„ ์ค€๋‹ค๊ณ  ReplicaSet์ด๋‚˜ Deployment๋Š” ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.
  • ์‚ฌ์‹ค kubelet์˜ ์˜ต์…˜์œผ๋กœ static pods๋ฅผ ์ƒ์„ฑํ•  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
# kubelet.service ์˜ต์…˜์œผ๋กœ ๊ฒฝ๋กœ static pods ๊ฒฝ๋กœ ์„ค์ •

ExecStart=/usr/local/bin/kubelet
<์ค‘๋žต>
  --pod-manifest-path=/etc/Kubernetes/manifest \\
<์ค‘๋žต..>
# kubelet.service config ์˜ต์…˜์œผ๋กœ ๊ตฌ์„ฑํŒŒ์ผ์— ๊ฒฝ๋กœ ์„ค์ •

ExecStart=/usr/local/bin/kubelet
<์ค‘๋žต>
  --config=kubeconfig.yaml \\
<์ค‘๋žต..>

# kubeconfig.yaml
staticPodPath: /etc/Kubernetes/manifests
  • kubeadm์— ์…‹์—…ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ด์™€๊ฐ™์€ config ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ
  • ์ด๋ฅผ ํ™•์ธํ•˜๋ฉด static pod์˜ ์ •์˜ํŒŒ์ผ์ด ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ๊ฒฝ๋กœ๋ฅผ ์•Œ ์ˆ˜์žˆ๋‹ค.

โš™๏ธ static pod ์ƒ์„ฑ

๐Ÿ’ก์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์ „

  • docker ps ๋ช…๋ น ์‹คํ–‰, (ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์ „ static pod ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ)
  • kubectl ๋ช…๋ น์€ kube-apiServer์™€ ์ž‘๋™ํ•œ๋‹ค.

โš’๏ธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ํ›„

  • ๋…ธ๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€์ผ ๋•Œ๋Š”?
  • pod๋ฅผ ๋งŒ๋“ค๋ผ๊ณ  kubelet ์— ์š”์ฒญํ•˜๋Š” api-server๊ฐ€ ์žˆ์„๋•Œ๋ฅผ ๊ฐ€์ •
  • kubelet์€ ๋‘ ์ข…๋ฅ˜์˜ pod๋ฅผ ๋™์‹œ์— ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ๊ฐ€๋Šฅํ•˜๋‹ค
  1. static pod ํด๋”์—์„œ ์ •์˜ ํŒŒ์ผ์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜๊ณ 
  2. HTTP API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ด์šฉํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • apiserver๊ฐ€ kubelet์— ์ž…๋ ฅ์„ ์ œ๊ณต๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

โ“Kube-ApiServer๊ฐ€ Static Pod๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

  • api์„œ๋ฒ„๋Š” kubelet์ด ๋งŒ๋“  static pod๋ฅผ ์ธ์ง€ํ•œ๋‹ค.
  • kubelet์ด static pod๋ฅผ ๋งŒ๋“ค๋•Œ ๊ทธ๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ ๊ฐœ์ฒด์— ์†ํ•ด์žˆ๋‹ค๋ฉด ์ฝ๊ธฐ์ „์šฉ๊ณผ ๊ฐ™์•„์„œ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ api-server๊ฐ€ static pod๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†๋‹ค.
  • ์˜ค์ง ํ•ด๋‹น๋…ธ๋“œ์˜ manifest ํด๋”์—์„œ์˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿค” ์™œ static pod๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

  • static pod๋ฅผ ์ด์šฉํ•ด control plane(master node)์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋…ธ๋“œ์— ์žˆ๋Š” ํฌ๋“œ ์ฒ˜๋Ÿผ ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ตฌ์„ฑ์š”์†Œ
    • api-server
    • controller-manager
    • etcd
  • ์œ„ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋ชจ๋‘ podํ˜•ํƒœ๋กœ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ๋ฐฐํฌ๋˜์–ด ์žˆ๋‹ค.
  • /etc/kubernetes/manifests ํด๋”์— yaml ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ •์˜ ๋˜์–ด์žˆ๋‹ค.

๐Ÿš€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋ ๊นŒ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Œ

  • ์ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋œ๋‹ค ํ•˜๋”๋ผ๋„ static pod ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ํ•ด๋‹น ๋…ธ๋“œ์— ์žฌ์‹œ์ž‘ ํ•œ๋‹ค.
$ kubectl get pods -n kube-system
  • ์œ„ ๋ช…๋ น์–ด๋กœ control-plane์— ์ƒ์„ฑ๋œ ์š”์†Œ๋ฅผ pod๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

โš”๏ธ static Pods vs DaemonSets

  • DaemonSets์€ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•จ
  • ๋ฐ˜๋ฉด static pod๋Š” kubelet์ด ์ง์ ‘ ๋งŒ๋“ ๋‹ค (kube-apiserver ๋‚˜ K8S control-plane์˜ ๋‹ค๋ฅธ ๋ฐฉํ•ด์š”์†Œ๋Š” ์—†๋‹ค)
  • static pod๋Š” control plane์˜ ๊ตฌ์„ฑ์š”์†Œ ์ž์ฒด๋ฅผ ๋ฐฐํฌํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ
  • ๊ณตํ†ต์ ์€ kube-Scheduler์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ์ 
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

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