https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
Deployment๋ Pod์ ReplicaSet์ ์ ์ธ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํจ.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx # ๊ฐ์๊ฐ spec: replicas: 3 selector: matchLabels: app: nginx # ๊ฐ์๊ฐ template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
- replicas : ํ๋๋ฅผ ๋ช๊ฐ ์์ฑํ ๊ฒ์ธ์ง ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ, ๋ ํ๋ผํค์ ๊ณผ ๋์ผํ ใ ์์ฑ
- matchLabels: metadata.labels ํ์ํ๋์ ๊ฐ์ ๊ฐ์ ํ ๋นํจ.
- template.spec.containers: ํ๋์ ์ค์ ์ ๋ณด๊ฐ ๋ด๊ธด ์ปจํ ์ด๋ ์ ๋ณด
kubectl edit deploy <deploy name>
: replicas ์ง์ ์์
kubectl edit deploy <deploy name> --replicas=<number>
: replicas ๊ฐ ์์
kubectl create -f http-go-deployment.hyml --record=true
apiVersion: apps/v1 kind: Deployment metadata: name: http-go-deployment labels: app: http-go spec: replicas: 3 selector: matchLabels: app: http-go template: metadata: name: http-go labels: app: http-go spec: containers: - image: gasbugs/http-go:v1 name: http-go
#rollingupdate ์ ๋ต spec: strategy: type: RollingUpdate
- type: RollingUpdate -> ๊ธฐ๋ณธ๊ฐ
- ์ค๋๋ ํฌ๋๋ฅผ ํ๋์ฉ ์ ๊ฑฐํ๋ ๋์์ ์๋ก์ด ํฌ๋ ์ถ๊ฐ
- ์์ฒญ ์ฒ๋ฆฌํ ์ ์๋์ ๊ทธ๋๋ก ์ ์ง
- type: Recreate
- ์ํฌ๋๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ์ด์ ํฌ๋๋ฅผ ๋ชจ๋ ์ญ์
- ์ฌ๋ฌ ๋ฒ์ ๋์ ์คํ ๋ถ๊ฐ๋ฅ
- ํ์ ๋ค์ด ์กด์ฌ
# ์ต๋/์ต์ ๋ช๊ฐ์ pod์ ์ด์ํ ์ง spec: strategy: rollingUpdate: maxSurge: 1 maxUnvaliable: 1 type: RollingUpdate
- maxSurge
- ๊ธฐ๋ณธ๊ฐ 25%, ๊ฐ์๋ก๋ ์ค์ ๊ฐ๋ฅ
- ์ต๋๋ก ์ถ๊ฐ ๋ฐฐํฌ๋ฅผ ํ์ฉํ ๊ฐ์ ์ค์
- 4๊ฐ์ธ ๊ฒฝ์ฐ 1๊ฐ๊ฐ ์ค์ ๋จ (์ด 5๊ฐ๊น์ง ํฌ๋ ๋์ ์ด์)
- maxUnavailable
- ๊ธฐ๋ณธ๊ฐ 25%, ๊ฐ์ ์ค์ ๊ฐ๋ฅ
- ๋์ํ์ง ์๋ ํฌ๋์ด ๊ฐ์ ์ค์
- 4๊ฐ์ธ ๊ฒฝ์ฐ 1๊ฐ ์ค์ (์ด 4-1๊ฐ๋ ์ด์ํ๋ค)
๊ฐ์ด ํฌ๋ฉด ๋ถํ๊ฐ ์์ง๋ง ์ ๋ฐ์ดํธ๊ฐ ๋น ๋ฅผ ์ ์๋ค.
spec: revisionHistoryLimit: 10
- revision ๊ฐ์ ์ ์ง (๋์๊ฐ ์ ์๋ ์์ ์ํ ๋ฒ์ ๊ฐ์)
sudo get deploy <deployname> -o yaml
kubectl set image deploy <deployment ์ด๋ฆ> <์ปจํ
์ด๋์ด๋ฆ>=<์ด๋ฏธ์งํ์ผ>
: ์ด๋ฏธ์ง ์
๋ฐ์ดํธ
'kubectl patch deploy <deployment ์ด๋ฆ> -p '{"spec": {"minReadySeconds": 10}}'
: ์
๋ฐ์ดํธ ๊ณผ์ ์ ์ํด ์
๋ฐ์ดํธ ์๋ ์กฐ์
kubectl expose deploy <deployment ์ด๋ฆ> --port 8080
kubectl run -it --rm --image busybox -- bash
kubectl set image deploy <deployment ์ด๋ฆ> <์ปจํ
์ด๋์ด๋ฆ>=<์ด๋ฏธ์งํ์ผ>
์ ์๋ ReplicaSet์ด http-go-deployment-5c4fc94c99 ์๋๋ฐ, ํด๋น ๋ ํ๋ฆฌ์นด์ ์ ์ํด ๋ง๋ค์ด์ง pod๋ค์ด Terminating ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ฐ๋ฉด ์๋ก์ด Replicaset์ธ d46c7cd68์ด ์๋ก ์์ฑ๋์ด ์ด๋ฏธ์ง๊ฐ ์ ๋ฐ์ดํธ๋ pod๊ฐ pending ์ํ์์ Running ์ํ๋ก ๋ฐ๋๋ ๊ฒ์ ํ์ธ๊ฐ๋ฅ
Pending ๋์๋ค๊ฐ Pod๊ฐ ๊ต์ฒด๋๋ ์ํฉ์์๋ "Welcome! v1" ๊ณผ "Welcome! v2"๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์ถ๋ ฅ๋์์ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ง๊ธ์ ๋ชจ๋ ReplicaSet์ ๊ต์ฒด๋ฅผ Deployment๊ฐ ์๋ฃํ ์ํ์ฌ์ Welcome! v2 ๋ง ์ถ๋ ฅ๋๋ ๋ชจ์ต
์ฝ 10์ด๋ง๋ค ํ๋์ฉ ์๋ก์ด pod๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์.
kubectl rollout status deploy <deployment ์ด๋ฆ>
: statusํ์ธ
kubectl rollout history deploy <deployment ์ด๋ฆ>
: historyํ์ธ
๋ ํ๋ฆฌ์นด์ ์ ์ฌ๋ฌ๊ฐ ๋์ ์ง๋ง ์คํ๋๊ณ ์๋ pod์ ๊ฐ์์ ์ฐจ์ด๋ฅผ ํ์ธํ ์ ์์.
(์ด์ ๋ ํ๋ฆฌ์นด์ ์ ๋ฐฑ์ ๋ณธ์ด ๋๋๊ฒ)
5fc96f8f65 : ๋ ํ๋ฆฌ์นด์ ์ด ์๋ก ์ ๋ฐ์ดํธ๊ฐ ์์๋ ๊ฒ์ ํ์ธ ํ ์ ์์.
kubectl set image deploy <deployment์ด๋ฆ> <์ปจํ
์ด๋์ด๋ฆ>=<์ด๋ฏธ์งํ์ผ>
kubectl rollout undo deploy <deployment์ด๋ฆ>
: undo ์ด์ ๋ฒ์ ์ผ๋ก ๋์๊ฐkubectl rollout undo deploy <deployment์ด๋ฆ> --to-revision=1
: ํน์ ๋ฒ์ ์ผ๋ก ๋์๊ฐ์ด์ ๋ฒ์ ์ผ๋ก ๋์๊ฐ๊ณ , 2๋ฒ-> 4๋ฒ์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด์ ๋ ์ต๊ทผ revision์ผ๋ก ๋ณ๊ฒฝ๋จ.
- 1๋ฒ์ ์ผ๋ก ๋ค์ ๋์๊ฐ๊ณ ๋ ํ๋ฆฌ์นด์ ์ pod๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ์ ํ์ธ ๊ฐ๋ฅํจ.
- history๋ 1->5๋ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธ๊ฐ๋ฅ
kubectl rollout pause deploy <deployment ์ด๋ฆ>
: ์
๋ฐ์ดํธ ์ค์ ์ผ์์ ์ง
kubectl rollout undo deploy <deployment ์ด๋ฆ>
: ์
๋ฐ์ดํธ ์ผ์์ค์ง ์ค ์ทจ์
kubectl rollout resume deploy <deployment ์ด๋ฆ>
: ์
๋ฐ์ดํธ ์ฌ์์
์ ๋ฐ์ดํธ ์๋๋์ง ์ ์ ์ค์ํด๋๊ณ ์ฌ๋ผ๊ฐ Pod ํ์ธ ํ ๋ค์ ์ ๋ฐ์ดํธ ์ฌ์์\
- ์ ๋ฐ์ดํธ ์คํจ ์ผ์ด์ค
- ํ ๋น๋ ๋ถ์กฑ | ๋ ๋๋ค์ค ํ๋ก๋ธ ์คํจ | ์ด๋ฏธ์ง ๊ฐ์ ธ์ค๊ธฐ ์ค๋ฅ | ๊ถํ ๋ถ์กฑ | ์ ํ ๋ฒ์ | ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐํ์ ์ค๋ฅ
spec: processDeadlineSeconds: ์ ๋ฐ์ดํธ ์คํจํ ์ ๋ฐ์ดํธ๋ฅผ ์ค์ง์ํค๊ธฐ๊น์ง์ ์๊ฐ