Kubernetes ์ํคํ ์ฒ
Kubernetes ์ํคํ ์ฒ ๊ด๋ จ
์ํคํ ์ฒ ์ดํด
Kubernetes๋ฅผ ๋ฐฐํฌํ๋ฉด ํด๋ฌ์คํฐ๊ฐ ๋ฐฐํฌ๋๋ค. ์ด Kubernetes ํด๋ฌ์คํฐ๋ ์ปจํ
์ด๋์ผ๋ก ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ๋
ธ๋(Node)๋ผ๊ณ ํ๋ ์์
์ ๋จธ์ ์ ์งํฉ์ด๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ์ปดํฌ๋ํธ๋ฅผ Pod๋ผ๊ณ ํ๋ฉฐ, ์์ ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฐ์ด ์ด Pod๊ฐ ํ๋ ์ด์์ ๋
ธ๋์ ํฌํจ๋์ด ๋ฐฐํฌ๋๋ค. ๋
ธ๋ ์ ์ด๋ kubelet
์ด๋ผ๋ ์์ด์ ํธ์์ ์ํ๋๋ฉฐ, ๋
ธ๋์ ๋ํ ์ก์ธ์ค๋ kube-proxy
๋ผ๋ ํ๋ก์๋ฅผ ํตํด ์ด๋ฃจ์ด ์ง๋ค.
์ปจํธ๋กค ํ๋ ์ธ(Control plane)์ด๋ผ๋ ๊ตฌ์ฑ ์์๋ ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๋ โโ๊ธฐ๋ฅ์ ๊ฐ๋๋ค.
Kubernetes์ ๋ ธ๋
Kubernetes์์๋ ํด๋ฌ์คํฐ ์ ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ๋ก์จ ๋ง์คํฐ ๋ ธ๋(Master Node) ๊ฐ ์กด์ฌํ๊ณ , ์ปจํ ์ด๋๊ฐ ๋ฐฐํฌ๋๋ ๋จธ์ (๊ฐ์๋จธ์ ์ด๋ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ๋จธ์ )์ธ ์์ปค ๋ ธ๋(Worker Node) ๊ฐ ์กด์ฌํ๋ค.
๋ง์คํฐ ๋ ธ๋(Master Node) ๋ผ๊ณ ํ๋ Docker์์ ๋งํ๋ Daemon๊ณผ ๊ฐ์ ์ญํ ์ ๊ฐ์ง ๋ ธ๋์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ปค๋ฉ๋๋ฅผ ๋ณด๋ด๊ณ , ๊ทธ๊ฒ์ ๋ฐ์ ๋ง์คํฐ ๋ ธ๋๊ฐ ์์ปค ๋ ธ๋(Worker Node) ๋ผ๊ณ ํ๋ ๋ ธ๋์ ์ปค๋ฉ๋๋ฅผ ๋ณด๋ด๋ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค.
๋ง์คํฐ ๋ ธ๋(Master node, Control plane)์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํด๋ฌ์คํฐ ์ ์ด
- ์์ปค ๋ ธ๋๋ค์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ์ด
- ์ค์ผ์ค๋ง, ๋ผ์ดํ์ฌ์ดํด ๋ชจ๋ํฐ๋ง
- ๋ถํ ๋ถ์ฐ, ์๋ ๋ณต๊ตฌ
- single master
- multi master(3, 5๊ฐ์ master nodes)
์์ปค ๋ ธ๋(Worker node)์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ปจํ ์ด๋๊ฐ ์คํ๋๋ ์๋ฒ
- ๋์ปค ํ๋ซํผ์ ํตํด ์ปจํ ์ด๋๋ฅผ ๋์ํ๋ฉฐ ์ค์ ์๋น์ค ์ ๊ณต
- ๋ค์ค ๋ ธ๋๋ก ํด๋ฌ์คํฐ ํ์ฑ
- ๋ง์คํฐ ๋ ธ๋์ ๋ช ๋ น์ ๋ฐ๋ผ Pod ์์ฑ, ์ญ์
๊ฐ ๊ตฌ์ฑ ์์๋ HTTPS๋ฅผ ํตํด ํต์ ํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ํ์ฑํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์คํ ์ปค๋ฉ๋๋ฅผ ์
๋ ฅํ๋ ๊ฒ์ ์ฝ์์ด์ง๋ง, Kubernetes์ ๊ฒฝ์ฐ๋ kubectl
์ปค๋ฉ๋๋ฅผ ํตํ์ฌ ๋งค๋ํ์คํธ(manifest)๋ผ๊ณ ํ๋ ๊ฐ์ข
์ค์ ์ ์์ฑํ ํ์ผ์ ์์ฑํ๊ฑฐ๋, ๋งค๋ํ์คํธ ํ์ผ์ ๊ทผ๊ฑฐํด ๋ง์คํฐ ๋
ธ๋์ ์์์ ์กฐ์์ ์คํ๋๋๋ก ๋ช
๋ นํ๋ค.
์ปจํธ๋กค ํ๋ ์ธ ์ปจํฌ๋ํธ (Control plane component, ๋ง์คํฐ ์ปดํฌ๋ํธ)
kube-apiserver
- Kubernetes ์์ ์ ์๋ฅผ ์กฐ์ํ๊ธฐ ์ํ REST API ์ธ๋ถ์ ์ ๊ณตํ๋ค.
- Kubernetes ์ปจํธ๋กค ํ๋ ์ธ์ ํ๋ฐํธ ์๋
etcd
kube-apiserver
๊ฐ ์์ ์ ์ ๋ฑ์ ์ ์ฅํ๋ DB์ด๋ค.- ๋ถ์ฐ DB์ด๋ฏ๋ก ๋ณดํต์ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ๋ค.
- ์ผ๊ด์ฑ, ๊ณ ๊ฐ์ฉ์ฑ์ ๊ฐ์ง Key-value ์ ์ฅ์
- Kubernetes์ ๋ชจ๋ ํด๋ฌ์คํฐ ์ ๋ณด์ ์ ์ฅ์
kube-scheduler
- Pod์ ๋ ธ๋๊ฐ ํ ๋น๋์ด ์๋์ง ํ์ธํ๊ณ ํ ๋นํ๋ค.
kube-controller-manager
kube-apiserver
์ API๋ฅผ ์ฌ์ฉํ์ฌ Pod ์ ์ ์์ฑ์ ๋ชจ๋ํฐ๋งํ์ฌ Pod๋ฅผ ๋ฐฐํฌํ ์์น๋ฅผ ๊ฒฐ์ ํ๋ค.- ์๋ฆผ ๋ฐ ํฌ๋ ์๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ์ฌ๋ฌ ์ปจํธ๋กค๋ฌ ํ๋ก์ธ์ค ์คํํ๋ค.
- Pod๋ฅผ ๊ด์ฐฐํ๋ฉฐ ๊ฐ์๋ฅผ ๋ณด์ฅํ๋ค.
cloud-controller-manager
kube-apiserver
์ API์์ ๋ค์ํ ๋ฆฌ์์ค ์ ์๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ ์ค์ ๋ฆฌ์์ค์ ์ํ๋ฅผ ์ ์์ ๋์ผํ๊ฒ ๋ง๋ ๋ค.- ๊ธฐ๋ฐ์ธ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ์ํธ์์ฉํ๋ ์ปจํธ๋กค๋ฌ ์คํํ๋ค.
์์ปค ๋ ธ๋ ์ปดํฌ๋ํธ
์์ปค ๋ ธ๋ ์ปดํฌ๋ํธ๋ Pod๋ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋งํ๋ค.
kubelet
- ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์์ ์คํ๋๋ ์์ด์ ํธ.
kube-apiserver
์ API๋ก Pod ์ ์๋ฅผ ๊ฐ์ํ๊ณ , ์ปจํ ์ด๋์ ๊ธฐ๋ ๋ฐ ์ ์ง๋ฅผ ํ๊ธฐ ์ํด์ Docker๊ณผ ์ฐ๊ฒฐ๋๋ค.kube-apiserver
๋ก๋ถํฐ์ API ํธ์ถ์ ๋ฐ๋ HTTPS ํฌํธ๋ฅผ ๊ฐ์ง๊ณ ์์ด ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ๋ฐํํ๊ธฐ๋ ํ๋ค.- ๊ฐ ์ปจํ ์ด๋๊ฐ Pod์์ ์คํ ์ค์์ ๋ณด์ฅํ๋ค.
- ๋ฐ๋ชฌ ํํ๋ก ๋์
kube-proxy
- ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์์ ์คํ๋๋ ๋คํธ์ํฌ ํ๋ก์
kube-apiserver
์ API์์ Service ์ ์๋ฅผ ๊ฐ์ํ๊ณ , ํธ์คํธ OS์ ๋ํด Service์ ํต์ ์ ์ ์กํ๋ ์ค์ ์ ํ๋ค.- iptables rule์ ๊ตฌ์ฑ
- ์ปจํ
์ด๋ ๋ฐํ์
- ์ปจํ ์ด๋์ ์คํ๋ ์์ง
- docker, containerd, runc
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ง์ ๊ตฌ์ฑํ๋ ๋๊ตฌ
kubeadm
- ์ฟ ๋ฒ๋คํฐ์ค์์ ๊ณต์ ์ ๊ณตํ๋ ํด๋ฌ์คํฐ ์์ฑ/๊ด๋ฆฌ ๋๊ตฌ
- ์ฟ ๋ฒ๋คํฐ์ค ๊ณต์ ์ค์น ๋๊ตฌ (Kubernetes admin)
kubespray
- ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ๋ ์คํ ํ๋ก์ ํธ
- ๋ค์ํ ํ์์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ตฌ์ฑ ๊ฐ๋ฅ
- ์จํ๋ ๋ฏธ์ค์์ ์ฌ์ฉ ์๋น์ค ํด๋ฌ์คํฐ ์ด์์ ์ ์ฉ
์ค๋ธ์ ํธ
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด ์ค๋ธ์ ํธ์ด๋ค. ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ๋จ์๊ฐ ๋๋ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ(Basic object)์, ์ด ๊ธฐ๋ณธ ์ค๋ธ์ ํธ(Basic object) ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ปจํธ๋กค๋ฌ(Controller) ๋ก ์ด๋ฃจ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ค๋ธ์ ํธ์ ์คํ(์ค์ )์ด์ธ์ ์ถ๊ฐ์ ๋ณด์ธ ๋ฉํ ์ ๋ณด๋ค๋ก ๊ตฌ์ฑ์ด ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์ค๋ธ์ ํธ ์คํ (Object Spec)
์ค๋ธ์ ํธ๋ค์ ๋ชจ๋ ์ค๋ธ์ ํธ์ ํน์ฑ(์ค์ ์ ๋ณด)์ ๊ธฐ์ ํ ์ค๋ธ์ ํธ ์คํ(Object Spec)์ผ๋ก ์ ์๊ฐ ๋๊ณ , ์ปค๋งจ๋ ๋ผ์ธ์ ํตํด์ ์ค๋ธ์ ํธ ์์ฑ์ ์ธ์๋ก ์ ๋ฌํ์ฌ ์ ์๋ฅผ ํ๊ฑฐ๋ ๋๋ yaml์ด๋ json ํ์ผ๋ก ์คํ์ ์ ์ํ ์ ์๋ค.
๊ธฐ๋ณธ ์ค๋ธ์ ํธ (Basic Object)
์ฟ ๋ฒ๋คํฐ์ค์ ์ํด์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ค๋ธ์ ํธ๋ ์ปจํ ์ด๋ํ๋์ด ๋ฐฐํฌ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฌ๋ก๋๋ฅผ ๊ธฐ์ ํ๋ ์ค๋ธ์ ํธ๋ก Pod, Service, Volume, Namespace 4๊ฐ์ง๊ฐ ์๋ค. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด Pod๋ ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ , Volume์ ๋์คํฌ, Service๋ ๋ก๋๋ฐธ๋ฐ์ ๊ทธ๋ฆฌ๊ณ Namespace๋ ํจํค์ง๋ช ์ ๋๋ก ์๊ฐํ๋ฉด ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ๊ฐ์ ์์ธํ๊ฒ ์ดํด๋ณด๋๋ก ํ์.
๋ผ๋ฒจ
โฆ ์์ฑ์ค โฆ
์ปจํธ๋กค๋ฌ
โฆ ์์ฑ์ค โฆ
์ ๋์จ
- ๋คํธ์ํฌ ์ ๋์จ
- CNI - weave, calico, faneld, kube-route โฆ
- dns ์ ๋์จ
- coreDNS
- ๋์๋ณด๋ ์ ๋์จ
- ์ปจํ ์ด๋ ์์ ๋ชจ๋ํฐ๋ง
- cAdvisor
- ํด๋ฌ์คํฐ ๋ก๊น
- ์ปจํ ์ด๋ ๋ก๊ทธ, k8s ์ด์ ๋ก๊ทธ๋ค์ ์์งํด์ ์ค์ํ
- ELK(ElasticSeach, Logstash, Kibana), EFK(ElasticSeach, Fluented, Kibana), DataDog