K8S - boostcampwm-2024/refactor-web36-QLAB GitHub Wiki
K8S
๋ถ์ผ: INFRA ์ฌ๋: ์นํ ์ฅ ์ฃผ์ฐจ: 1์ฃผ์ฐจ
Docker
Layers
- ๋์ปค ์ด๋ฏธ์ง๋ ๋ ์ด์ด์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. DockerFile ์์์ ๊ฐ ๋ช ๋ น๋ง๋ค ํ๋์ ๋ ์ด์ด๋ก ์ฒ๋ฆฌ๋๋ค.
- ์ด๋ฏธ์ง์ ๋ ์ด์ด๋ค์ Read-Only ์ด๋ฉฐ, ๋ณ๊ฒฝ์ ์ํด์ ๋ค์ ๋น๋ํด์ผํ๋ค.
- ๋์ปค๋ ๊ฐ ๋ ์ด์ด์ ์ํ๋ฅผ ์บ์ฑํด๋๊ณ ์ถํ ๋ค์ ๋น๋ํ ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ค๋ฉด ์บ์ฑ๋ ๋ ์ด์ด๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ๋์ปคํ์ผ์ ์์ฑํ ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์ ์ ๋ช ๋ น์ ์๋จ์ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค.
- ์ ์ฅ๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด, ํด๋น ์ด๋ฏธ์ง ์์ ์ปจํ ์ด๋ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ์ฌ ์์ฑํ๋ค. ๊ธฐ์กด ์ด๋ฏธ์ง์ ๋ ์ด์ด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด ์๋๋ผ ์ฐธ์กฐํ๋ค. ๋ฐ๋ผ์ ๋์ผ ์ด๋ฏธ์ง๋ก 2๊ฐ ์ด์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ฌ๋, ํ๋์ ๊ฐ์ ์ด๋ฏธ์ง ๋ ์ด์ด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค.
Storages
๋์ปค์ ์คํ ๋ฆฌ์ง๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ Anonymous Volumes, Named Volumes, Bind Mounts 3๊ฐ์ง๊ฐ ์๋ค.
-
Anonymous Volumes
# 1. ๋์ปคํ์ผ ์์์ ์ ์ VOLUME /data # 2. ์ปจํ ์ด๋ ์คํ ์ ์ ์ docker run -v /path/in/container busyboxํธ์คํธ ์ปดํจํฐ์ ์ต๋ช ํด๋๋ฅผ ์์ฑํ๊ณ , ๋์ปค๊ฐ ์ด๋ฅผ ๊ด๋ฆฌํ๋ค. ์ปจํ ์ด๋ ์์ฑ ์ ์๋์ผ๋ก ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ค.
-
Named Volumes
# ์ปจํ ์ด๋ ์คํ ์ ์ ์ docker run -v my-volume:/data ubuntumy-volume ์ด๋ผ๋ ์ด๋ฆ์ ๋ณผ๋ฅจ์ ์์ฑํ๊ณ , ์ด๋ ์ปจํ ์ด๋ ๋ด๋ถ์
/dataํด๋์ ์ฐ๊ฒฐ๋๋ค. my-volume ์ด ์ค์ ๋ก ์กด์ฌํ๋ ํด๋๊ฐ ํธ์คํธ ์ปดํจํฐ์ ์์ฑ๋๊ณ , ๋์ปค๊ฐ ์ด๋ฅผ ๊ด๋ฆฌํ๋ค. ์ฌ๋ฌ ์ปจํ ์ด๋๊ฐ ํ๋์ ๋ณผ๋ฅจ์ ๊ณต์ ํ ์ ์๋ค. -
Bind Mounts
docker run -v /host/path:/container/path ubuntuํธ์คํธ ์ปดํจํฐ์ ํน์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋ ๋ด๋ถ์ ๋๋ ํ ๋ฆฌ์ ๋ง์ดํธํ๋ค. ์ ๋๊ฒฝ๋ก๋ก ์์ฑํด์ผ ํ๋ฉฐ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํน์ ํ ์ ์๋ค.
| ํน์ฑ | Anonymous Volumes | Named Volumes | Bind Mounts |
|---|---|---|---|
| ๊ด๋ฆฌ | ์ด๋ฆ ์์ (๊ด๋ฆฌ ์ด๋ ค์) | ์ด๋ฆ์ผ๋ก ์๋ณ ๊ฐ๋ฅ | ํธ์คํธ ๊ฒฝ๋ก ์ง์ ์ง์ |
| ๋ฐ์ดํฐ ์์น | Docker๊ฐ ์๋ ๊ด๋ฆฌ | Docker๊ฐ ์๋ ๊ด๋ฆฌ | ํธ์คํธ ๊ฒฝ๋ก ์ฌ์ฉ |
| ์ฃผ์ ์ฉ๋ | ์ผํ์ฑ ๋ฐ์ดํฐ ์ ์ฅ | ์ปจํ ์ด๋ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ | ํธ์คํธ-์ปจํ ์ด๋ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ |
| ํธ์คํธ ์์กด์ฑ | ๋ฎ์ | ๋ฎ์ | ๋์ |
Kubernetis
๊ฐ๋
์คํ ์์ค ์์คํ ์ด๋ค. ์ปจํ ์ด๋ ๋ฐฐํฌ์ ๊ด๋ฆฌ๋ฅผ ์ํ ํ์ค์ด๋ฉฐ, ์ด๋ฅผ ์ํ ๋ค์ํ ๋๊ตฌ๋ค์ ํฌํจํ๋ค.
ํน์ง
- ์๋ ๋ฐฐํฌ
- ์ค์ผ์ผ๋ง & ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ง์
- ์ปจํ ์ด๋ ๊ด๋ฆฌ
์ํคํ ์ฒ
- ํด๋ฌ์คํฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ์ฉํด ๊ตฌํํ๊ณ ์ ํ๋ ์ ์ฒด ์๋น์ค. ํด๋ฌ์คํฐ ๋ด๋ถ์์ ๋ ์์ ์ธ ๋คํธ์ํฌ๋ฅผ ๊ฐ์ง๋ฉฐ ์ด๋ฅผ ์ด์ฉํด ํต์ ํ๋ค.
- Worker Node ์ปจํ ์ด๋๋ฅผ ์คํ์ํค๊ธฐ ์ํ ๋ ผ๋ฆฌ์ /๋ฌผ๋ฆฌ์ ์ฅ์น. EC2 ์ ํ๋์ ์ธ์คํด์ค๊ฐ ๋ ์๋ ์๊ณ , ๊ฐ์๋จธ์ ์ด ๋ ์๋ ์๋ค.
- Pod ์ปจํ ์ด๋๋ฅผ ์คํ์ํค๊ธฐ ์ํ ๋จ์. ํ๋์ ์์ปค ๋ ธ๋ ์์๋ 2๊ฐ ์ด์์ Pod ๊ฐ ์กด์ฌํ ์ ์๊ณ , ํ๋์ Pod ์์ 2๊ฐ ์ด์์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
- MasterNode ์์ปค๋ ธ๋, Pod ๋ฑ์ ๊ด๋ฆฌ๋ฅผ ์ด๊ดํ๋ ์ฅ์น. ์์ปค๋ ธ๋์ ์์ฑ/์ญ์ , ํฌ๋์ ์์ฑ/์ญ์ , ๊ฐ ์ปจํ ์ด๋์ ๋ชจ๋ํฐ๋ง ๋ฑ์ ๋ด๋นํ๋ค.
-
kublet ๋ง์คํฐ ๋ ธ๋์ ํต์ ํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ
-
kube-proxy
ํฌ๋์ ํต์ ํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ
Kubernetis Objects
์ฟ ๋ฒ๋คํฐ์ค๋ Object ๋ก ๊ด๋ฆฌ๋๋ค.
- Pod Object
- ์ปจํ ์ด๋๋ก ์คํ์ํฌ ์ด๋ฏธ์ง๋ฅผ ํฌํจ ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ํฌ๋์ ํ๋์ ์ปจํ ์ด๋
- ๋ชจ๋ ํฌ๋๋ ์คํ ๋ฆฌ์ง(๋ณผ๋ฅจ)์ ๋คํธ์ํฌ๋ฅผ ํฌํจ, ๊ณต์
- ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ํฌ๋๋ง๋ค ์์ ๋ด๋ถ Private IP ๋ฅผ ํ ๋น๋ฐ์. ์ฌ์์ฑ ์๋ง๋ค IP ๋ณ๊ฒฝ
- Deployment Object
- ์ํ๋ ์ํ๋ฅผ ์ ์ํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ค์ ์ํ๋ฅผ ๋ณ๊ฒฝ ์ธ์คํด์ค์ ๊ฐ์, ํฌ๋๊ฐ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ง ๋ฑ๋ฑโฆ
- ๋์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
- ์๋ก์ด ๋ฒ์ ๋ฐฐํฌ๋ ๊ธฐ์กด ๋ฒ์ ๋กค๋ฐฑ ์ง์
- Service Object
- ํด๋ฌ์คํฐ ์ธ๋ถ์์ ํฌ๋๋ก ์ ๊ทผ ๋ถ๊ฐ
- Pod ๊ทธ๋ฃน์ ๋ํด ๊ณต์ IP ์ง์ ๊ฐ๋ฅ
- ํด๋ฌ์คํฐ ์ธ๋ถ์์ ์ ๊ทผ์ ํ์ฉํ ์ ์์.
- Service ์ข
๋ฅ:
- ClusterIP: ๊ธฐ๋ณธ ์๋น์ค ์ ํ์ผ๋ก, ํด๋ฌ์คํฐ ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ.
- NodePort: ํด๋ฌ์คํฐ ์ธ๋ถ์์ ํน์ ํฌํธ๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅ.
- LoadBalancer: ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ธ๋ถ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํด ์ ๊ทผ ๊ฐ๋ฅ.
- ExternalName: ์ธ๋ถ DNS ์ด๋ฆ์ ํด๋ฌ์คํฐ ๋ด๋ถ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ .