Cloud Architect/Kubernetes

Kubernetes๋ž€?

"Everything about infra" 2025. 7. 17. 16:18

๐Ÿ“Œkubernetes ๋ž€? ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์›Œํฌ๋กœ๋“œ์™€ ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ์˜คํ”ˆ์†Œ์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ

 

Orchestration์ด ํ•„์š”ํ•œ ์ด์œ 

  • ์ž๋™ํ™”๋œ ์Šค์ผ€์ผ๋ง, ๋กค์•„์›ƒ ๋ฐ ๋กค๋ฐฑ
  • ์ž๋™ํ™”๋œ ๋ณต๊ตฌ(self-healing), ๋นˆ ํŒจํ‚น(bin packing)
  • ์‹œํฌ๋ฆฟ๊ณผ ๊ตฌ์„ฑ ๊ด€๋ฆฌ
  • ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ์™€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
  • ์Šคํ† ๋ฆฌ์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
  • ์„ ์–ธ์  ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์šด์˜(laC)

kubernetes๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ ?

  • ๋ถ„์‚ฐ์‹œ์Šคํ…œ์„ ํƒ„๋ ฅ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ œ๊ณต
  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ, ์Šค์ผ€์ผ๋ง, ์žฅ์• ์กฐ์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ™˜๊ฒฝ ์ œ๊ณต.

kubernetes์˜ ์žฅ์ 

  • kubernetes๋Š” ์™„์ „ ์˜คํ”ˆ์†Œ์Šค, ๊ฐ€์žฅ ํ’๋ถ€ํ•œ ์—์ฝ”์‹œ์Šคํ…œ
  • kubernetes๋Š” everything as code๋ฅผ ๊ตฌํ˜„
  • ์–ด๋””์„œ๋‚˜ ๊ตฌ๋™ ๊ฐ€๋Šฅ(onprem, private/public cloud … local ๊นŒ์ง€)
  • ๋„˜์ณ๋‚˜๋Š” ๋ ˆํผ๋Ÿฐ์Šค ๊นŒ์ง€!

01. Container Orchestration ๊ตฌ์กฐ

kubernetes๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…ธ๋“œ์— ๊ฑธ์ณ์„œ ํด๋Ÿฌ์Šคํ„ฐ ํ˜•ํƒœ๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ•˜๊ฒŒ ๋œ๋‹ค!!

  • ๋…ธ๋“œ ๊ด€๋ฆฌ๋ถ€ํ„ฐ ์œ„์— ์˜ฌ๋ผ๊ฐ€๋Š” ์„œ๋น„์Šค, ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ, ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ, ์Šค์ผ€์ค„๋ง, ์Šค์ผ€์ผ๋ง, ๋ฐฐ์น˜ ๋ฐ ๋ฐฐํฌ, ํ˜•์ƒ๊ด€๋ฆฌ, ๊ฐ€์šฉ์„ฑ ํ™•๋ณด ๋“ฑ ์šด์˜ ์ „๋ฐ˜์— ๊ฑธ์นœ ๋ชจ๋“  ์ž‘์—…์— ๊ด€์—ฌ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

โ–  Kubernetes ์•„ํ‚คํ…์ฒ˜

 

kubernetes ์ „์ฒด๋ฅผ ํ†ต์ œ/๊ด€๋ฆฌ ํ•˜๋Š” control plane๊ณผ, ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ Application์„ ๋ฐฐํฌํ•˜๋Š” data plane์œผ๋กœ ๋‚˜๋‰จ.

 

1. Control plane

  • kube-apiserver, etcd, kube-schduler, kube-controller-manager

2. Data plane

  • kubelet, kube-proxy, container runtime

๊ฐ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์—์„œ ํ™•์ธํ•˜์ž!!

 


02. minikube cluster ๋กœ ์‹ค์Šต ์‹œ์ž‘

