Kubernetes ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ ๊ฐ ์๋ ์ ์์ ์ต๋ํ ์ฝ๊ฒ ๊ธ์ ์จ๋ณผ๊ฒ์~
Kubernetes ๊ตฌ์กฐ
๋จผ์ Kubernetes ๊ณต์ ํ์ด์ง์ ์๊ฐ๋ ๊ตฌ์ฑ๋๋ถํฐ ์ดํด๋ด
์๋ค.
๋ญ๊ฐ... ๋ง์๋ณด์ด์ฃ ? ๊ทธ๋ฐ๋ฐ Kubernetes์ ๋ชฉ์ ์ ์ด๋ฃจ๊ธฐ ์ํ ์ต์ํ์ ์์๋ค์ด๋ผ๊ณ ์๊ฐํด์.
Control Plan
ํด๋ฌ์คํฐ๋ฅผ ์ ์ฒด์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์์๋ค์ด ๋ชจ์ฌ์์ต๋๋ค.
์ค์ ๊ด์ ํ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ํด๋ฌ์คํฐ ๋ด ๋
ธ๋์ ์ ํ๋ฆฌ์ผ์ด์
๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ปดํฌ๋ํธ๋ค์ด ์ ๊ธฐ์ ์ผ๋ก ๋์ํฉ๋๋ค.
API Server
๋์์ ์ํด์๋ Kubernetes์ ํธ์ถ์ด ํ์ํ๊ฒ ์ฃ ? ์ด๋ฌํ ๋์์ ๊ด๋ฆฌํ๋ ์ปดํฌ๋ํธ์
๋๋ค.
์ธ๋ถ ํธ์ถ ๋ฟ๋ง ์๋๋ผ, Kubernetes๋ ๋ชจ๋ ํธ์ถ๋ค์ api๋ก ๊ด๋ฆฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด Pod๋ฅผ ์์ฑํ๋ผ๋ ์ธ๋ถ ํธ์ถ์ ๋ฐ์์ ๋ ธ๋๋ก ์ ๋ฌํ๊ณ , ์์ฑ์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋ฐ๋ ๊ฒ ๋ชจ๋๊ฐ api๋ก ํต์ ๋ฉ๋๋ค.
ETCD
ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ Key-Value ์คํ ์ด ์ ๋๋ค.
์ ์ํฉ์์ Pod๊ฐ ์ด๋์ ์์ฑ๋์๋์ง Pod์ ์ํ๊ฐ ์ด๋ป๊ฒ ๋๋์ง ์ ์ฅํ๋ ๊ณณ์ด ํ์ํฉ๋๋ค.
์ด๋ฅผ ETCD์์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ ETCD์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค๋ฉด.. Kubernetes ๋ฆฌ์์ค๋ค์ด ์ด๋์ ์ด๋ค ์ํ์ธ์ง ์ ์๊ฐ ์๊ฒ ๋ฉ๋๋ค. (ํ ๋ง๋๋ก ๋
ธ๋ต..)
๋ฐ๋ผ์ ETCD ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐฑ์
ํด์ฃผ๋ ๊ฒ์ด Kubernetes์์๋ ๊ถ์ฅ๋ฉ๋๋ค.
Scheduler
Kubernetes์ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋๋ ์์ ๊ด๋ฆฌ์
๋๋ค.
Pod๋ฅผ ์ ์ ํ ๊ณณ์ ์ ์ ํ๊ฒ ์์ฑํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ Scheduler๋ผ๋ ์ปดํฌ๋ํธ๊ฐ ์กด์ฌํฉ๋๋ค.
Kubernetes๋ ETCD๋ฅผ ํตํด์ ํํฉ์ ํ์ ํ๊ณ , ์ ์ ํ ๋ ธ๋์ ์์์ ์์ฑํฉ๋๋ค.
๋ํ ๋ง์ฝ์ Pod๋ฅผ ๋์ธ ์ ์ ํ ๋
ธ๋๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ๋ณด๊ดํ๋ ํ(Queue) ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ํตํด์ ๋ช
๋ น๋ค์ด ์์ค๋์ง ์๋๋ก ํฉ๋๋ค.
Controller manager
์ด ์น๊ตฌ์ ์ญํ ์ด ๊ฝค๋ ๋ง์ต๋๋ค.
Kubernetes์ ์ํ๋ฅผ ์ ์์ ์ผ๋ก ํ๋ ๋ฐ์ ์ญํ ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ฌ๋์ด ๋์ฐ๋ฉด ๋์ ํ๋ฆฌ๊ณ , ์ถ์ฐ๋ฉด ๋ชธ์ ๋จ ๋ฏ์ด ํญ์์ฑ์ ์ ์งํ๋๋ก ๋์ต๋๋ค.
1. ์ํ ๊ด๋ฆฌ ๋ฐ ์๋ํ๋ ๋ณต๊ตฌ
Controller์์๋ ETCD๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ฉด์ ํด๋ฌ์คํฐ์ ํ์ฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ํ๋ ์ํ๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ์ ์งํ๋๋ก ์กฐ์ ํ๊ณ , ์ด ๊ณผ์ ์ Reconciliation์ด๋ผ๊ณ ํฉ๋๋ค.
ReplicaSet Controller๋ ์ง์ ๋ ์์ ํ๋๊ฐ ํญ์ ์คํ๋๋๋ก ๋ณด์ฅํ๊ฒ ๋๋๋ฐ,
Desired Pod ๊ฐ์๊ฐ 3์ธ๋ฐ, ํ๊ฒฝ์ ์์ธ์ผ๋ก Pod๊ฐ ๋ช ๊ฐ ์ฃฝ๊ฒ๋๋๋ผ๋ Controller๋ ์ด๋ฅผ ๊ฐ์งํ๊ณ Pod๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ฒ ๋ฉ๋๋ค.
2. ์ค์ผ์ผ๋ง
์ ํ๋ฆฌ์ผ์ด์
์ ๋ถํ์ ๋ฐ๋ผ์ Pod์ ์๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ด๋ Deployment Controller๋ฅผ ํตํด์ ์ค์ผ์ผ ์
/๋ค์ด์ ์ํํ ์ ์์ต๋๋ค.
3. ๋กค๋ง ์ ๋ฐ์ดํธ
Deployment ์ปจํธ๋กค๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ฒ์ ์ ๋ฌด์ค๋จ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ ๋กค๋ง ์
๋ฐ์ดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค
์๋น์ค ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์
๋ฐ์ดํธ ์์, ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ค๋ ํธ๋ํฝ์ ๋ค์ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ํ๋ฌ๋ณด๋ผ ์ ์์ต๋๋ค.
Worker Node
์ด๋ฆ์์ ๋๋ ์ ์๋ฏ์ด ์ฑ์คํ ์ผ๊พผ๋ค์
๋๋ค.
์์ ์ด ๊ฐ์ง ์์(CPU,MEM,GPU)์ ํตํด์ Pod๋ฅผ ๋์ฐ๋ ์ญํ ์ ํฉ๋๋ค.
Kubelet
ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋
ธ๋์์ ์คํ๋๋ ์์ด์ ํธ์
๋๋ค.
ControlPlane์์ ์ํ๋ ์์ ์คํ์ ์ฌ๊ธฐ๋ก ์ ๋ฌํ๊ณ , ๊ทธ์ ๋ฐ๋ผ Pod๋ฅผ ์คํํฉ๋๋ค.
Kubelet์ Pod ์คํ ๋ฟ๋ง ์๋๋ผ, ๋ชจ๋ํฐ๋ง๋ ์งํํฉ๋๋ค.
๋
ธ๋์ ์ํ ๋ฐ ๋ฆฌ์์ค ํํฉ์ ๋ชจ๋ํฐ๋งํ๊ณ , ๊ด๋ฆฌํ๊ณ ์ด๋ฌํ ์ํ๋ฅผ API ์๋ฒ์ ๋ณด๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Pod์ ์ํ์ ๋ํ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ํ์ํ ์์
๋ค์ ์ํํด์ค๋๋ค.
๋ํ ๋ณผ๋ฅจ๋ง์ดํธ๋ฅผ ์งํํ๋๋ฐ์.
๋ณผ๋ฅจ์ ๋ณดํต ํด๋ฌ์คํฐ ๋จ์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. Kubelet์ ์ด๋ฌํ ๋ณผ๋ฅจ์ด Pod์ ์ฐ๊ฒฐ๋ ํ์๊ฐ ์๋ค๋ฉด ๊ด๋ จ๋ ์์
๋ค์ ์ํํฉ๋๋ค.
Kube-Proxy
๋คํธ์ํฌ ํ๋ก์๋ก, ์ฟ ๋ฒ๋คํฐ์ค์ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
์ด๊ฒ ๋ฌด์จ๋ง์ด๋๋ฉด... ์๋๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ค์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์กด์ฌํ๋ Pod์ ์ ๊ทผํด์ผํ๋๋ฐ์.
์ฌ์ฉ์๋ ์ค์ Pod IP๊ฐ ์๋ Kubernetes์ ์ฐ๊ฒฐ๋ ์ธ๋ถ IP๋ฅผ ํตํด์ ์ ๊ทผํ๊ฒ ๋ฉ๋๋ค.
Kubernetes์์๋ Service ๋ฆฌ์์ค๋ฅผ ํตํด์ ์ด๋ฌํ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๊ฒ ๋๊ณ , ์ด๋ฅผ ํตํด์ ์ํ๋ Pod์ ์ ๊ทผํ ์ ์๋๋ก ๋์ต๋๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ๋๋ฆฌ์ธ์ด๋ผ๋ ๋ง์ ์ฐ๊ธฐ๋ ํ๋๋ฐ, ์ค์ ๋ก๋ ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ์๋ฒ์ ์ง์ ์ ๊ทผ์ ํ์ง ์์๋ ๋๋ฆฌ์ธ์ ์ญํ ๋ก ์ํ๋ ์๋ฒ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ค๋ค๋ ๋ป์ ๋๋ค.
์กฐ๊ธ ํท๊ฐ๋ฆด ์๋ ์๋๋ฐ.. (๋คํธ์ํฌ๊ฐ ๊ฐ์ฅ ์ด๋ ค์ด ๊ฑฐ ๊ฐ์์ ใ ใ ) ๋์ค์ Service๋ฅผ ๋ค๋ฃฐ ๋ ๋ค์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๋ฆฌ
๊ฒฐ๊ตญ Kubernetes๋ Node๋ฅผ ์ ๊ด๋ฆฌํ๊ณ ์ถ๊ณ , ๊ทธ ์์ ์๋ ์ ํ๋ฆฌ์ผ์ด์
๋ค์ Reconcileํ๊ฒ ์ ๊ด๋ฆฌํ๊ณ ์ถ์ด์ ๋ง๋ค์ด์ง ๊ฒ์
๋๋ค.
ํด๋ฌ์คํฐ ๋ด๋ถ์ ์กด์ฌํ๋ ๋
ธ๋๋ค์ด ํ๋์ ์์คํ
์ฒ๋ผ ๋์ํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฑฐ์ฃ .
๋ฌผ๋ก ์์ ์ธ๊ธํ ๊ธฐ๋ฅ๋ค์ ๋ ํด์ Kubernetes๋ ๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํฉ๋๋ค.
์์ง๋ ๋ฐ์ ์ด ๋์ด์์ด ์ด๋ฃจ์ด์ง๊ณ ์๊ณ ์.
์ ๊ธ์ ์ฝ์ผ์๋ฉด์ Kubernetes์ ๋ํด์ ์ข ๋ ์ดํดํ ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๐โ๏ธ