Kubernetes
Kubernetes, Kubernetes Architecture, Object, Controller, Label, Selector, Annotation
Last updated
Was this helpful?
Kubernetes, Kubernetes Architecture, Object, Controller, Label, Selector, Annotation
Last updated
Was this helpful?
์ฟ ๋ฒ๋คํฐ์ค๋ ๋ถ์ฐํ๊ฒฝ์์ ์ปจํ ์ด๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.
๋ง์ดํฌ๋ก ์๋น์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ก ๋๋์ด์ ธ์ ๊ด๋ฆฌ ํฌ์ธํธ๊ฐ ๋์ด๋ฌ๊ณ ์ด๋ฅผ ๊ด๋ฆฌํด ์ค ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ์ํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ ๊ณณ์ ๋ง์ดํฌ๋ก์๋น์ค, ML ์ํฌ๋ก๋ ๋ฑ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์์คํ ๊ตฌ์ถ์ ์ํ ์์์ ์ ์ต์ํ๊ณ , ์์คํ ์ ์ ํ ์๋น์ค๋ก ์ด์ํ๋ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ Master์ Note๋ก ๊ตฌ์ฑ๋๋ค. Master๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๊ณ Node๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด ์์ปค๋ก VM ํน์ ๋ฌผ๋ฆฌ๋จธ์ ์ด๋ค.
ํ๋๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ฐฐํฌํ ์ ์๋ ๊ฐ์ฅ ์์ ๋จ์๋ก ์ปจํ ์ด๋ ๊ทธ๋ฃน์ ์ปจํ ์ด๋ ์ฌ์ด์ ์คํ ๋ฆฌ์ง, IP ๋ฑ ์์์ ๊ณต์ ํ๋ค. ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก ๋์ปค๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ, ํ๋ ๋ผ์ดํ ์ฌ์ดํด์ kubelet์ด ๊ด๋ฆฌํ๋ค.
ํ๋๊ฐ ์ฌ์ฉํ๋ ์คํ ๋ฆฌ์ง๋ค. ํ๋๋ stateless ํ๋ฏ๋ก ๋ฐ์ดํฐ ๋ณด์กด์ด ํ์ํ ๊ฒฝ์ฐ ๋ณผ๋ฅจ์ ๋ง๋ค๊ณ ํ๋์ ๋ถ์ฌ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ณผ๋ฅจ์ PV (Persistent Volume)๋ผ๊ณ ํ๋ฉฐ, PV ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๋ static ๋ฐฉ๋ฒ๊ณผ ์์ฒญ์ด ์์ ๋ ๋ง๋๋ dynamic ๋ฐฉ๋ฒ์ด ์๋ค. dynamic ๋ฐฉ๋ฒ์ PVC์ storageClassName ํญ๋ชฉ์ StorageClass ๋ช ์ ๋ฃ์ผ๋ฉด StorageClass๋ฅผ ํตํด PV๋ฅผ ์์ฑํ๋ค. PV๋ ์ง์ ์ปจํ ์ด๋์ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉฐ, PVC์ ์ ์ํ ์กฐ๊ฑด์ ๋ง๋ PV๊ฐ ์์ผ๋ฉด ๋ฐ์ธ๋ฉํ๋ค. ํ๋ PVC๋ฅผ ๋ณผ๋ฅจ์ผ๋ก ์ธ์ํ์ฌ ์ฌ์ฉํ๋ค.
ํ๋์ ์ ๊ทผํ ์ ์๋ ๋คํธ์ํฌ๋ฅผ ๊ด๋ฆฌํ๋ค. ํ๋๊ฐ IP๋ฅผ ๊ฐ์ง๊ณ ์์ด๋ ์๋น์ค๊ฐ ์์ผ๋ฉด ํด๋ฌ์คํฐ ์ธ๋ถ๋ก ๋ ธ์ถํ ์ ์๋ค. ํ์ง๋ง SSL ์ธ์ฆ์ ์ฒ๋ฆฌ๋ URI ๊ธฐ๋ฐ ๋ผ์ฐํ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
ํด๋ฌ์คํฐ ์ธ๋ถ์์ ๋ด๋ถ๋ก ์ ๊ทผํ๋ ์์ฒญ๋ค์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๊ท์น์ ์ ์ํ๊ณ ๊ท์น์ ๋ฐ๋ผ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ค. ์ธ๊ทธ๋ ์ค๋ L7 ๋ก๋๋ฐธ๋ฐ์ฑ ๊ธฐ๋ฅ์ผ๋ก URI ๊ธฐ๋ฐ ๋ผ์ฐํ ์ ์ ๊ณตํ๋ค.
๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ์์ ๊ทธ๋ฃน์ผ๋ก Namespace๋ณ๋ก ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌ๋์ด ์๋ค.
ํ๊ฒฝ์ค์ ์ ์ ์ฅํ๋ ์ค๋ธ์ ํธ์ด๋ค.
์ปจํผ๊ทธ๋งต์ ์ ์ฅํ ์ ์๋ ๋ฏผ๊ฐ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์ค๋ธ์ ํธ์ด๋ค. base64 ๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
์ปจํธ๋กค๋ฌ๋ ํ๋ ์ํ ๊ด๋ฆฌ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ๋ ํ๋ฆฌ์นด์ , ๋ํ๋ก์ด๋จผํธ, ๋ฐ๋ชฌ์ , ์คํ ์ดํธํ ์ , ์ก ๋ฑ์ด ์๋ค.
์ง์ ํ ์คํ ํ๋ ์๋ฅผ ์ ์ง์ํค๋ ์ญํ ์ ํ๋ Controller์ด๋ค. ๋ํ๋ก์ด๋จผํธ๊ฐ ์์ ๊ฐ๋ ์ด๋ค.
ํ๋๋ฅผ ๋ฐฐํฌํ๊ณ ๋ฅผ ๊ด๋ฆฌํ๋ Controller์ด๋ค. ์ฟ ๋ฒ๋คํฐ์ค deployment๋ฅผ ์ค์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ ์ ์๋ค. deployment๋ฅผ ์ค์ ํ๋ฉด replica ๊ฐ์ ๋ฐ๋ผ ํ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ ReplicaSet๋ ์์ฑํ๋ค.
๋ก๊ทธ ์์ง๊ธฐ์ ๊ฐ์ด ๋ชจ๋ ๋ ธ๋์ ํ๋ ํ๋์ฉ ๊ตฌ์ถํ ๋ ๊ฐ ํ๋๋ฅผ ๊ด๋ฆฌํ๋ Controller์ด๋ค.
์คํ ์ดํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ๋๋ค์ ๊ด๋ฆฌํ๋ Controller์ด๋ค. ์์๋ฅผ ์ง์ ํ์ฌ ํ๋๋ฅผ ์คํํ๊ณ ๋ณผ๋ฅจ์ ์ง์ ํ์ฌ ํ๋๊ฐ ๋ด๋ ค๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์ง ์๋๋ค. ํ๋ ์ด๋ฆ ๋ค์ ์์๋ฅผ ๋ํ๋ด๋ ์ซ์๊ฐ ๋ถ๋๋ค.(0 ~ n)
๋ฐฐ์น ์์ ๊ฐ์ด ํ๋ฒ ์คํ๋๊ณ ๋๋๋ ์์ ์ฉ ํ๋๋ฅผ ๊ด๋ฆฌํ๋ Controller ์ด๋ค.
์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ๋ Job์ Controller ํ๋ค.
๋ ์ด๋ธ์ ํน์ ์ค๋ธ์ ํธ ์ธ์ํ์ด๊ณ , ์ด๋ ธํ ์ด์ ์ ์ค๋ธ์ ํธ ์ฃผ์, ์ ๋ ํฐ๋ ํน์ ๋ ์ด๋ธ์ ์ฐพ๋ ์ญํ ์ ํ๋ค.
์ฌ์ฉ์๊ฐ API Server์ ์ปจํ ์ด๋ ์์ฑํ๋ผ๊ณ ์ ๋ฌํ๋ฉด Scheduler๊ฐ ์ด๋ ๋ ธ๋์ ์์ฑํ ์ง ์ค์ผ์ค๋งํ๊ณ ์ ๋ณด๋ฅผ etcd์ ์ ์ฅํ๋ฉด kubelet์ด ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค.
๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ๊ฐ ์ด๋ ค์ด ์ ์ค์ ํ๋๋ ์๋น์ค๊ฐ ์ฆ๊ฐํ ์๋ก, ์๋น์ค๊ฐ ์ฐ๊ณ๊ฐ ๋ณต์กํด์ ธ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ ์๋น์ค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋์ง ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค. ๊ทธ๋์ ๋ง์ดํฌ๋ก ์๋น์ค์์๋ ์๋น์ค๊ฐ ๋ชจ๋ํฐ๋ง์ด ์ค์ํ๋ค.
Kubernetes components, https://kubernetes.io/ko/docs/concepts/overview/components/ Kubernetes architecture, https://luludansmarue.github.io/kubernetes-docker-lab/k8s/architecture.html Kubernetes Concepts Condensed In A Diagram, http://www.mycloudreference.com/kubernetes-concepts-condensed-in-a-diagram/ Patterns for Composite Containers, https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns/ Kubernetes NodePort vs LoadBalancer vs Ingress? When should I use what?, https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0 https://kubernetes.io/ko/docs/concepts/services-networking/service/#proxy-mode-userspace Kubernetes Ingress, Istio Gateway, https://binux.tistory.com/63?category=934681 https://medium.com/@zhaohuabing/which-one-is-the-right-choice-for-the-ingress-gateway-of-your-service-mesh-21a280d4a29c