๊ฐ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์ „์—, ์‹ค์Šต์šฉ ๋„๊ตฌ๋กœ 'minikube'๋ฅผ ์ฑ„ํƒ

๋”๋ณด๊ธฐ

ํ•„์ž OS : Macbook M3 pro

 

โ–  terminal์—์„œ minikube ์‹คํ–‰

minikube start -- ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘
minikube status -- ์ƒํƒœ์ •๋ณด ๋ณด๊ธฐ

 

์ž ๊น! minikube๋Š” docker container ์œ„์—์„œ ๊ตฌ๋™๋˜๋Š” ๋„๊ตฌ์ด๋ฏ€๋กœ docker ์‚ฌ์ „ ์„ค์น˜๊ฐ€ ๋˜์•ผํ•œ๋‹ค!!!

 

โ–  minikube ๋™์ž‘ ๋ฐฉ์‹

ํด๋Ÿฌ์Šคํ„ฐ ์ธ์ฆ ์ •๋ณด์™€ context ์ •๋ณด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด 'kubeconfig' ํ™•์ธ

  • kubectl์ด kubernetes์™€ ํ†ต์‹ ํ• ๋•Œ ํ•„์š”ํ•œ ์ ‘์† ๋Œ€์ƒ์˜ ์„œ๋ฒ„์ •๋ณด, ์ธ์ฆ์ •๋ณด ๋“ฑ์„ ์ •์˜
  • ๊ธฐ๋ณธ์œ„์น˜ : ~/.kube/config
  • ๊ด€๋ฆฌ์ •๋ณด : cluster, users, context, current-context ๋“ฑ

 

2-1. kubectl์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ

์ด part์—์„œ๋Š” ๋Œ€๋‹จํ•˜๊ฒŒ ์‹ค์Šต์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, kubernetes ๋…ธ๋“œ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„!!

node์™€ pod, namespace๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

 

< ๋…ธ๋“œ ํ™•์ธ >
kubectl get nodes

< ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ™•์ธ> 
kubectl get namespace

< Pod์™€ namespace ๊นŒ์ง€ ๊ฐ™์ด ํ™•์ธ >
kubectl get pods
kubectl get pods -A
kubectl get all
kubectl get all -A

03. Kubernetes ๊ตฌ์„ฑ ์š”์†Œ

์œ„์—์„œ ๋‹ค๋ค˜๋˜ control plane๊ณผ data plane์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž.

 

3-1. Control plane

โ–ถ etcd, api server, schduler

 

ETCD

  • kuberentes ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ‚ค-๊ฐ’ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • etcd๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฏธ์•„๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์šฉ์„ฑ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ๋งํ•˜์—ฌ ๋ถ„์‚ฐ ์‹คํ–‰ํ•˜๋Š” RSM (Replicated State Machine) ๊ตฌ์กฐ

โ–  HA ๊ตฌ์„ฑ

ํด๋Ÿฌ์Šคํ„ฐ์— ๋‹จ์ผ ๋ฆฌ๋”๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ๋‚˜๋จธ์ง€๋Š” Follower๋กœ ์กด์žฌํ•œ๋‹ค. ๋‹จ์ผ ๋ฆฌ๋”๊ฐ€ ์–ด๋А ์ด์œ ์—์„œ๋“  health check์— ์‹คํŒจํ•˜๊ฒŒ ๋˜๋ฉด Follower์ค‘ ๋ฆฌ๋”๋ฅผ ์„ ์ถœํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ง€์†.

โ–  ETCD ๊ตฌ์„ฑ ํ™•์ธ

kubectl describe pod etcd-minikube -n kube-system

 

โ–  etcdctl๋ž€?

  • etcd๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ
  • api version 2์™€ 3๊ฐ€ ์žˆ์Œ (์„ค์ •์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ v2๋ฅผ ์‚ฌ์šฉ)
  • etcdctl์ด etcd API Server์— ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ • ํ•„์š”.

 

