Kubernete - Update, Rollback
Kubernetes 기초
Kubernete - Update, Rollback
Application Rolling Update & RollBack
Update 실습
http-go:v1 → v2 → v3 넘어가며 상태 살펴보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-go-deployment
labels:
app: http-go
spec:
strategy:
type: RollingUpdate
replicas: 3
selector:
matchLabels:
app: http-go
template:
metadata:
labels:
app: http-go
spec:
containers:
- name: http-go
image: seokhyeon116/http-go:v1
ports:
- containerPort: 8080
1
kubectl create -f deploy-go.yaml --record=true #record 옵션을 넣어야 히스토리 확인가
업데이트
1
2
3
kubectl set image deploy http-go-deployment http-go=seokhyeon116/http-go:v2
# set image를 통해서 업데이트
kubectil edit deploy http-go-deployment # image에서 버전 변경
업데이트 방식이 RollingUpdate이다
- maxSurge : 최대로 생성할 수 있는 POD의 수를 정한다 (예를 들어 설정값이 30%이면 전체 POD에서 130%까지 만들 수 있다.)
- maxUnavailable : 사용할 수 없는 최대 POD수를 정한다 (예를 들어 설정값이 30%이면 전체 POD의 70% 이상으로 항상 유지한다.)
1 2
kubectl get pod -o wide #명령어 실행 시 아래 화면을 볼 수 있다. # 노드를 하나씩 업데이하고 생성과 제거를 병행한다.
업데이트 결과
RollBack하기
1
2
3
4
5
kubectl rollout undo deploy http-go-deployment #한단계전으로 undeo
kubectl rollout undo deploy http-go-deployment --to-revision=1 #history 1번으로 돌아감
kubectl rollout history deploy http-go-deployment #해당 delpoy history 출력
# create할 때 --record=true를 해야 명령줄까지 출력됨
ㅏ
연습 문제
- alpine이미지 사용하여 업데이트와 롤백을 실행하라, 모든 revision내용은 기록되어야 한다.
- 3.5로 롤링 업데이트 수행
- 3.4로 롤백 수행
1
kubectl create deploy alpine-deploy --image=deploy:3.4 --dry-run -o yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: alpine-deploy
name: alpine-deploy
spec:
replicas: 1
selector:
matchLabels:
app: alpine-deploy
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 50%
maxUnavailable: 50%
template:
metadata:
creationTimestamp: null
labels:
app: alpine-deploy
spec:
containers:
- image: deploy:3.4
name: deploy
resources: {}
status: {}
1
2
kubectl set image deploy alpine-deploy alpine-deploy=alpine:3.5
kubectl rollout undo deploy alpine-deploy
This post is licensed under CC BY 4.0 by the author.

