[쿠버네티스 교과서] k8s 스터디 5주차 - 9장, 10장
24.09.11 ~24.09.26
k8s 사내 스터디에서 쿠버네티스 교과서 9, 10 장을 읽으며 공부한 내용
9. 롤아웃과 롤백을 이용한 애플리케이션 릴리스 관리
디플로이먼트의 두 가지 업데이트 전략
- 롤링 업데이트 (rolling update)
- 리크리에이트 (recreate)
롤아웃
- 레플리카셋 새로 생성
- 레플리카를 지정된 숫자만큼 생성
- 기존 레플리셋의 레플리카 수를 0으로 낮춤
롤아웃은 파드의 정의가 변경될 때만 일어남
버전번호를 넣은 레이블 정의하여 레플리카셋에 부여 시 업데이트 내용 추적하기 수월
파드 정의 에 version 레이블 선언 가능
롤아웃의 주 기능은 릴리스 관리
롤아웃 히스토리 확인
롤아웃 중단
이전 리비전 롤백
핫 리로드 (hot reload)
컨피그맵/비밀값 업데이트 시 어플리케이션 동작이 변화
롤아웃이 발생하지 않음
디플로이먼트 변경이 아니므로, 되돌아갈 리비전이 없음 -> 롤백 불가
컨피그맵/비밀값 불젼요소로 간주
설정값과 함께 디플로이먼트를 업데이트 -> 롤아웃 히스토리가 남아 롤백 가능
롤링 업데이트
업데이트 시간이 길어짐
서비스 무중단 유지 가능
리크리에이트
레플리카 셋을 사용
기존 레플리카셋의 파드 수가 0이 된 후, 새 레플리카셋의 파드 수가 증가
어플리케이션 전체가 장애가 날 가능성 -> 위험성이 큼
롤링 업데이트 설정 변경 가능
파드 스케일링 속도
- maxUnavailable : 동시 종료 파드 수
- maxSurge : 동시 시작되는 파드 수
롤아웃 속도
- minReadySeconds : 신규 파드 상태 안정적인지 확인하는 시간
- progressDeadlineSeconds : 시간 초과 시 신규 파드 상태 실패로 간주하는 타임 아웃
데몬과 스테이트풀셋의 두 가지 업데이트 전략
- 롤링 업데이트
- 온딜리트 (OnDelete)
온딜리트 (OnDelete)
다른 프로세스가 파드 삭제 시 대체 파드를 생성하는 방식
롤링 업데이트
데몬셋은 노드에 파드를 하나만 실행 -> 잉여파드 생성 불가
스테이트풀셋은 지정한 순서대로 파드를 관리
마지막 파드 -> 첫 번째 파드까지 롤아웃 진행
업데이트 되는 파드 수는 항상 하나
parition 을 사용해 업데이트해야하는 파드 비율은 지정 가능
10. 헬름을 이용한 애플리케이션 패키징 및 관리
헬름
명령행 도구의 형태로 레포지토리 서버와 상호 작용
어플리케이션 패키지를 다운받아 클러스터에 설치 및 관리 가능
레포지토리 (repository)
차트 (chart) : 어플리케이션의 패키지
릴리즈 (release) : 설치한 차트
헬름차트는 k8s 매니페스트 파일이 담긴 디렉터리
최종문제
1. Blue-Green 배포와 Canary 배포에 대해서 설명하시오. 그리고 어떤 경우 사용하면 좋을지에 대해서 설명하시오
2. 스테이트풀셋 (StatefulSet) 의 롤링 업데이트를 사용하는 이유는 무엇인가요?
3. 헬름을 사용하면 어떤 점이 편리한가요??
1.
- Blue-Green
- Blue 버전 (기존) 과 Green 버전 (신규) 을 유지 후, Green 버전이 정상적이면 트래픽 한번에 전환하는 방식
- 빠른 롤백이 필요할 때 사용
- Canary
- 새로운 버전을 일부 배포 후 일부 트래픽만 새 버전으로 보내며, 이후 점진적으로 새 버전을 배포하는 방식
- 점진적인 테스트가 필요한 경우 사용
2. 순서대로 파드를 관리해야 하기 때문
3. 어플리케이션을 패키지 형태로 관리 가능하며, 버전 관리가 가능하다.