kube-apiserver ์—ญํ• 

  • kubernetes API๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ
  • kubernetes ํ”„๋ก ํŠธ ์•ค๋“œ๋กœ์„œ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์˜จ ์š”์ฒญ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆ
  • ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ํ†ต์‹ ์„ ์ค‘์žฌ
  • kubectl ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ์ฃผ์ฒด.

โ–  ๊ตฌ์„ฑ ํ™•์ธ

kubectl describe pod -n kube-system kube-apiserver-minikube

 

kube-schduler

  • ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์—์„œ ์ž์› ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ ์ค‘ ์•Œ๋งž์€ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ์—ญํ• 
  • Label, Selector, Affinity, Taint, Toleration ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ๋™์ž‘ํ•œ๋‹ค.

 

๐Ÿ“ŒPod ์Šค์ผ€์ค„๋ง

 

1. ํ•„์š”์„ฑ

  • ๋จธ์‹ ๋Ÿฌ๋‹ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋Œ๋ฆฌ๋Š” ํŠน์ • pod๋Š” GPU๊ฐ€ ํƒ‘์žฌ๋œ node์—์„œ๋งŒ ๋Œ์•„์•ผ ํ•œ๋‹ค.
  • consumer๋“ค์€ ๋„คํŠธ์›Œํฌ intensiveํ•˜๋ฏ€๋กœ ์ „์šฉ node group์„ ์“ฐ๊ณ  ์‹ถ๋‹ค.
  • ํŒ€๋ณ„๋กœ node๋ฅผ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค.

 

2. ๋ถ„๋ฅ˜

  • ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋…ธ๋“œ์— pod๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ
    • nodeSelector, Node Affinity, Node Anti-Affinity … ๋“ฑ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉ
  • ๊ด€๋ฆฌ์ž๊ฐ€ ํŠน์ • ๋…ธ๋“œ์—๋Š” pod๊ฐ€ ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ  ์‹ถ์„ ๋•Œ
    • Taints, Tolerations ๊ธฐ์ˆ ์„ ์‚ฌ์šฉ.

 

โ–  Taints and Toleration

์–ด๋–ค pod๊ฐ€ ์–ด๋–ค node์— ์Šค์ผ€์ค„๋ง ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ œํ•œ.

ex) kubernetes์˜ control node์—๋Š” pod๊ฐ€ ์Šค์ผ€์ค„๋ง๋˜์ง€ ์•Š๋„๋ก taint๊ฐ€ ๋˜์–ด ์žˆ๋‹ค.

  • Taints : node๊ฐ€ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ์„ฑ๊ฒฉ. ex) taint: blue
  • Toleration : pod๊ฐ€ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” taint์— ๋Œ€ํ•œ toleration. ex) toleration: blue

์ฆ‰, node์— taint๊ฐ€ blue๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

pod์— toleration์œผ๋กœ blue๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ์Šค์ผ€์ค„๋ง ๋˜๊ณ , ์—†๋‹ค๋ฉด ์Šค์ผ€์ค„๋ง ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

โ–  Labels and Selector (Affinity)

  • NodeSelector
    • ๋…ธ๋“œ์—๋Š” ๋ผ๋ฒจ์„ ํ• ๋‹นํ•˜๊ณ , ํŒŒ๋“œ์—๋Š” nodeSelector ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ • ๋…ธ๋“œ์—์„œ ๊ตฌ๋™๋˜๋„๋ก.
    • ๋‹ค๋งŒ, NodeSelector๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ์—์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ์—๋Š” ์–ด๋ ค์›€.
  • NodeAffinity
    • ์—ฌ๋Ÿฌ advanced ํ• ๋‹น์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋ฌธ๋ฒ•์ด ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค.

 

