์ง๋ ์๊ฐ ์ฐ๋ฆฌ๋ Pod ์ ๋ํด์ ์์๋ณด์๋ค.
๊ทธ๋ฆฌ๊ณ ์ง๋ ์๊ฐ์ Pod ๋ฅผ ์์ฑํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์์ ์ค๋ธ์ ํธ๋ฅผ ์ด์ฉํ ํฌ๋์ ์์ฑ์์ ReplicaSet ์ ๋ํด์๋ ํ์ธํ์๋๋ฐ, ์ค๋์ ReplicaSet ๋ณด๋ค ํฐ ์์ ์ค๋ธ์ ํธ์ธ Deployment ์ ๋ํด์ ์์๋ณด๋ ค ํ๋ค.
๋ํ๋ก์ด๋จผํธ, Deployment
๋ค์ ํ ๋ฒ ์ด์ผ๊ธฐ ํ์ง๋ง ๋๋ถ๋ถ ์ ์ด์ ์ํฉ์์๋ Pod๋ฅผ ์ง์ ์์ฑํ๋ ์ผ์ ๋๋ฌผ๋ค.
๋ณดํต ReplicaSet๊ณผ Pod ์ ๋ณด๋ฅผ ์ ์ํ๋ ์์ ์ค๋ธ์ ํธ์ธ ๋ํ๋ก์ด๋จผํธ(deployment)๋ฅผ yml ํ์ผ์ ์ ์ํด์ ์ฌ์ฉํ๋ค.
์ด Deployment๋ ํฌ๋์ ๋๋ถ์ด์ ์์ผ๋ก ์์ฃผ ๋ณด๊ฒ ๋ ์ค๋ธ์ ํธ ์ค ํ๋์ด๋ค.
์ฐ๋ฆฌ๊ฐ Deployment ์ ๋ํ ์ค์ ์ํ ์ ๋ณด๋ค์ yml ํ์ผ์ ์ ์ํ๋ฉด ๊ผญ ํ์ํ ํ์ ๊ตฌ์ฑ ์์๋ค์ด 3 ๊ฐ ์๋ค.
- ๋ํ๋ก์ด๋จผํธ์ ์ค์ ์ ๋ณด (apiVersion, kind, metadata)
- ๋ ํ๋ฆฌ์นด ์ ์ ์ค์ ์ ๋ณด (replicas, selector)
- ํฌ๋์ ์ค์ ์ ๋ณด (template)
๋ ํ๋ฆฌ์นด ์ (ReplicaSet)์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ํฌ๋์ ๊ฐ์์ ์ ์ง ์์ผ์ฃผ๋ ์ค๋ธ์ ํธ์ด๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ replicas๋ฅผ 3์ผ๋ก ์ง์ ํ๋ฉด ํด๋น ๋ํ๋ก์๋จผํธ๋ ๋ ํ๋ฆฌ์นด์ ์ ์ํด์ 3๊ฐ์ ํฌ๋๊ฐ ๊ณ์ํด์ ์ด์๋ ๊ฒ์ด๋ค.
์ด๋ฐ ๊ตฌ์ฑ ์์๋ค๋ก ์ฐ๋ฆฌ๋ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ ์ํ๊ณ ์์ฑํ๋ฉด ํฌ๋์ ๋ ํ๋ฆฌ์นด์ ์ ํจ๊ป ์ ์ํ ์ ์๊ณ ๊ทธ๋ค์ ๋ํ๋ก์ด๋จผํธ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋ค.
๋ํ๋ก์ด๋จผํธ yml
๋ฐฑ๋ฌธ์ด ๋ถ์ฌ์ผ๊ฒฌ์ด๋ผ๊ณ ๊ฐ๋ณ๊ฒ ๋ํ๋ก์ด๋จผํธ ํ๋๋ฅผ ์์ฑํด์ ๋์๋ณด์.
apiVersion: apps/v1
kind: Deployment # ํด๋น yml ์ด deployment ๋ก ์์ฑํ ๊ฒ์์ ๋ช
์
metadata:
name: my-nginx-deployment
spec:
replicas: 3 # ์ ์งํ ํฌ๋์ ๊ฐ์๋ฅผ 3์ผ๋ก ๋ ํ๋ฆฌ์นด์
์ ์ง์
selector:
matchLabels:
app: my-nginx # my-nginx ๋ผ๋ ๋ผ๋ฒจ์ ํฌ๋๋ฅผ ์ ์ง
template: # ํฌ๋์ ๋ํ ์ค์ ์ ๋ณด
metadata:
name: my-nginx-pod
labels:
app: my-nginx # ํฌ๋์ ๋ผ๋ฒจ
spec: # ํฌ๋ ์์ฑ ์คํ
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
๊ทธ๋ฆฌ๊ณ apply ์ปค๋งจ๋๋ฅผ kubectl๋ก ์ ๋ ฅํด์ ๋ํ๋ก์ด๋จผํธ ํ๋๋ฅผ ๋์๋ณด์.
๊ทธ๋ผ ์์ ๊ฐ์ด kubectl get deployment
์ ์ํํ์ฌ ์ํ๋ฅผ ํ์ธํ๋ฉด ์์ฐจ์ ์ผ๋ก ํฌ๋ 3๊ฐ๊ฐ ์ฌ๋ผ์ค๊ฒ ๋๋ค.
clear๋ก ์ปค๋งจ๋๋ผ์ธ์ ๋ ๊น๋ํ๊ฒ ํ๊ณ Pod, ReplicaSet, Deployment์ ์ ๋ณด๋ฅผ ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅํด๋ณด์.
์ ๋ณด๋ฅผ ํ์ธํ๊ธฐ ์ํด์ kubectl get deployment, replicaset, pod
๋ช
๋ น์ด๋ฅผ ์ฐจ๋ก๋ก ์คํ์์ผ ๋ณผ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์์ ๊ฐ์ด ์ ๋์ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ํ๋ก์ด๋จผํธ ์ ๋ฐ์ดํธ ํ๊ธฐ
๋ํ๋ก์ด๋จผํธ๊ฐ ์ ๋์ํ๋๋ฐ, ๋ง์ฝ nginx์ ํน์ ๋ฒ์ ๋ง ์ฌ์ฉํ๋๋ก ์๊ตฌ์ฌํญ์ด ๋ณ๊ฒฝ๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผํ ๊น? ๋ํ๋ก์ด๋จผํธ๋ฅผ ๊ป๋ค ๋ค์ ์ผ์ผํ ๊น?
์๋๋ค. ๋ํ๋ก์ด๋จผํธ๋ ์ด๋ฐ ์ํฉ์์ ๋จ๊ณ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ค.
์ฆ, ๊ธฐ์กด์ ์์ฑ๋ ๋ํ๋ก์ด๋จผํธ์ ๋ ํ๋ฆฌ์นด์ ์ด ์๋ก์ด ๋ฒ์ ์ ๋ ํ๋ฆฌ์นด์ ์ scalu-up ํ๊ณ ๊ธฐ์กด์ ๋ฒ์ ์ scale-down ํ๋ค.
์ฐ๋ฆฌ์ yml ํ์ผ์์ nginx ์ด๋ฏธ์ง์ ๋ฒ์ ํ๊ทธ๋ฅผ 1.16.1 ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ๋ณด์.
๊ทธ๋ฆฌ๊ณ ๋ค์ apply ์ปค๋งจ๋๋ฅผ ์ด์ฉํด์ ๋์ฐ์.
โฏ kubectl apply -f p04-deployment-nginx.yml
deployment.apps/my-nginx-deployment configured
ํด๋น ๋ช ๋ น์ ์ถ๋ ฅํ๋ฉด ์ด๋ฒ์๋ created๊ฐ ์๋๋ผ configured๊ฐ ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ ๊ฒ์ผ๋ก ์ด์ ๋ ํ๋ฆฌ์นด์ ์ด ๋จ๊ณ์ ์ผ๋ก scaling ์ ์ํํ๋ค.
๋ํ๋ก์ด๋จผํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ฌ์ค๋ ๋ํ๋ก์ด๋จผํธ์ yml ์ค์ ์ ๋ณด๋ค๊ณผ ๋ ํ๋ฆฌ์นด์ ์ yml ์ค์ ์ ๋ณด๋ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ณดํต์ ์ด์ ์ํฉ์์๋ ๋ ํ๋ฆฌ์นด์
์ ์ฌ์ฉํ์ง ์๊ณ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๊ทธ ์ด์ ๋ ๋ฐ๋ก ๋ฐฐํฌ์ ์๋ค.
๋ํ๋ก์ด๋จผํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ํ๋ฆฌ์นด์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ๋ Revision์ ๋จ๊ธฐ๊ธฐ ๋๋ฌธ์ Rollback ์ด ๊ฐ๋ฅํด์ง๊ณ ์ฌ๋ฌ ๋ฌด์ค๋จ ๋ฐฐํฌ ์ ๋ต์ ์ทจํ ์ ์๊ฒ ๋๋ค.
์ด ๋ด์ฉ์ ์ถํ์ ๋ ๋ฐฐ์ธ ๋ด์ฉ์ธ ์นด๋๋ฆฌ ์ ๋ฐ์ดํธ, ๋กค๋ง ์ ๋ฐ์ดํธ, blue-green ์ ๋ฐ์ดํธ์์ ์์๋ณด์.
๋๊ธ