์ฟ ๋ฒ๋คํฐ์ค
(k8s = kubernetes)
์ค๋ช
• ์ปจํ
์ด๋๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐํฌ/ํ์ฅํ๊ณ ๊ด๋ฆฌ๋ฅผ ์๋ํํด์ฃผ๋ ์คํ์์ค ํ๋ซํผ
• ์ฝ๊ฒ๋งํด, ๋ค์์ ์ปจํ
์ด๋๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ์ฌ์ฉ
• ๊ตฌ๊ธ์์ ๋ง๋ค์๊ณ borg ๊ธฐ๋ฐ
•์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
(container orchestration)์ ํ์ค
↑↑↑ click-! ↑↑↑
โป ์ปจํ ์ด๋
• ํ๋์ ์ด์์ฒด์ (OS) ์ปค๋ ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ๋ฐ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ํ๋ก์ธ์ค ์ํ
• ์ด์์ฒด์ ํ๊ฒฝ์ ๊ด๊ณ ์์ด ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์์ ์ผ๊ด๋ ๊ฒฐ๊ณผ ๋ณด์ฅ
• ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ ์ด์์ฒด์ (OS)์ ๊ณต์
• ์ปจํ ์ด๋ ๋ด์๋ ์์ฒด ํ์ผ์์คํ , CPU์ ์ ์จ, ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ค ๊ณต๊ฐ ๋ฑ์ด ์กด์ฌ.
• ํด๋ผ์ฐ๋ or OS ๋ฐฐํฌ๋ณธ์ ๋ชจ๋ ์ด์ ๊ฐ๋ฅ.
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
• ๋ถ์ฐ์์คํ ์ ํ๋ ฅ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ฌ์ฉ. (๋ฐฐํฌ ๊ด๋ฆฌ๋ฑ์ ์์คํ ์ด ์์์ ์ฒ๋ฆฌํด์ค์ผ๋ก์จ ์์ ์ฑ์ ๊ธฐ์ฌํจ)
Desired State (์ํ๋ ์ํ)
• ์ํ ์ฒดํฌ(Observe) ์ค ํ์ฌ์ํ(Current State)์์ ์ฐจ์ด์ (Diff)์ด ๋ฐ๊ฒฌ์ ์กฐ์น(Act)๋ฅผ ์ทจํ์ฌ ์ํ๋ ์ํ๋ก ๋ง๋ฌ
• ๋น๊ตํ๊ณ ๋น๊ตํ๊ณ ๋น๊ตํ์ฌ ๋ค๋ฅด๋ฉด ๊ทธ์ ๋ง๊ฒ ์ํ๋ฅผ ๋ณ๊ฒฝํจ
• API ๊ฐ ํ์ฌ์ํ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ๋ณด์กดํ๊ธฐ ์ํด etcd๊ฐ ํ์ (ํ๋ชธ์ผ๋ก ์์ง์)
์ฟ ๋ฒ๋คํฐ์ค ์ปดํฌ๋ํธ
• ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋ฐฐํฌํ์์๋ ์์ฑ
์ฟ ๋ฒ๋คํฐ์ค ์ํคํ ์ฒ
โ ๋ง์คํฐ๋
ธ๋์ ์์ปค๋
ธ๋๋ก ๊ตฌ์ฑ โ
โฃ ๋ง์คํฐ ๋
ธ๋์๋ kubectl, API ์๋ฒ, etcd, ์ปจํธ๋กค๋ฌ ๋งค๋์ , ์ค์ผ์ค๋ฌ ๋ฑ์ด ์กด์ฌ. (์ ์ธ์ ์์คํ
)
โฃ์์ปค๋
ธ๋์๋ kubelet, ์ปจํ
์ด๋ ๋ฐํ์, Pod, ๋คํธ์ํฌํ๋ฌ๊ทธ์ธ, CoreDNS ๊ฐ ์กด์ฌํจ. (์์ปค๋
ธ๋๋ ์์ปคํ๋ก ๊ตฌ์กฐ)
โ Kubernetes cluster
โฃ ์ปจํ
์ด๋ํ๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ๋
ธ๋๋ผ๊ณ ํ๋ (์ปจํ
์ด๋ ์คํ์ํจ) ์ ์์ปค ๋จธ์ ์ ์งํฉ
โ Control Plane
โฃ ๋์์์ด ์ํ๋ฅผ ์ฒดํฌํ๊ณ ์ํ๋ ์ํ๋ฅผ ์ ์งํจ (์๋ก์๊ธด Pod์ ๊ณ์ ์ฒดํฌํจ)
โฃ etcd, API ์๋ฒ, Scheduler, ์ปจํธ๋กค๋ฌ๋งค๋์ , ํด๋ผ์ฐ๋ ์ปจํธ๋กค๋ฌ ๋งค๋์ ๋ฑ์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ → ์ด๋ฅผ ์คํํด์ฃผ๋ ๊ฒ์ด Master
โฃ ๋ง์คํฐ๋
ธ๋
โ Controller
โฃ ๋์์์ด ์ํ๋ฅผ ์ฒดํฌํ๊ณ ์ํ๋ ์ํ๋ฅผ ์ ์งํจ (์๋ก์๊ธด Pod์ ๊ณ์ ์ฒดํฌํจ, API ์๋ฒ๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ๊ณต์ ์ํ ๊ฐ์)
โฃ ๋จ์ผ ํ๋ก์ธ์ค๋ก ์คํ (๋ณต์ก์ฑ ๋ฎ์ถค)
โฃ ๋ฌดํ๋ฐ๋ณต์ผ๋ก ๋๋ฉด์ ์ฒดํฌ
โฃ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ค์ํ ์ปจํ
์ด๋๊ฐ ์กด์ฌํจ (๋ณต์ ์ปจํธ๋กค๋ฌ,, ๋
ธ๋์ปจํธ๋กค๋ฌ,, ์๋ํฌ์ธํธ ์ปจํธ๋กค๋ฌ,, 10๊ฐ..20๊ฐ..)
โ Scheduler
โฃ Node ํ์ฌ ์ํ๋ฅผ ์ฒดํฌํจ
โฃ ์๋ก ์์ฑ๋ Pod์ ๊ฐ์งํ๊ณ ์คํํ ๋
ธ๋๋ฅผ ์ ํํจ. (ํ ๋น์์ฒญ Pod์ ํ์ธํจ)
โฃ ๋
ธ๋์ ํ์ฌ ์ํ์ Pod์ ์๊ตฌ์ฌํญ์ ์ฒดํฌํจ
โ API Server
โฃetcd ์ ์ ์ผํ๊ฒ ํต์ ํ๋ ๋ชจ๋ **
โฃ ์ํ๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ์กฐํํ๋ ๊ธฐ๋ฅ (์กฐํ ๋ฐ ์์ฒญ์ ๋ฌด์กฐ๊ฑด API Server์ ํตํด์ ํจ)
โฃ REST API ํํ๋ก ์ ๊ณต
โฃ ๊ถํ์ฒดํฌ, ๊ด๋ฆฌ์ ์์ฒญ ๋ฟ ์๋๋ผ ๋ค์ํ ๋ด๋ถ ๋ชจ๋๊ณผ ํต์ ํจ
โฃ ์ํ์ผ๋ก ํ์ฅ๋๋๋ก ๋์์ธ
โ etcd
โฃ ์ํ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ (๋ ๋ผ๊ฐ์ง์๊ฒ,, ๋ณดํต 3๋๋ก ๊ด๋ฆฌ,, ๋ฐฑ์
ํ์)
โฃ ๋ณต๊ตฌ ๊ฐ๋ฅํ๋๋ก ํจ
โฃ ๊ณ ๊ฐ์ฉ์ฑ, ์ผ๊ด์ฑ
โฃ Key, Value ํํ ๋ฐ TTL(time to live), watch ๊ฐ์ ๋ถ๊ฐ ๊ธฐ๋ฅ ์ ๊ณต
์ฟ ๋ฒ๋คํฐ์ค ๋ ธ๋(Node) ์ปดํฌ๋ํธ
โช๏ธ ์ปจํ
์ด๋ํ๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์คํ
โช๏ธ ํด๋ฌ์คํฐ์ ๋ฐ๋ผ ๊ฐ์ or ๋ฌผ๋ฆฌ์ ์ผ ์ ์๋ค.
โช๏ธControl Plain ์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, Pod์ ์คํํ๋ ๋ฐ ํ์ํ ์๋น์ค๋ฅผ ํฌํจํจ.
โช๏ธ ํ๋์ ํด๋ฌ์คํฐ์๋ ์ฌ๋ฌ๊ฐ์ ๋
ธ๋๊ฐ ์กด์ฌ.
โ kubelet
โฃ Pod ์ ์คํ/์ค์งํ๊ณ ์ํ๋ฅผ ์ฒดํฌํจ (๊ฐ ๋
ธ๋์์ ์คํ, ๋ฏธ์คํ Pod์ ํ์ธํ์ฌ Pod์ ์์ฑํจ)
โฃ ๋ค ์คํ๋์ด ์์ด์ผ ํจ.
โฃ ์ปจํ
์ด๋๋ฅผ ์ง์ ์ฐ์ง ์๊ณ Pod๋ผ๋ ๊ฑธ๋ก ๊ฐ์ธ์ ์ฌ์ฉํจ.
โ kube-proxy
โฃ ๋คํธ์ํฌ ํ๋ก์์ ๋ถํ ๋ถ์ฐ ์ญํ , iptables or IPVS์ ์ฌ์ฉ (์ค์ ๋ง ๊ด๋ฆฌ)
โ ์ปจํ
์ด๋ ๋ฐํ์
โฃ์ปจํ
์ด๋ ์คํ์ ๋ด๋นํ๋ ์ํํธ์จ์ด
Kubectl
โช๏ธ ๋ช ๋ นํ ์ปค๋งจ๋.. ์ด๋ฅผ ์ด์ฉํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํจ
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ
โ Pod
โฃ ์ฟ ๋ฒ๋คํฐ์ค์์ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๋ฐฐํฌ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ์ปดํจํ
๋จ์
โฃ ์ ์ฒด ํด๋ฌ์คํฐ์์ ๊ณ ์ ํ IP์ ํ ๋น (Pod ๋ณ๋ก IP ํ ๋น)
โฃ ํ๋์ Pod ์์ ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋ ์ํ ์ ์๋ค.
โ ReplicaSet
โฃ Pod์ ๋จ๋
์ผ๋ก ๋ง๋ ์ํฉ์์ pod๊ฐ ์ฌ๋ผ์ง๋๊ฒฝ์ฐ(์๋ฒ๊ฐ์ฃฝ์) ์๋๋ณต๊ตฌ๊ฐ ๋์ง ์๋๋ฐ, ์ด๋ฌํ pod์ ์๋ ๋ณต์ ๊ด๋ฆฌํด์ฃผ๋๊ฒ.
โฃ ์ฌ๋ฌ๊ฐ์ Pod ์ ๊ด๋ฆฌ (๋ช๊ฐ์ Pod์ ๊ด๋ฆฌํ ์ง ๊ฒฐ์ )
โฃ ๋ฌด์ค๋จ๋ฐฐํฌ ํ๊ณ ์ถ์๋ ์ฌ์ฉ
โฃ ์ ๊ท Pod์ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด์ Pod์ ์ ๊ฑฐํ์ฌ ์ํ๋ ์ (Replicas)์ ์ ์ง
โ Deployment
โฃ ๋ฐฐํฌ๋ฒ์ ๊ด๋ฆฌ (ReplicaSet์ ์ด์ฉํ์ฌ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํจ)
โฃ ๋ด๋ถ์ ์ผ๋ก ReplicaSet ์ ์ด์ฉํจ
โ Workload
โฃ ํด๋ฌ์คํฐ ๋ด์์ Pod ์คํ์ค ์งํฉ ๋ํ๋
โ Service
โฃ ํ๋ ์งํฉ์์ ์คํ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋คํธ์ํฌ ์๋น์ค๋ก ๋
ธ์ถํ๋ ์ถ์ํ ๋ฐฉ๋ฒ.
โฃ Pod ์ ์ฐ๊ฒฐํ๊ณ ์ธ๋ถ์ ๋
ธ์ถ
โ Service > ClusterIP
โฃ Pod์ ๋ก๋๋ฐธ๋ฐ์ ํ๋ ์๋น์ค
โฃ ํด๋ฌ์คํฐ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ํ๋ก์
โฃ Pod๋ ๋์ ์ด์ง๋ง, Service๋ ๊ณ ์ IP์ ๊ฐ์ง
โฃ ํด๋ฌ์คํฐ ๋ด๋ถ์์ ์๋น์ค ์ฐ๊ฒฐ์ DNS ์ด์ฉ
โ Service > NodePort
โฃ ๋
ธ๋์ ๋
ธ์ถ๋์ด ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ ์๋น์ค (๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ทผ ๊ฐ๋ฅ ๋ฑ)
โฃ ๋ชจ๋ ๋
ธ๋์ ๋์ผํ ํฌํธ๋ก ์์ฑ
โ Service > LoadBalancer
โฃ ํ๋์ IP์ฃผ์๋ฅผ ์ธ๋ถ์ ๋
ธ์ถ
โ Ingress
โฃ URL, path ๊ธฐ๋ฐ ๋ผ์ฐํ
์ ์
โฃ SSL ๋ณด์ ์ฐ๊ฒฐ
โฃ domain path์ ๋ฐ๋ผ ๋ด๋ถ ClusterIp์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ฒ๋ฆฌ
โฃ ํด๋ฌ์คํฐ ๋ด์ ์๋น์ค์ ๋ํ ์ธ๋ถ ์ ๊ทผ์ ๊ด๋ฆฌํ๋ API ์ค๋ธ์ ํธ์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก HTTP์ ๊ด๋ฆฌํจ.
โ Volume
โฃ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ์๋ ๋๋ ํฐ๋ฆฌ์ด๋ฉฐ, Pod์ ์ปจํ
์ด๋์์ ์ ๊ทผ ๊ฐ๋ฅ.
โ ConfigMap
โฃ key-value ์์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉํ๋ API ์ค๋ธ์ ํธ.
โฃ ์ค์ ๊ฐ์ Pod ์ ์ ๋ฌ
โฃ ์ปจํ
์ด๋ ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅ ํด ๋๋ ์ผ์ข
์ ์ ์ฅ์ (key / value ํ์)
โฃ ์ปจํ
์ด๋์์ ํ์ํ ํ๊ฒฝ ์ค์ ๋ด์ฉ์ ์ปจํ
์ด๋์ ๋ถ๋ฆฌํด์ ์ ๊ณต
โฃ ์ค์ ๊ฐ์ด ๋ณ๊ฒฝ๋์์ ๋๋ง๋ค ์ปจํ
์ด๋์ ์ฌ๋ฐฐํฌ ์์ด ์ ์ฉ ๊ฐ๋ฅ
โป ์ฐธ๊ณ
- ์ธํ๋ฐ ๊ฐ์: ์ด๋ณด๋ฅผ ์ํ ์ฟ ๋ฒ๋คํฐ์ค ์๋ด์
- ์ฑ : ์ปจํ ์ด๋ ์ธํ๋ผ ํ๊ฒฝ ๊ตฌ์ถ์ ์ํ ์ฟ ๋ฒ๋คํฐ์ค / ๋์ปค
- ๋งํฌ: https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/
- ๋งํฌ: https://subicura.com/2019/05/19/kubernetes-basic-1.html
'๊ฐ๋ฐ > infra' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Jenkins] Pipeline ์ผ๋ก Docker์ ์์ค์ฝ๋ ๋ฐฐํฌํด๋ณด๊ธฐ ์ ๋ฆฌ ! (1) | 2022.09.11 |
---|---|
VM(Virtual machine) & Container (feat. docker) (1) | 2022.09.04 |
CI/CD ๋ฐ Jenkins (0) | 2022.09.04 |
[Jenkins] ์์ ๊ฒฐ๊ณผ๋ฌผ(Springboot jar file, gradle ์ด์ฉ)์ AWS EC2์ ๋ฐ์ํด๋ณด๊ธฐ (2) | 2022.05.06 |
[k8s] ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ (container orchestration) (0) | 2022.02.16 |