controller-manager

  • ๋‹ค์–‘ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ
  • ๋…ธ๋“œ ์ปจํŠธ๋กค๋Ÿฌ, ์žก ์ปจํŠธ๋กค๋Ÿฌ, ์—”๋“œํฌ์ธํŠธ ์ปจํŠธ๋กค๋Ÿฌ, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ด€ํ• .

โ–  ์—ญํ• 

  • ๊ฐ ์˜ค๋ธŒ์ ํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ด€์ฐฐํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ state๋ฅผ ๋งž์ถ”๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ๊ฐ์€ ๋…ผ๋ฆฌ์ ์ด๊ณ  ๊ฐœ๋ณ„์ ์ธ ํ”„๋กœ์„ธ์Šค์ง€๋งŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€ํ™” ๋˜์–ด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค๋Ÿฌ ๋งค๋‹ˆ์ €๋ผ๋Š” ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์Šค๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

โ–  ๊ตฌ์„ฑ ํ™•์ธ  [pod ์ƒ์„ธ ํ™•์ธ]

kubectl describe pod kube-controller-manager-minikube -n kube-system

 

โ–  ์ปจํŠธ๋กค๋Ÿฌ ๋™์ž‘ ์˜ˆ์‹œ

 

๋…ธ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„๋•Œ์˜ ๋…ธ๋“œ ์ปจํŠธ๋กค๋Ÿฌ ๋™์ž‘ (์‹œ๊ฐ„์€ ์ปค์Šคํ„ฐ ๋งˆ์ด์ง•์ด ๊ฐ€๋Šฅํ•˜๋‹ค)

  1. 5s ๋งˆ๋‹ค status check๋ฅผ ์ง„ํ–‰ (node monitor period)
  2. hearbeat๊ฐ€ ๋„์ฐฉํ•˜์ง€ ์•Š์œผ๋ฉด 40s๋ฅผ ๋Œ€๊ธฐํ•˜๊ณ , unreachable๋กœ ๋งˆํ‚นํ•œ๋‹ค.
  3. (node monitor grace period)
  4. ์ถ”๊ฐ€๋กœ 5m์„ ๋” ๋Œ€๊ธฐํ•œ๋‹ค. (pod eviction timeout)
  5. ๋ณต๊ตฌ๋˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น node์˜ pod๋“ค์„ ์ •์ƒ node๋กœ ์žฌ๋ฐฐํฌ (pod๊ฐ€ replicaset์ผ ๊ฒฝ์šฐ๋งŒ ํ•ด๋‹น)

3-2. Data plane

โ–ถ kubelet, kube-proxy, container runtime

 

kubelet

๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์—์ด์ „ํŠธ๋กœ, Kubernetes Master Node๋กœ๋ถ€ํ„ฐ Pod ์‚ฌ์–‘์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• .

  • ๊ฐ kubernetes ๋…ธ๋“œ์—์„œ ๋™์ž‘ํ•˜๋Š” node agent
  • ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ์—ฐ๊ณ„ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋™ ๋ฐ ์ •์ง€ ๋“ฑ์„ ๊ด€๋ฆฌ
  • Pod์™€ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
  • ํŒŒ๋“œ ์ŠคํŽ™ ์„ค์ •์„ kube-apiserver๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์•„ ํŒŒ๋“œ ์ปจํ…Œ์ด๋„ˆ์˜ ์‹คํ–‰์„ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ฆฌ
  • pod๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค์˜ ํ˜•ํƒœ๋กœ ๋œฌ๋‹ค.

โ–  ์ฃผ์š” ๊ธฐ๋Šฅ

1. Pod ๊ด€๋ฆฌ

  • kubelet์€ ํŠน์ • ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•  Pod์˜ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.
  • Pod์˜ ์ƒํƒœ๊ฐ€ ์‚ฌ์–‘๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ Pod๋ฅผ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

2. ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ํ†ตํ•ฉ

  • kubelet์€ Docker, containerd ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ํ†ตํ•ฉ๋˜์–ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • CRI (Container Runtime Interface)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

