๐ŸŒฑ ์ธํ”„๋Ÿฐ/โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ)

(8) Component ๋™์ž‘์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ

mallin 2025. 6. 8. 14:40

โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ) - Spring 1, 2 ์„ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ณต์Šต ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

 

1. ์ „์ฒด ๊ฐœ์š”

์ถœ์ฒ˜URL : https://inf.run/k7mF

 

1-1. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์ถ• ๊ฐœ์š”

  1. VM์— ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ƒ์„ฑ
    1. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๋ฅผ ์ œ์–ดํ•˜๋Š” ์ค‘์‹ฌ ๋…ธ๋“œ
  2. ๋‹ค์Œ ๊ตฌ์„ฑ์š”์†Œ ์„ค์น˜
    1. kubectl : CLI ๋„๊ตฌ, API ํ˜ธ์ถœ์šฉ
    2. kubeadm : ํด๋Ÿฌ์Šคํ„ฐ ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐํ™” ๋„๊ตฌ
    3. kubelet : ๊ฐ ๋…ธ๋“œ์—์„œ Pod๋ฅผ ์‹คํ–‰/๊ด€๋ฆฌ
    4. container runtime : ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ๊ธฐ (ex: contianerd)
  3. ํด๋Ÿฌ์Šคํ„ฐ ์ดˆ๊ธฐํ™”
    1. kubeadm init ๋ช…๋ น์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ
    2. ๋‚ด๋ถ€์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑํ•˜๋Š” Pod ์ •์˜ YAML ์„ ์‹คํ–‰ํ•˜์—ฌ Control Plane ๊ตฌ์„ฑ

 

1-2. ์›Œ์ปค ๋…ธ๋“œ ๊ตฌ์„ฑ

  • ๋‹ค๋ฅธ VM์„ ์›Œ์ปค ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
  • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ์„ค์น˜ํ–ˆ๋˜ ๊ตฌ์„ฑ์š”์†Œ์™€ ๋™์ผํ•œ ํˆด๋“ค ์„ค์น˜
  • kubeadm join ๋ช…๋ น์–ด๋กœ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์—ฐ๊ฒฐ
  • ์›Œ์ปค ๋…ธ๋“œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์กฐ์ธ๋˜๋ฉด, ์ž์‹ ๋งŒ์˜ ์ปดํฌ๋„ŒํŠธ ์˜์—ญ์ด ์ƒ์„ฑ
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋‘ ์›Œ์ปค ๋…ธ๋“œ์— ๋ฐฐํฌ
  • ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค

 

1-3. Addon Pod

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ํ™•์žฅ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ
  • metrics-server
  • coredns
  • calico
  • kubernates-dashbnoard

 

1-4. ์ธ์ฆ ๋ฐ ํ†ต์‹  ํ๋ฆ„

 

  • /root/.kube/config ํŒŒ์ผ์— ์ธ์ฆ ์ •๋ณด ์ €์žฅ๋จ
  • kubectl → kube-apiserver๋กœ ์š”์ฒญ ์ „์†ก
  • kube-apiserver → etcd์— ๋ฆฌ์†Œ์Šค(๊ฐ์ฒด) ๋ฐ์ดํ„ฐ ์ €์žฅ
  • etcd๋Š” Kubernetes์˜ ๋‹จ์ผ ์ €์žฅ์†Œ (Key-Value DB) ์—ญํ• 
    • Controller (ํƒ€ Controller ๋‚˜ Object ๋ฅผ ์ œ์–ด) : HPA, Deployment, ReplicaSet
    • Object (ํ•˜๋‚˜์˜ ์ธํ”„๋ผ ๊ฐœ๋…์œผ๋กœ ๋‹จ๋… ๊ธฐ๋Šฅ) : Service, Pod, Configmap, Secret, PVC
    • Controller ์™€ Object ๋ฅผ ํ•ฉ์ณ์„œ Resource ๋กœ ๋ถ€๋ฅธ๋‹ค
  • ์œ„ ๋ฆฌ์†Œ์Šค๋“ค์€ Control Plane Component ๋ผ๋Š” Pod ์— ์˜ํ•ด์„œ ๋™์ž‘
  • ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ๋Š” container d ๊ฐ€ ์ƒ์„ฑ
    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์š”์ฒญ๋งŒ

2. ๊ฐ ๋ฆฌ์†Œ์Šค๋ณ„ ๋™์ž‘ (Probe, Service, Secret, HPA)

2-1. Pod ์ƒ์„ฑ ๋ฐ probe

