ReplicaSet을 이용해 배포하는 이유
- 여러 개의 Pod을 한번에 실행
- 선언한 replicas의 수만큼 실행을 보장
- ReplicaSet이 Pod의 상태를 24/7 감시
- Pod 실행 중에도 replicas의 조정이 자유로움
롤백/ 롤아웃을 해야하는 경우에는 이미 실행중인 Pod의 상태 변경에 어려움이 있음 (삭제 후 재배포 해야하는 등)
Pod 배포의 3가지
- selector
- replicas
- Pod template image (주로 이걸 바꿈)
Deployment
ReplicaSet + 배포 전략
- 새로운 Pod을 롤아웃/롤백할 때 ReplicaSet 생성을 대신해준다
개발자 -> Deployment -> ReplicaSet -> apply
전략 1 - Recreate
- 이전 Pod을 모두 종료하고 새로운 Pod을 replicas만큼 생성
- 서비스 운영단계에서는 적합하지 않음 (실행중인 Pod이 존재하지 않는 구간이 발생)
전략 2 - RollingUpdate
- 새로운 Pod 생성과 이전 Pod 종료가 동시에 일어남
- 버전이 맞지 않는 Pod이 동시에 존재 (서비스 다운 타임 최소화)
RollingUpdate 속성
- maxUnavailable
- 유지하고자 하는 최소 Pod의 비율(수)를 지정
- 최소 Pod 유지 비율 = 100 - maxUnavailable
- ex) replicas: 10, maxUnavailable: 30%
- maxSurge
- 허용할 수 있는 최대 Pod 비율(수)를 지정
- 최대 Pod 허용 비율 = maxSurge 값
Revision
Deployment는 롤아웃 히스토리를 Revision # 으로 관리한다
kubectl rollout undo deployment <deployment-name> --to-revision=1
1번 revision으로 rollout하는 명령어