3. ํ—ฌ์Šค ์ฒดํฌ

  • kubelet์€ Liveness Probe์™€ Readiness Probe๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์กฐ์น˜๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.

4. ๋กœ๊ทธ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง

  • kubelet์€ ๊ฐ Pod์˜ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์™€ ํ†ตํ•ฉํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

5. ๋…ธ๋“œ ์ƒํƒœ ๊ด€๋ฆฌ

  • kubelet์€ ๋…ธ๋“œ์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰(CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ)์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ด๋ฅผ API ์„œ๋ฒ„์— ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ž์› ๊ด€๋ฆฌ๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

โ–  ๊ตฌ์„ฑ ํ™•์ธ

< kubelet ํ™•์ธ >
minikube status

< kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ configmap >
kubectl get configmap -n kube-system

< kubelet configmap ํ™•์ธ >
kubectl describe configmap kubelet-config -n kube-system

< kubelet ํ™•์ธ >
ps -ef | grep kubelet
systemctl status kubelet

< kubelet ๋กœ๊ทธ ํ™•์ธ >
journalctl -u kubelet

 

โ˜… โ˜… kubelet์€ configmap ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์ €์žฅ์œ„์น˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

/etc/kubernetes/kubelet-config.yaml ํŒŒ์ผ์— ์ €์žฅ

 

 

kube-proxy

node์™€ pod๋ผ๋ฆฌ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์—ญํ• ์„ ์ง€๋‹Œ๋‹ค.

  • worker node์— daemon set ํ˜•ํƒœ๋กœ ํ•˜๋‚˜์”ฉ ๋– ์žˆ์Œ.
  • ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ๋„คํŠธ์›Œํฌ ํ”„๋ก์‹œ
  • ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ์˜ ๋™์ž‘์„ ๊ด€๋ฆฌ
  • IP translation๊ณผ Routing

โ–  ๊ตฌ์„ฑ ํ™•์ธ

kubectl get configmap -n kube-system | grep -i kube-proxy
kubectl describe configmap -n kube-system kube-proxy

 

 

Core DNS (kube-dns)

  • kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ ์ฃผ์†Œ ํ•ด์„์ด๋‚˜ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๋‚ด๋ถ€ DNS ์„œ๋ฒ„ (add-on)
  • kube 1.12 ๋ฒ„์ „ ์ „์—๋Š” kube-dns ๋ผ๋Š” ์ด๋ฆ„์ด์—ˆ์œผ๋‚˜, ์ดํ›„์—๋Š” CoreDNS ๋ผ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉ.

FQDN ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

โ–  ๊ตฌ์„ฑ ํ™•์ธ

kubectl describe configmap -n kube-system coredns

 

โ–  ๋„๋ฉ”์ธ ํ˜ธ์ถœ ํ…Œ์ŠคํŠธ

 

1. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ

kubectl create namespace app

2. test pod (nginx image) ์ƒ์„ฑ

kubectl run nginx --image nginx -n app

3. test pod ์ƒ์„ฑ ํ™•์ธ

kubectl get pod -n app

4. ์ƒ์„ธ ์ •๋ณด ํ™•์ธ

kubectl get pod -n app -o wide

 

โ–   ์„œ๋น„์Šค ํ˜ธ์ถœ

 

1. Static IP๋กœ ํ˜ธ์ถœ

kubectl run curl -it --rm --image curlimages/curl -- sh
curl 172.17.0.3 (pod IP ์ฃผ์†Œ)

2. ์„œ๋น„์Šค์— ํ• ๋‹นํ•œ ์ปค์Šคํ…€ํ•œ ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœ

  • [ curl podIP-๋„ค์ž„์ŠคํŽ˜์ด์Šค-์„œ๋น„์Šคํƒ€์ž…-๋ฃจํŠธ์ฃผ์†Œ ]
curl 172-17-0-3.app.pod.cluster.local