์ถœ์ฒ˜URL : https://inf.run/k7mF

  1. Deployment ์ƒ์„ฑ
    • ๋Œ€์‹œ๋ณด๋“œ๋‚˜ kubectl ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
  2. ๋˜‘๊ฐ™์ด kube-apiserver ๊ฐ€ API ๋ฅผ ๋ฐ›๋Š”๋‹ค
  3. etcd ๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  4. Deployment ๊ฐ€ ์กฐํšŒ๋˜๊ฑฐ๋‚˜ ๋Œ€์‹œ๋ณด๋“œ์— ๋‚˜ํƒ€๋‚œ๋‹ค
  5. kube-controller-manger๋Š” ๊ณ„์† Database ๋ชจ๋‹ˆํ„ฐ๋ง
  6. Deployment ๊ฐ€ ์กฐํšŒ๋˜๋ฉด, ReplicaSet์„ ์ƒ์„ฑํ•˜๋ผ๋Š” API
  7. ์ƒ์„ฑ๋œ ReplicaSet์„ ๋ณด๊ณ  Pod ๋ฅผ ์ƒ์„ฑํ•˜๋ผ๋Š” API ๋ฅผ ํ˜ธ์ถœ
    • Pod ๋ผ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งŒ๋“ค์–ด์ง
    • ์•„์ง ๋ฐ์ดํ„ฐ๋งŒ ์žˆ๋Š”๊ฑฐ์ง€ ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์€ ์•„๋‹˜
  8. kube-scheduler ๋Š” kube-apiserver๋ฅผ ํ†ตํ•ด ๋…ธ๋“œ ์ž์›์„ ๋ชจ๋‹ˆํ„ฐ๋ง
  9. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— Pod ๊ฐ€ ์žˆ๋Š”๊ฒŒ ํ™•์ธ → Pod ๋ฅผ ๋„์šธ ๋…ธ๋“œ๋ฅผ ์Šค์ผ€์ค„๋ง
    • Pod ์•ˆ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•ด๋†“์€ ๋‚ด์šฉ ์ฐธ๊ณ 
  10. kubelet ์ด kube-apiserver๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ๋…ธ๋“œ ์ •๋ณด๊ฐ€ ์žˆ๋Š” Pod๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง
    • ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด contianer runtime ์— ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์š”์ฒญ
  11. kubelet ์ด probe ์„ค์ •์— ๋งž๊ฒŒ ์ปจํ…Œ์ด๋„ˆ๋กœ ํ—ฌ์Šค์ฒดํฌ API ๋ฅผ ์ฃผ๊ธฐ์  ์š”์ฒญ

 

2-2. Service ๋™์ž‘

์ถœ์ฒ˜URL : https://inf.run/k7mF

  1. nodePort ํƒ€์ž…์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ›„ Pod ์— ์—ฐ๊ฒฐ
  2. kubelet ์ด kube-proxy ํ•œํ…Œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ
  3. kube-proxy ๋Š” iptables ์— ๋‚ด์šฉ ์ถ”๊ฐ€
    • ๋ฆฌ๋ˆ…์Šค๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํŒจํ‚ท ๊ด€๋ฆฌ
    • ์‚ฌ์šฉ์ž๊ฐ€ API ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋กœ ํŠธ๋ž˜ํ”ฝ ์ „๋‹ฌ
  4. calico ๊ฐ€ ํŠธ๋ž˜ํ”ฝ ์ „๋‹ฌ

 

2-3. Secret ๋™์ž‘

์ถœ์ฒ˜URL : https://inf.run/k7mF

  1. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํŒŒ์ผ๋“ค์€ ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋งˆ์šดํŒ…
    • ์œ„ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ „์› OFF ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๋Š” ์˜์—ญ
    • ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋””์Šคํฌ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ๋˜๋Š” ์ผ์ด ์ƒ๊ฒผ์„ ๋•Œ ๋ณต๊ตฌ๋ฅผํ•˜๋”๋ผ๋„ ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ๋ณต๊ตฌ X
    • ๋ˆ„๊ฐ€ ๋‚ด ๋””์Šคํฌ๋ฅผ ํƒˆ์ทจํ•ด๊ฐ€๋”๋ผ๋„ ๋ณด์•ˆ์— ์•ˆ์ „
  2. Secret ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์ด ๋งŒ๋“ค๋ฉด ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑ
  3. ๋‚ด์šฉ ์ˆ˜์ •์‹œ ๋ฐ”๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ , kubelet ์ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋ฉด ์—…๋ฐ์ดํŠธ
    • ์กฐ๊ธˆ์˜ ๋”œ๋ ˆ์ด๊ฐ€ ์žˆ๋‹ค

 

2-4. HPA ๋™์ž‘

