Kubernetes ํด๋ฌ์คํฐ ์ ๊ทธ๋ ์ด๋ ํ๋ก์ธ์ค
์ด๋ ์์ ์์๋ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ ๋ ์คํ ์ค์ธ ๋
ธ๋๋ฅผ ์
๋ฐ์ดํธํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ํจํค์ง ์
๋ฐ์ดํธ, ์ปค๋ ์
๋ฐ์ดํธ ๋๋ ์ ๊ฐ์ ๋จธ์ ์ด๋ฏธ์ง ๋ฐฐํฌ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. Kubernetes ์ฉ์ด์์๋ ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฆ
๋๋ค.
์ด ๊ฒ์๋ฌผ์ 4๊ฐ ๊ฒ์๋ฌผ ์๋ฆฌ์ฆ์ ์ผ๋ถ์ ๋๋ค.
- ์ด ๊ฒ์๋ฌผ.
- Kubernetes ํด๋ฌ์คํฐ์์ ํฌ๋์ ์ฌ๋ฐ๋ฅธ ์ข ๋ฃ
- ํฌ๋ ์ญ์ ์ ํฌ๋ ์ข ๋ฃ ์ง์ฐ
- PodDisruptionBudget์ ์ฌ์ฉํ์ฌ Kubernetes ํด๋ฌ์คํฐ ๊ฐ๋ ์ค์ง ์๊ฐ์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ
(๋๋ต. ๊ฐ๊น์ด ์์ผ ๋ด์ ์๋ฆฌ์ฆ์ ๋๋จธ์ง ๊ธฐ์ฌ์ ๋ํ ๋ฒ์ญ์ด ๋์ฌ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.)
์ด ๋ฌธ์์์๋ ํด๋ฌ์คํฐ์์ ์คํ๋๋ ๋ ธ๋์ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์์ ๊ธฐ ์ํด Kubernetes๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๋๊ตฌ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๋ฌธ์ ์ ์
์ฐ๋ฆฌ๋ ์ฒ์์๋ ์์งํ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๊ณ , ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ์ฌ์ ์ํ์ ํ๊ฐํ๋ฉฐ, ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ง๋ฉดํ๋ ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ง์์ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ ๋ก ๋ค์ดํ์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์๋ช ์ฃผ๊ธฐ ํํฌ, ์ค๋น ์ํ ํ๋ก๋ธ ๋ฐ Pod ์ค๋จ ์์ฐ์ ์ฌ์ฉํ๋ ๊ตฌ์ฑ์ด ํ์ํ์ต๋๋ค.
์ฌ์ ์ ์์ํ๋ ค๋ฉด ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ๋ ๊ฐ์ ๋
ธ๋๋ก ๊ตฌ์ฑ๋ Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๊ณ , ๊ทธ ๋ค์ ๋ ๊ฐ์ ํฌ๋๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์คํ๋๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. Service
:
๋ ๊ฐ์ Kubernetes ํด๋ฌ์คํฐ ๋ ธ๋์์ ์คํ๋๋ Nginx ๋ฐ Service๊ฐ ํฌํจ๋ ๋ ๊ฐ์ ํฌ๋๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค.
ํด๋ฌ์คํฐ์ ์๋ ๋ ์์ ์ ๋ ธ๋์ ์ปค๋ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ์ ๋ฐ์ดํธ๋ ๊ตฌ์ฑ์ผ๋ก ์ ๋ ธ๋๋ฅผ ๋ถํ ํ ๋ค์ ์ ๋ ธ๋๋ฅผ ์์ํ๋ ๋์ ์ด์ ๋ ธ๋๋ฅผ ์ข ๋ฃํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์๋ํ์ง๋ง ์ด ์ ๊ทผ ๋ฐฉ์์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
- ์ด์ ๋ ธ๋๋ฅผ ๋๋ฉด ํด๋น ๋ ธ๋์์ ์คํ ์ค์ธ ํฌ๋๋ ๊บผ์ง๋๋ค. ์ ์์ ์ธ ์ข ๋ฃ๋ฅผ ์ํด Pod๋ฅผ ์ง์์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ๋๋์? ์ฌ์ฉ ์ค์ธ ๊ฐ์ํ ์์คํ ์ ์ ๋ฆฌ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์ ์ ์์ต๋๋ค.
- ๋ชจ๋ ๋ ธ๋๋ฅผ ๋์์ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? Pod๊ฐ ์ ๋ ธ๋๋ก ์ด๋ํ๋ ๋์ ์๋นํ ๊ฐ๋ ์ค์ง ์๊ฐ์ด ๋ฐ์ํฉ๋๋ค.
๋
ธ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๋์ ์์
์ ํ๋ก์ธ์ค๊ฐ ์คํ๋์ง ์๋๋ก ํ๋ฉด์ ์ด์ ๋
ธ๋์์ ํฌ๋๋ฅผ ์ ์์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ๋๋ ์์ ์์์ฒ๋ผ ํด๋ฌ์คํฐ๋ฅผ ์์ ํ ๊ต์ฒดํ ๋(์ฆ, VM ์ด๋ฏธ์ง ๊ต์ฒด) ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด์ ๋
ธ๋์์ ์ ๋
ธ๋๋ก ์ ์กํ๋ ค๊ณ ํฉ๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ ํฌ๋๊ฐ ์ด์ ๋
ธ๋์์ ์์ฝ๋๋ ๊ฒ์ ๋ฐฉ์งํ ๋ค์ ์คํ ์ค์ธ ๋ชจ๋ ํฌ๋๋ฅผ ํด๋น ๋
ธ๋์์ ์ ๊ฑฐํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ฌํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค. kubectl drain
.
๋ ธ๋์ ๋ชจ๋ ํฌ๋ ์ฌ๋ฐฐํฌ
๋๋ ์ด๋ ์์
์ ์ฌ์ฉํ๋ฉด ๋
ธ๋์ ๋ชจ๋ Pod๋ฅผ ์ฌ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๋๋ ์ด๋ ์คํ ์ค์ ๋
ธ๋๋ ์์ฝ ๋ถ๊ฐ๋ฅ์ผ๋ก ํ์๋ฉ๋๋ค(ํ๋๊ทธ NoSchedule
). ์ด๋ ๊ฒ ํ๋ฉด ์ ํฌ๋๊ฐ ํ์๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐฐ์๊ฐ ๋
ธ๋์์ ํฌ๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์์ํ๊ณ ํ์ฌ ๋
ธ๋์์ ์คํ ์ค์ธ ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃํ์ฌ ์ ํธ๋ฅผ ๋ณด๋
๋๋ค. TERM
ํฌ๋์ ์ปจํ
์ด๋.
์ด๊ธฐ๋ํ์ง๋ง kubectl drain
ํฌ๋ ์ ๊ฑฐ ์์
์ ํ๋ฅญํ๊ฒ ์ํํ ๊ฒ์
๋๋ค. ๋ฐฐ์ ์์
์ด ์คํจํ ์ ์๋ ๋ค๋ฅธ ๋ ๊ฐ์ง ์์ธ์ด ์์ต๋๋ค.
- ๊ทํ์ ์ ์ฒญ์๋ ์ ์ถ ์ ์ ์์ ์ผ๋ก ์ข
๋ฃ๋ ์ ์์ด์ผ ํฉ๋๋ค.
TERM
์ ํธ. Pod๊ฐ ์ ๊ฑฐ๋๋ฉด Kubernetes๋ ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.TERM
์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ณ ์ง์ ๋ ์๊ฐ ๋์ ์ปจํ ์ด๋๊ฐ ์ค์ง๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ์ค์ง๋์ง ์์ ๊ฒฝ์ฐ ๊ฐ์ ๋ก ์ข ๋ฃํฉ๋๋ค. ์ด๋ค ๊ฒฝ์ฐ๋ ์ปจํ ์ด๋๊ฐ ์ ํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ํ์ฌ ์คํ ์ค์ธ ํฌ๋(์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ด ์งํ ์ค)๋ผ๋ฉด ํฌ๋๋ฅผ ์๋ชป ๋ ์ ์์ต๋๋ค. - ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌํจ๋ ๋ชจ๋ ํฌ๋๊ฐ ์์ค๋ฉ๋๋ค. ์ ์ปจํ ์ด๋๊ฐ ์ ๋ ธ๋์์ ์์๋ ๋ ์ฌ์ฉํ์ง ๋ชปํ ์๋ ์๊ณ , ์ปจํธ๋กค๋ฌ ์์ด ํฌ๋๊ฐ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ ์ ํ ๋ค์ ์์๋์ง ์์ ์๋ ์์ต๋๋ค.
๋ค์ดํ์ ๋ฐฉ์ง
๋ ธ๋์ ๋๋ ์ด๋ ์์ ๊ณผ ๊ฐ์ ์๋ฐ์ ์ธ ์ค๋จ์ผ๋ก ์ธํ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต์ํํ๊ธฐ ์ํด Kubernetes๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ์ฒ๋ฆฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์๋ฆฌ์ฆ์ ๋๋จธ์ง ๋ถ๋ถ์์๋ ์ด๋ฌํ Kubernetes ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํฌ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํฅ์ ์ํํ ๊ฒ์ ๋๋ค. ์ฃผ์ ์์ด๋์ด๋ฅผ ๋ ์ฝ๊ฒ ๋ฐ๋ฅด๊ธฐ ์ํด ๋ค์ ๋ฆฌ์์ค ๊ตฌ์ฑ๊ณผ ํจ๊ป ์์ ์๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
targetPort: 80
port: 80
์ด ๊ตฌ์ฑ์ ์ต์ํ์ ์์
๋๋ค. Deployment
, ํด๋ฌ์คํฐ์ nginx ํฌ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๋ํ ๊ตฌ์ฑ์ ๋ฆฌ์์ค๋ฅผ ์ค๋ช
ํฉ๋๋ค. Service
, ํด๋ฌ์คํฐ์ nginx ํฌ๋์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ด ๊ตฌ์ฑ์ ๋ฐ๋ณต์ ์ผ๋ก ํ์ฅํ์ฌ ๊ฒฐ๊ตญ์๋ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ค์ด๊ธฐ ์ํด Kubernetes๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ฒ ๋ฉ๋๋ค.
AWS ์ด์์์ ๋ค์ดํ์์ด ๋ฐ์ํ์ง ์๋๋ก ์๋ฒฝํ๊ฒ ๊ตฌํ๋๊ณ ํ
์คํธ๋ Kubernetes ํด๋ฌ์คํฐ ์
๋ฐ์ดํธ ๋ฒ์ ์ ๋ณด๋ ค๋ฉด ๋ค์์ ๋ฐฉ๋ฌธํ์ธ์.
๋ธ๋ก๊ทธ์์ ๋ค๋ฅธ ๊ธฐ์ฌ๋ ์ฝ์ด๋ณด์ธ์.
๊ฐ๋ ์ค์ง ์๊ฐ์ด ์๋ ๋ฐฐํฌ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค Kubernetes: ์์คํ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ์ ๊ทธ๋ ๊ฒ ์ค์ํ๊ฐ์? Tekton Pipeline - Kubernetes ๊ธฐ๋ฐ ํ์ดํ๋ผ์ธ Nginx์ฉ ๋์ ๋ชจ๋ ๋น๋ Hashicorp Consul์ Kubernetes ์ธ์ฆ ์๊ฐ ์น์ธ์ด ์๋ ClickHouse์์ ์น์ธ์ด ์๋ ClickHouse๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฒฐ๊ณผ๋ ๋ฌด์์ ๋๊น?
์ถ์ฒ : habr.com