2023. 7. 13. 06:00ใ์ด๋ก ์ ๋ฆฌ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ [k8s] Kubernetes
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
K8s๋ Containerํ๋ Workload์ Service๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ด์์ฑ์ด ์๊ณ , ํ์ฅ ๊ฐ๋ฅํ ์คํ ์์ค ํ๋ซํผ์ ์ด์ผ๊ธฐ ํฉ๋๋ค.
k8s๋ ์ ์ธ์ ๊ตฌ์ฑ๊ณผ ์๋ํ๋ฅผ ๋ชจ๋ ์ฉ์ดํ๊ฒ ํด์ค๋ค๊ณ ํด์.
k8s์ ๋ช
์นญ์ ํค์ก์ด(helmsman) ์ฆ, ํ์ผ๋ฟ์ ๋ป์ ๊ฐ์ง ๊ทธ๋ฆฌ์ค์ด์์ ์ ๋ ํ๋ค๊ณ ํด์.
K8s๋ผ๋ ํ๊ธฐ๋ K์ s ์ฌ์ด์ 8๊ธ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ค์ฌ์ ํํํ๋ ๊ฒ์ด์์.
k8s๋ Google์ด 2014๋
ํด๋น ํ๋ก์ ํธ๋ฅผ ์คํ์์คํ ํ์์ด์. ์ฆ, ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํ์๋ค๋ ๋ป์ด์ฃ .
๐ฝ Kubernetes
๐ฆ Application ๊ตฌ๋ ๋ฐฉ์์ ๋ณ์ฒ์ฌ
์ด ์ด์ผ๊ธฐ๋ฅผ ํ๊ธฐ ์ ์ ๋จผ์ ์ฉ์ด๋ถํฐ ์ ๋ฆฌํด ๋ณด๊ณ ๊ฐ๊ฒ์.
์ฉ ์ด | ๋ด ์ฉ |
Container | Application์ด ๊ตฌ๋๋๋ ํ๊ฒฝ๊น์ง ๊ฐ์ธ ์คํํ ์ ์๋๋ก ํ๋ ๊ฒฉ๋ฆฌ ๊ธฐ์ |
Container Runtime | Container๋ฅผ ๋ค๋ฃจ๋ ๋๊ตฌ |
Docker | Container๋ฅผ ๋ค๋ฃจ๋ ๋๊ตฌ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋๊ตฌ |
Kubernetes | Container Runtime์ ํตํด Container๋ฅผ Orchestrationํ๋ ๋๊ตฌ |
Orchestration | ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์น Container ๋ฐ ์ฌ์ฉํ๋ ํ๊ฒฝ ์ค์ ์ ๊ด๋ฆฌํ๋ ์์ |
Container๋ ์ฌ์ฉ์๊ฐ ๊ตฌ๋ํ๋ ค๋ Application์ ์คํํ ์ ์๋ ํ๊ฒฝ๊น์ง ๊ฐ์ธ ์ด๋์๋ ์ฝ๊ฒ ์คํํ ์ ์๋๋ก ํด ์ฃผ๋ ๊ธฐ์ ์ ๋งํด์.
์๋ฅผ ํ๋ ๋ค์๋ฉด PC์ Program์ ์ค์นํ ๋, ํน์ Path(๊ฒฝ๋ก)๋ฅผ ๋ง์ถฐ ์ค์นํ๊ฑฐ๋, PC Option์ ํ์ํ ๊ฒ๋ค์ ํ๋ํ๋ ๋ง์ถฐ๊ฐ๋ฉด์ ์ค์นํ๋ ๊ณผ์ ์ด ์๋ค๋ฉด ๋งค์ฐ ๋ฒ์ก์ค๋ฌ์ธ ๊ฑฐ์์.
Container๋ ์ด๋ฌํ ํ๊ฒฝ๊น์ง ๋ชจ๋ ํฌํจํ์ฌ Host ํน์ ๋ค๋ฅธ Container์ ๋
๋ฆฝ์ ์ผ๋ก Program ์คํ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ด์์.
Container ํ๊ฒฝ์ ๋ฌถ์ด ๋ฐฐํฌํ Container Image๋ฅผ ๋ด๋ ค ๋ฐ์ ๊ตฌ๋ํ๋ฉด ์คํ๋๊ธฐ ๋๋ฌธ์, ๊ฐ์ข
์ค์ ๊ณผ์ ์ด ์ค์ด ๋ค์ด ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์ด์ฉํ ์ ์๋ต๋๋ค.
๋ํ, Container๋ฅผ ์ฌ์ฉํ ๋, ํ์ํ ๋๊ตฌ๊ฐ Container Runtime์ด๋ผ๋ ๊ฑด๋ฐ, ์ด๊ฒ์ Container๋ฅผ ์ฝ๊ฒ ๋ด๋ ค ๋ฐ๊ฑฐ๋, ๊ณต์ ํ๊ณ , ๊ตฌ๋ํ ์ ์๋๋ก ํด์ฃผ๋ ๋๊ตฌ๋ฅผ ๋งํด์.
์ข
๋ฅ ๋ํ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๊ฑธ ํน์ ์๊ณ ๊ณ์
จ๋์? ๊ทธ ์ค ๊ฐ์ฅ ์ ๋ช
ํ๊ณ , ๋ง์ด ์ด์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก Docker์์. Docker๊ฐ ์ฌ์ฉํ๋ Container ๊ท๊ฒฉ์ ํ์คํ ๋์ด ์๊ธฐ ๋๋ฌธ์ Docker๊ฐ ์๋ ๋ค๋ฅธ Container Runtime๋ค๋ Docker๋ก ๋ง๋ Container๋ฅผ ์ฌ์ฉํ ์ ์๋ต๋๋ค.
k8s๋ Container Runtime์ ํตํด Container๋ฅผ ๋ค๋ฃจ๋ ๋๊ตฌ๋ฅผ ๋งํด์. k8s๊ฐ ํด์ฃผ๋ ์ผ์ ์ฌ๋ฌ Server(Node ๋ผ๊ณ ์นญํจ)์ Container๋ฅผ ๋ถ์ฐ ๋ฐฐ์นํ๊ฑฐ๋, ๋ฌธ์ ๊ฐ ์๊ธด Container๋ฅผ ๊ต์ฒดํ๊ฑฐ๋, Container๊ฐ ์ฌ์ฉํ ๋น๋ฐ๋ฒํธ๋, ํ๊ฒฝ ์ค์ ์ ๊ด๋ฆฌํ๊ณ , ์ฃผ์
ํด ์ฃผ๋ ์ผ ๋ฑ์ ํ๋ต๋๋ค. ์ด๋ฌํ ์์
๋ค์ Container Orchestration์ด๋ผ๊ณ ํด์.
๋ํ, k8s๋ Docker๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ ์๋์์. ์์์ ์ด์ผ๊ธฐ ํ ๋ฏ k8s๋ Container ๋ถ์ฐ ๋ฐฐ์น, ์ํ ๊ด๋ฆฌ ๋ฐ Container ๊ตฌ๋ ํ๊ฒฝ๊น์ง๋ง ๊ด๋ฆฌํ๋ ๋๊ตฌ์ด๊ณ , Docker๋ Container๋ฅผ ๋ค๋ฃจ๋ ๋๊ตฌ(Container Runtime)๋๊ตฌ ์ค ํ๋์์.
k8s๋ Container๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด Docker ์ธ์ ๋ค์ํ Container Runtime Software์ ์ฐ๋ํ ์ ์์ด์.
k8s๋, Docker๋ฅผ ๊ฒ์ํ๋ฉด ๋ง์ด ๋ณด์์ ๊ทธ๋ฆผ์ด์์.
Virtualized Deployment์์ Hypervisor์ Container Deplyment์ Container Runtime ๊ทธ๋ฆฌ๊ณ , VM, Bin/Library, App์ด๋ผ๋ ์ฉ์ด๋ ๊ณผ์ฐ ๋ฌด์์ผ๊น์?
์ต์ด Traditional Deployment์ ๊ฐ์ํ ์ด์ ์ํฉ์ ๋งํ๋๋ฐ, ์ฐ๋ฆฌ๊ฐ PC๋ฅผ ๊ตฌ๋งคํด์ OS๋ฅผ ์ค์นํ๊ณ , ๊ทธ ๊ณณ์ Program์ ์ค์นํ๋ ๋ฐฉ์์ ์ด์ผ๊ธฐ ํด์.
๊ฐ์ํ๊ฐ ๋์ค๊ธฐ ์ด ์ ์๋ ํ ๋์ ๋ฌผ๋ฆฌ Server์ OS๋ฅผ ์ฌ๋ฆฌ๊ณ , ์ฌ๋ฌ Application์ ์ค์นํ๋ ๋ฐฉ์์ผ๋ก Server๋ฅผ ๋์
ํ๊ณ , ๋ ๋ค๋ฅธ Server๊ฐ ํ์ํ๋ฉด ๋ฌผ๋ฆฌ Server๋ฅผ ์ถ๊ฐ ๊ตฌ๋งคํ๋ ๋ฐฉ์์ผ๋ก ์ด์์ ํ์์ด์.
ํ์ง๋ง, Server์ ๋น์ฉ์ด ๊ณ ๊ฐ์ด๊ณ , ์ฌ๋ฌ Server๋ฅผ ๋ณด์ ํ Rack๊ณผ ๊ทธ Rack์ ๋ณด๊ดํ ์ฅ์๋ฅผ ๋ง๋ ๋ค๋ ๊ฑด Service ์ฃผ์ฒด ์
์ฅ์์ ๊ต์ฅํ ๋ถ๋ด์ค๋ฌ์ด ์ผ์ด ์๋ ์ ์์ด์.
๋ํ, ํ ๋์ PC์์ ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ค๊ณ ํ ๋, A๋ผ๋ Program์ด ๋ค๋ฅธ Program ๋์์ ๊ฐ์ญํ๊ฑฐ๋, ํน์ Program์ด ์์์ ๋
์ ํ ๊ฒฝ์ฐ ๋ ๋ค๋ฅธ Program์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๋ฑ์ ๋จ์ ์ด ์์ ์ ์์ด์.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๋ฐฉ์์ด ์์์ผ๋ ๋ฐ๋ก Virtualized Deployment ๋ฐฉ์์ด์์.
์ด๋ ๊ฐ์ ๋จธ์ ์ ๊ธฐ๋ฐ์ผ๋ก Server๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ, ์ฃผ๋์ฐ๊ฐ Server ๊ตฌ์ถ์ ์ํด ์ด ์ ์ ์์ฑํ๋ ๊ธ๋ค์ ๋ณด๋ฉด ESXi, VMware Workstaion, Hyper-V ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ์ค์นํ๊ณ , ๊ฐ์ ๋จธ์ ์ ์ค์นํ๊ณ ์๋ค๊ณ ์ธ๊ธ ํ๊ณ ์์ด์.
์ด๋ฌํ ๊ฒ๋ค์ ๊ฐ์ํ๋ฅผ ํ๊ธฐ ์ํ OS ํน์ Program์ด์์.
์ด ๋, Hypervisor๋ผ๋ ์ฉ์ด๊ฐ ๋์ค๋๋ฐ, ์ด๊ฒ์ ํ๋์ System์ ์ฌ๋ฌ ๊ฐ์ ๋จธ์ ์ ์ฌ๋ฌ ๊ฐ ๊ตฌ๋ํ ์ ์๋๋ก ํด์ฃผ๋ ์ค๊ฐ ๊ณ์ธต์ ์๋ฏธํด์. ์ฆ, ์ค์ ๋ฌผ๋ฆฌ ์ฅ๋น์ OS๋ฅผ ์ฌ๋ฆฌ๊ณ , ๊ฐ์ํ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๋ OS๋, Program์์ ๋ด์ฅ๋ Hypervisor๋ฅผ ํตํด ๋ ๋ค๋ฅธ ๊ฐ์์ OS๋ฅผ ์ฌ๋ ค ์ ํ ๋ค๋ฅธ PC๋ฅผ ์ฌ์ฉํ๋ ๋ฏํ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๋ ๊ฒ์ด์์.
Virtualized Deployment ๋ฐฉ์์ ๊ฐ์ ์ปดํจํฐ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ค์ ๋ฌผ๋ฆฌ PC์๋ CPU, RAM, SSD์ ๊ฐ์ ๋ถํ๋ค์ ์กฐ๋ฆฝํด ์ฃผ๋ฏ ๊ฐ์ ๋จธ์ ์๋ CPU, RAM, ์ ์ฅ ์ฅ์น๋ค์ ๊ฐ์์ผ๋ก ๋ถ๋ฐฐํด์ ํ ๋นํด ์ค ์ ์์ด์.
์ด๋ฐ ๋ฐฉ์์ ํตํด Traditional Deployment ๋ฐฉ์์์ ์ค๋ ์ฌ๋ฌ ๋ฌผ๋ฆฌ Server ๊ตฌ๋งค ํน์ ๋ค๋ฅธ Program๊ณผ์ ๋ฌธ์ ๋ฑ์ ์ด๋ ์ ๋ ํด๊ฒฐ์ ํ์ง๋ง, ์ฌ์ ํ ๋ฌผ๋ฆฌ Server๋ฅผ ๊ตฌ๋งคํด์ผ ํ๊ณ , ์์ ๊ด๋ฆฌ๋ฅผ ํด์ผ ํ๋ค๋ ๋จ์ ๊ณผ ํจ๊ป ์ถ๊ฐ์ ์ผ๋ก OS๊ฐ ์ฌ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฌด๊ฒ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ด์.
์ด๋ฌํ ๋จ์ ๋ค์ ๊ทน๋ณตํ๊ณ ์ ๋์จ ๊ฒ์ด ๋ฐ๋ก Container Deployment ๋ฐฉ์์ด์์.
Hypervisor ๋์ Container Runtime์ ์ฐ๊ณ ์๋๊ฑธ ํ์ธํ ์ ์๋๋ฐ, Container๋ ๊ฐ์ ๋จธ์ ๊ณผ ๋ฌ๋ฆฌ Program ๊ตฌ๋์ ์ํ ๊ฐ์ OS ์ค์น๊ฐ ํ์์๋ ์ฅ์ ์ด ์์ด์.
์ฆ, Host OS ํ๋๋ง ์ค์นํ๋ฉด ๋๋ค๋ ์๋ฏธ์์.
Container ๊ธฐ๋ฐ ๋ฐฉ์์ ์ ํต์ ๋ฐฉ์ ์์ Container Runtime์ด ์ฌ๋ผ๊ฐ ๊ตฌ๋์ด ๋๋๋ฐ, Container๋ OS ๋ฐ์ ์์
๋ค์ด ์ด๋ป๊ฒ ๊ตฌ๋๋๋์ง ์ง์ ์ ์ผ๋ก ์ฐ๊ด ์ง์ด ๊ตฌ๋๋์ง ์์์ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋จธ์ ์์ ์ฌ๋ผ๊ฐ OS์์ ์ถ๊ฐ๋ก Container ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๊ณ , ์ฃผ๋์ฐ๋ ๊ทธ๋ ๊ฒ Server ๊ตฌ์ถ์ ํ๋ ค๊ณ ํ๊ณ ์์ด์.
๋ค๋ง, ์ฃผ์ํ ์ ์ Container ๋ฐฉ์์ Host OS๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค Program์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ค๋ฅธ Program์๊ฒ ์ํฅ์ ๋ผ์น์ง ์์์. ํ์ง๋ง, Program ๋ฌธ์ ๊ฐ Host OS์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐ์ํฌ ๊ฒฝ์ฐ Host OS์์ ๊ตฌ๋์ค์ธ ์ ์ฒด Container์ ๋ฌธ์ ๊ฐ ๋ฐ์๋ ์๋ ์์ด์.
Container ๋ฐฉ์์ Linux ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ์ Application๋ค์ ๋
๋ฆฝ๋ ํ๊ฒฝ์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๊ฒฉ๋ฆฌํด ์ฃผ๊ณ , CPU, RAM๊ณผ ๊ฐ์ ์์๋ ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ namespace ๋ฐ cgroup ๊ธฐ์ ์ด ํ์ฌ ๋์ด ์์ด์.
Traditional Deployment | Virtualized Deployment | Container Deployment | |
๋ฌผ๋ฆฌ ์ฅ๋น | ๊ฐ๊ฐ์ Application ๊ฒฉ๋ฆฌ ํ์ ์ ๋ฌผ๋ฆฌ ์ฅ๋น N๋ |
๋ฌผ๋ฆฌ ์ฅ๋น 1๋์ ๋ค์ ๊ฐ์ ๋จธ์ ๊ตฌ์ถ์ด ๊ฐ๋ฅํ๋, ์์ ๋ถ์กฑ ์ ์ถ๊ฐ ์ฅ๋น ๊ตฌ๋งค ํ์ | ๋ฌผ๋ฆฌ ์ฅ๋น์ ์ํฅ์ด ์ ์ |
์ด์์ฒด์ | ๋ฌผ๋ฆฌ ์ฅ๋น์ 1๊ฐ ์ด์์ฒด์ ์ค์น | ๋ฌผ๋ฆฌ ์ฅ๋น 1๋์ ์ด์์ฒด์ ์ค์น ๋ฐ ๋ค์์ ๊ฐ์ ๋จธ์ ์ ๊ฐ๊ฐ์ OS ์ค์น ํ์ | ๋ฌผ๋ฆฌ ์ฅ๋น 1๋์ ์ด์์ฒด์ ์ค์น |
์์ (Resource) |
๋ฌผ๋ฆฌ ์ฅ๋น์ ์์์ ์ฌ๋ฌ Application์ด ๋๋ ๊ฐ๋ ๋ฐฉ์ |
Hypervisor๋ฅผ ํตํด ๊ฐ์ ๋จธ์ ๋ณ ๊ฐ๋ณ์ ์์ ํ ๋น | Host ์ด์์ฒด์ ์์ Application ๋ณ ์์ ํ ๋น ๋ฐ ๊ด๋ฆฌ |
๊ฒฉ๋ฆฌ ์์ค | X | ๊ฐ์ ๋จธ์ ๋ณ ์์์ ๋๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ๋ํ๋ ๋ฐฉ์ | OS ํ๊ฒฝ์ ๊ณต์ ํ๋, Application ํ๊ฒฝ์ ๊ฐ๊ฐ ๊ฒฉ๋ฆฌ |
๋ฌธ์ ์ ์ด ์ฌ๋ถ | ํน์ Application ๋ฌธ์ ๋ฐ์ ์ System ์ ์ฒด ๋ฌธ์ ์ผ๊ธฐ | Host OS ๋ฌธ์ ๋ฐ์ ์ ๋ชจ๋ ๊ฐ์ ๋จธ์ ์ค๋จ๋ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋, ๊ฐ๊ฐ์ ๊ฐ์๋จธ์ ์์ ๋ฐ์ํ ๋ฌธ์ ๊ฐ ๋ค๋ฅธ ๊ฐ์ ๋จธ์ ์๊ฒ ์ํฅ์ ๋ผ์น ๊ฐ๋ฅ์ฑ์ ๋ฎ์ | Host OS ๋ฌธ์ ๋ฐ์ ์ ๋ชจ๋ Container๊ฐ ์ค๋จ๋ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉฐ, ํน์ Application ๋ฌธ์ ๊ฐ ๋ค๋ฅธ Application์ ์ํฅ์ ๋ผ์น์ง ์์ |
์ฆ, Container๋ฅผ ์ด์ฉํ๊ฒ ๋๋ฉด Server์์ 1๋ช
์ ๊ด๋ฆฌ์๊ฐ ๋ค์ํ Application์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ Program์ Container๋ก ๊ตฌํํ ํ์๊ฐ ๊ฑฐ์ ์๋ค๊ณ ํด์.
๊ธฐ์
ํ๊ฒฝ์์ ๋ค์์ ๊ด๋ฆฌ์๊ฐ ์๋ฐฑ, ์์ฒ ๋ Server๋ฅผ ํจ๊ป ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์ด ๊ต์ฅํ ์ค์ํด์.
๋ฌผ๋ก ๊ธฐ๊น๋๋ ์ฌ๋๋ค์ ๊ทธ ์ ๋์ Server๋ฅผ ๊ตฌ์ถํ์ง ๋ชปํ๊ฒ ์ง๋ง, ๊ธฐ์
๊ณผ ๊ฐ์ด ํ๋ก์ ํธ๋ฅผ ํด ๋ณด๋ ๊ฒ์ด ์ปจ์
์ธ ๋งํผ ์ด ๋ถ๋ถ๋ ๊ต์ฅํ ์ฌ๋์๊ฒ ๊ณ ๋ คํ๊ณ ์์ด์.
์ด๋ฐ ๊ฒฝ์ฐ Container Infra ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค๋ฉด ์ฌ๋ฌ ์ฌ๋์ด ์์
ํ์ฌ ์ค์ ์ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ด์.
๋ํ, ๊ฐ์ํ ํ๊ฒฝ์์ ๊ฐ๊ฐ์ Virtual Machine์ด ๋ชจ๋ ๋
๋ฆฝ์ ์ธ OS Kernel์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์์ ์ด์ผ๊ธฐ ํ๋๋ก ์์ ๋ญ๋น๊ฐ ์ฌํ ์ ์๋๋ฐ, Container Infra์ ๊ฒฝ์ฐ OS Kernel ํ๋์ Container ์ฌ๋ฌ ๊ฐ๊ฐ ๊ฒฉ๋ฆฌ๋ ํํ๋ก ์คํ๋๋ฏ๋ก, ์์์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ , ๋จ๊ณ ๋จ๊ณ ๊ฑฐ์น๋ ๊ฒ๋ค์ด ์ ์ด ์๋๋ ํจ์ฌ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ด์.
ํ์ง๋ง, ํ๊ฐ์ง ์ฐธ๊ณ ํด์ผ ํ ์ฌํญ์ Container ํ๊ฒฝ์์ Window๋ ๊ตฌ๋ํ ์ ์์ด์.
์ด๋ Container๊ฐ Linux Kernel ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ด์์.
k8s๋ ๊ฐ์ํ ํ๊ฒฝ ์์ฉ ์๋ฃจ์
์ ์ด์ฉํด ์์ ์ ์ผ๋ก System ์ด์ฉ์ด ๊ฐ๋ฅํ๊ณ , ๊ด๋ฆฌ ๋์๋ ์ง๋ ๊ณผ๊ฑฐ๊ฐ ์์๊ณ , ์ง๊ธ๋ ์ด๋ฅผ ์ด์ฉํด์ System์ ๊ตฌ์ถํ๋ ๊ณณ์ด ๋ง์ง๋ง, ์๊ฐ์ด ์ง๋๋ฉด์ Kernel๋ฅผ ํตํด ๋ ๋ง์ Application์ ์ฌ๋ฆด ์ ์๋ Container๊ฐ ๋์
๋๋ฉด์ ๋์ด๋ Conatiner ๊ด๋ฆฌ ํ์์ฑ์ด ์๊ฒจ ๋ฒ๋ฆฐ ๊ฒ์ด์์.
๊ธฐ์กด Container ๊ด๋ฆฌ ์๋ฃจ์
์ด์๋ Docker Swarm, Mesos, Nomad ๋ฑ์ ํ์
์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ ์ํค๊ธฐ์ ๋๋ฌด ๊ณผํ๊ฑฐ๋, ๋ถ์กฑํ ์ ์ด ์์์ด์.
์ด๋ฌํ ์ด์ ๋ก Container Infra ํ๊ฒฝ์ด ์ฃผ๋ ๋ง์ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ , ๋ณดํธํ๊ฐ ์ด๋ ค์ ์ง์.
k8s๋ ์ด๋ฌํ ๊ฒ๋ค์ ๋ค๋ฌ์ด ๋์จ Container ๊ด๋ฆฌ ์๋ฃจ์
์ด์์.
๐ฝ k8s์ ์นํด์ง๊ธฐ
๐ฆ Container Ohchestration
์ข ๋ฅ | ์์ธ ๋ด์ฉ |
Docker Wwarm | โ ๊ฐ๋จํ ์ค์น, ์ฌ์ฉ ์ฉ์ด โ ๊ธฐ๋ฅ์ด ๋ค์ํ์ง ์์ ๋๊ท๋ชจ ํ๊ฒฝ์ ์ ์ฉ ์ ์ฌ์ฉ์ ํ๊ฒฝ ๋ณ๊ฒฝ ํ์ โ ์๊ท๋ชจ ํ๊ฒฝ์ ์ ์ฉ |
Mesos | โ Apache Open Source Project๋ก Twitter, ์์ด๋น์๋น, Apple, Uber ๋ฑ์์ ๊ฒ์ฆ๋ ์๋ฃจ์
โ 2016๋ DC/OS (Data Center OS, ๋๊ท๋ชจ ํ๊ฒฝ์์ ์์์ ์ ์ฐํ๊ฒ ๊ณต์ ํ๋ฉฐ, ํ๋์ ์์์ฒ๋ผ ๊ด๋ฆฌํ๋ ๋๊ตฌ) ์ง์์ผ๋ก ๋งค์ฐ ๊ฐ๊ฒฐํด์ง โ ๊ธฐ๋ฅ์ ์ถฉ๋ถํ ํ์ฉํ๊ณ ์ ํ๋ค๋ฉด ๋ถ์ฐ ๊ด๋ฆฌ ์์คํ ์ฐ๋ ํ์ โ ์ฌ๋ฌ๊ฐ์ง ์๋ฃจ์ ์ ์ ๊ธฐ์ ์ผ๋ก ๊ตฌ์ฑํด์ผ ํ๋ ๋ถ๋ด |
Nomad | โ ๋ฒ ์ด๊ทธ๋ฐํธ๋ฅผ ๋ง๋ ํด์์ฝํ์ฌ์ Container Ohchestration โ ๊ฐ๋จํ ๊ตฌ์ฑ์ผ๋ก Container Ohchestration ํ๊ฒฝ ์ ๊ณต โ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ์ฌ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ํ๊ฒฝ์ด ์๋ ๊ฐ๋ณ๊ณ , ๊ฐ๋จํ ๊ธฐ๋ฅ๋ง ํ์ํ ํ๊ฒฝ์์ ์ฌ์ฉ ๊ถ์ฅ โ ํด์์ฝํ์ Consul(์๋น์ค ๊ฒ์, ๊ตฌ์ฑ ๋ฐ ๋ถํ ๊ธฐ๋ฅ ์ ๊ณต)๊ณผ Vault(์ํธํ ์ ์ฅ์)์์ ์ฐ๋์ด ์ํ ํ์ฌ ์ด๋ฐ ๋๊ตฌ์ ๋ํ ์ฌ์ฉ ์ฑ์๋๊ฐ ๋์ ๊ธฐ์ ํน์ ์กฐ์ง์ธ ๊ฒฝ์ฐ ๋์ ํด๋ ์ข์ |
Kubernetes | โ ๋ค๋ฅธ ์๋ฃจ์
์ ๋นํด ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ค์ ์์ผ๋, ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ๋ค์ด ์์ด ์ค์น๊ฐ ์ฌ์์ง๋ ์ถ์ธ โ ๋ค์ํ ํํ๋ก ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, Container Ohchestratio์ ๋์ด IT Infra ์์ฒด๋ฅผ Containerํ ํ๊ณ , Containerํ๋ Infra ์ ํ๊ตฐ์ k8s ์์์ ๋์ํ ์ ์๊ฒ ํด์ค โ ๋ง์ Vender์ Opne Source ์ง์์์ k8s๋ฅผ ์ง์ํ๊ณ , ๊ทธ์ ๋ง๊ฒ ํตํฉ ๊ฐ๋ฐ ์ค |
๐ก ์ฉ์ด ์ ๋ฆฌ
1. Ohchestration
๋ณต์กํ ๋จ๊ณ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์์๋ค์ ์ ๊ธฐ์ ๊ด๊ณ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ์ฌ ์์ฝ๊ฒ ์ฌ์ฉํ๋๋ก ์๋น์ค ์ ๊ณตํ๋ ๋๊ตฌ
2. Container Ohchestration
๋ค์์ Container๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ, ์คํ, ์ข ๋ฃํ ๋ฟ ์๋๋ผ, ์ํ ์ถ์ ๋ฐ ๋ณด์ ํ๋ ๋ฑ Container๋ฅผ ์์ ์ ์ผ๋ก
์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
๐ฆ k8s ๊ตฌ์ฑ ๋ฐฉ๋ฒ
์ข ๋ฅ | ์์ธ ๋ด์ฉ |
๊ด๋ฆฌํ k8s | Public Cloud ์
์ฒด์์ ์ ๊ณตํ๋ ๊ด๋ฆฌํ k8s์ธ EKS(Amazon Elastic Kubernetes Service), AKS(Azure Kubernetes Service), GKE(Google Kubernetes Service) ๋ฑ ๊ตฌ์ฑ์ด ์ด๋ฏธ ๋ค ๊ฐ์ถฐ์ ธ ์๊ณ , Master Node๋ฅผ Cloud ์ ์ฒด์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ณด์๊ฐ ํ์ต์ฉ์ผ๋ก ์ด์ฉํ๊ธฐ์ ๋ถ์ ์ |
์ค์นํ k8s | Suse์ Rancher, Red Hat์ OpenShift์ ๊ฐ์ Platform์์ ์ ๊ณตํ๋ ์ค์นํ k8s ์ ๋ฃ์ด๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๊ทผ์ด ์ด๋ ค์ |
๊ตฌ์ฑํ k8s | ์ฌ์ฉํ๋ System์ k8s Cluster๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํด์ฃผ๋ ์๋ฃจ์
์ฌ์ฉ ์ฃผ์ ์๋ฃจ์ : kubeadm, kops(Kubernetes Operation), KRID(Kubernetes Rebar Integrated Bootstrap), Kuberspray (kubeadm์ด ๊ฐ์ฅ ๋ณดํธํ๋จ.) kubeadm์ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝํ๊ธฐ ์์ํ๋ฉฐ, On-premises์ Cloud๋ฅผ ๋ชจ๋ ์ง์ํ๋ฉฐ, ๋ฌ๋ ์ปค๋ธ๊ฐ ์ฝํ ํธ |
k8s๋ ์คํ ์์ค ๊ธฐ๋ฐ์ Containerํ ๋ Application(Work load & Service)์ ์๋ ๋ฐฐํฌ, ์ค์ผ์ผ๋ง ๋ฑ์ ์ ๊ณตํ๋ ๊ด๋ฆฌ Platform์ด์์.
K8s์ Docker๋ ์์ฐํ ๋ค๋ฅธ ์๋ฃจ์
์ด์์. K8s์ Docker๋ ์ํธ ๋์ฒดํ ์ ์์ด์.
K8s๋ Container ๊ฐ์ํ ๊ธฐ์ ์ ์ด์ฉํ Service, Packaging๋ Serivce์ ์๋ ๋ฐฐํฌ, Scaling ์์
์ ๋์์ฃผ๋ ๋๊ตฌ์์.
K8s์ ์ฅ/ ๋จ์
์ฅ ์ |
๋จ ์ |
Containerํ ๋ Application ๊ตฌ๋
|
Source Code ๋ฐฐํฌ ๋ถ๊ฐ, Build ๋ถ๊ฐ |
Service Discovery & Load balancing |
Application Level Service ์ง์ ์์ |
Storage orchestration |
Logging, Monitoring Solution ์ง์ ์์ |
์๋ํ๋ Roll Out, Roll Back |
ํฌ๊ด์ Machine Setting,
|
์๋ํ๋ Bin Packing |
|
์๋ํ๋ Self-Healing (๋ณต๊ตฌ)
|
|
Secret & composition Management (๊ตฌ์ฑ ๊ด๋ฆฌ) |
K8s Cluster๋?
K8s๋ Master Node(๊ฐ๊ฐ์ Work Node ๊ด๋ฆฌ)์ ์ค์ Container ์์ฒด ์ด์, ์ค์ผ์ฅด๋ง์ ๋ด๋นํ๋ ๊ฒ์ด Work Node์ด๊ณ , ์ด ๋๊ฐ์ง๋ฅผ ํฉ์ณ์ ๋ถ๋ฅด๋ ๊ฒ์ด K8s Cluster์์.
Master Node ์์๋ ์ค์ ์ ๋ณด(etcd), ์ฌ์ฉ์ ์ค์ผ์ฅด ๊ด๋ฆฌ(sched), api ๋ฑ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ๊ตฌ์ฑ์ด ๋์ด ์์ด์.
Work Node ์์๋ ์ค์ ๋ก ์ด์ํ๊ณ ์ ํ๋ Container๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ pod๋ผ๋ ๊ฐ๋
, ์ด pod๋ฅผ ์ด์ํ๊ธฐ ์ํ kubelet์ด๋ผ๋ ๊ฐ๋
์ด ํฌํจ๋์ด ์์ด์.
๊ฐ๋ฐ์๋, ๊ด๋ฆฌ์๊ฐ ๊ฐ๊ฐ์ ์ ๊ทผ Tool(UI๋ฅผ ๊ฐ์ง Web Service Tool ํน์ CLI Tool)๋ก K8s Master Node API์ ๋ช
๋ น์ด๋ฅผ ์ ๋ฌํ๋ฉด API๋ ์๊ธฐ๊ฐ ๊ฐ์ฉํ ์ ์๋ Work Node๋ค์๊ฒ ๊ฐ๋ฐ์๋, ๊ด๋ฆฌ์๊ฐ ๋ณด๋ธ ๋ช
๋ น์ด๋ฅผ ์ ๋ฌํ๊ฒ ๋์.
API๊ฐ ์ ๋ฌํ ๋ช
๋ น์ด๋ Cube(K8s) Proxy๊ฐ ๋ฐ๋ ์ญํ ์ ํ๋๋ฐ, Cube(K8s) Proxy๋ Cluster์ ๊ฐ Work Node์์ ์คํ๋๊ณ ์๋ Network Proxy์์.
์ฆ, K8s์์ Service์ ๊ฐ๋
์ผ๋ก ๋ณด๋ฉด ์ข์ ๊ฑฐ ๊ฐ์์. ์ด ์น๊ตฌ๋ Network์ ์ ์ง, ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๊ณ ์์ด์.
Master Node์์ ๊ฐ๊ฐ ๊ฐ์ฉํ ์ ์๋ Work Node์ ์ด๋ค ๋ช
๋ น์ด๋ฅผ ์ ๋ฌํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ Container๋ฅผ Pod ํํ๋ก ๋ฌถ์ด์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ํํ์์.
K8s๋ ์ฌ์ฉํ ์ ์๋ ์ต์ํ์ ๋จ์์ธ Pod๋ผ๋ ํํ๋ก ๋ฌถ์ด ๋ฐฐํฌ๋ฅผ ํ๊ฒ ๋๊ณ , ์ด Pod์์๋ ์ฌ๋ฌ Container๊ฐ ์กด์ฌํ ์ ์์ด์.
๊ฐ๊ฐ์ Work Node๋ Container๋ฅผ ์ด์ํ๊ธฐ ์ํ Container Engine์ ๊ฐ์ง๊ณ ์์ด์ผ ํด์.
Work Node๋ฅผ ๋จ์ผ Node๋ก ๊ตฌ์ฑํ ์๋ ์์ง๋ง, ์์ ์ ์ธ Service๋ฅผ ์ํด Multi Node๋ฅผ ๊ฐ์ง๊ณ , K8s Cluster๋ฅผ ๊ตฌ์ฑํ๋๊ฒ ์ข์์.
Pod์์ ํฌํจ๋์ด ์๋ ์ฆ, Work Node์์ ํฌํจ๋์ด ์๋ Service๋ฅผ ํ๋ํด์ ์ดํด๋ณผ๊ฒ์.
์ผ๋จ, Service์ Pod ๊ฐ๋
์ด ์กด์ฌํ๋๋ฐ, ์ด ๋ ์น๊ตฌ๋ K8s๊ฐ ์ฌ์ฉํ ์ ์๋ Object ๋๋ ์์(Resource)๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฐ๋
์ด๊ณ , Service๋ ๊ฐ๊ฐ์ Pod ๊ฐ์ Data๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก Network ๊ด๋ จ ์์
์ ์ฒ๋ฆฌํ๋ ์น๊ตฌ์์.
Pod๋ Container๋ค์ด Packaging ๋์ด ์๋ ์ต์ํ์ ๋จ์์ด๊ณ , Application๋ค์ด ๋ฌถ์ฌ ์๋ ๊ฒ์ด๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฑฐ ๊ฐ์์.
๐ง ์ฐธ๊ณ ์๋ฃ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
'์ด๋ก ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด๋ก ๋ด์ฉ] ZFS๋? (0) | 2023.07.07 |
---|---|
[WiKi] ๋ฌธ๋ฒ ์ ๋ฆฌ (0) | 2022.10.28 |
[REDMINE] ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2022.10.27 |