์ถœ์ฒ˜URL : https://inf.run/k7mF

  1. ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์ž์› ์‚ฌ์šฉ๋Ÿ‰์€ containerd ๊ฐ€ ์•Œ๊ณ  ์žˆ๋‹ค
  2. kubelet ์ด CPU ์™€ Memory ๋ฅผ 10์ดˆ์— ํ•œ ๋ฒˆ์”ฉ ์กฐํšŒ
  3. metrics-server ๋ฅผ ์„ค์น˜ํ•ด์•ผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉ๋Ÿ‰ ์ˆ˜์ง‘ (60์ดˆ)
    • kube-controller-manager ๊ฐ€ HPA ์˜ ์ž„๊ณ„๊ฐ’ ๋ฐ ๋งคํŠธ๋ฆญ ํ™•์ธ (15์ดˆ)
    • ํ™•์ธ์— ๋”ฐ๋ผ ์Šค์ผ€์ผ๋ง ๋ฐœ์ƒ (๋ฐ˜์‘์‹œ๊ฐ„ : 1~85์ดˆ)

3. ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ ๋กœ๊ทธ ํ™•์ธ

3-1. ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ

 

โžก๏ธ Resource ํ™•์ธ

kubectl api-resources

  • ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ (NAME), ์•ฝ์–ด (SHORTNAMES), ๋ฒ„์ „ ์ •๋ณด (APIVERSION)
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค (NAMESPACE)
    • false ⇒ cluster level ์˜ ๋ฆฌ์†Œ์Šค

 

โžก๏ธ Cluster ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ ๋กœ๊ทธ ํ™•์ธ

// ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ ๋กœ๊ทธ ๋ณด๊ธฐ (kube-system)
kubectl get pods -n kube-system
kubectl logs -n kube-system etcd-k8s-master
kubectl logs -n kube-system kube-scheduler-k8s-master
kubectl logs -n kube-system kube-apiserver-k8s-master

 

์„ค์น˜๊ฐ€ ์ž˜ ๋œ ๊ฒฝ์šฐ์—๋Š” ํ™•์ธํ•ด๋ณผ ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค.

 

โžก๏ธ Master Node ํŒŒ์ผ ์œ„์น˜

// ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ธ์ฆ์„œ ์œ„์น˜
cd /etc/kubernetes
ls /root/.kube/config

⇒ /root/.kube/config

  • admin.conf ํŒŒ์ผ์ด kube-apiserver ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ
  • ์ด ์ธ์ฆ์„œ ๋‚ด์šฉ์„ /root/.kube/config ์œ„์น˜์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๋ณต์‚ฌ๋ฅผ ํ•ด๋†“์Œ
  • kubectl ์ด ์ด๊ฑธ ์ฐธ์กฐํ•ด์„œ API ๋ฅผ ํ˜ธ์ถœ
// Control Plane Component Pod ์ƒ์„ฑ yaml ํŒŒ์ผ ์œ„์น˜
ls /etc/kubernetes/manifests

⇒ etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml

  • Controler Plane Component ์„ ๋„์šธ yaml ํŒŒ์ผ๋“ค

 

// ์ „์ฒด Pod ๋กœ๊ทธ
/var/log/pods/<namespace_<pod-name>_<uid>/<number>.log
/var/log/containers/<pod-name>_<namespace>_<container-name>_<container-id>.log
cd /var/log/pods/
ls

  • /var/log/pods/ ์— ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์œ„์— ์˜ฌ๋ผ๊ฐ€๋Š” ๋ชจ๋“  Pod ๋“ค์˜ ๋กœ๊ทธ๊ฐ€ ์ €์žฅ
  • /var/log/containers/ ๋„ ์ปจํ…Œ์ด๋„ˆ ๋ณ„๋กœ๋„ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค
cd /var/log/pods/
ls -al

  • Pod ํด๋”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋งํฌ๋กœ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ๋‹ค

 

โžก๏ธ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ž˜ ์•ˆ๋˜๋Š”๊ฒŒ ์žˆ์„ ๋•Œ ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค์„ ๋‚ ๋ ค๋ณด๋ฉด ๋œ๋‹ค

 

kubelet ์ƒํƒœ ํ™•์ธ

systemctl status kubelet
journalctl -u kubelet | tail -10

 

containerd ์ƒํƒœ ํ™•์ธ

systemctl status containerd
journalctl -u containerd | tail -10

 

๋…ธ๋“œ ์ƒํƒœ ํ™•์ธ

kubectl get nodes -o wide
kubectl describe node k8s-master

 

Pod ์ƒํƒœ ํ™•์ธ

kubectl get pods -A -o wide

 

Event ํ™•์ธ (๊ธฐ๋ณธ๊ฐ’ : 1h)

kubectl get events -A
kubectl events -n anotherclass-123 --types=Warning

 

Log ํ™•์ธ

kubectl logs -n anotherclass-123 api-tester-1231-755676484f-rlpl5 --tail 10

 


2. Service ๋™์ž‘

iptables -t nat -L KUBE-NODEPORTS -n  | column -t

  • iptables ์—์„œ nodePort ๋งคํ•‘ ๋‚ด์šฉ ํ™•์ธ ๋ช…๋ น์–ด
  • target : ๋ชฉ์ ์ง€