- 포드에서 실행 중인 애플리케이션 업데이트
- 오래된 포드를 삭제하고 새로운 포드로 교체하기 (다운타임 허용, 간단)
- 새 포드의 스핀업 및 오래된 포드 삭제
- 한 번에 기존 버전에서 새로운 버전으로 전환 (블루그린 디플로이먼트)
- 롤링 업데이트
- 레플리케이션 컨트롤러를 통한 자동 롤링 업데이트
- 애플리케이션 초기 버전 실행
- 애플리케이션 V1 생성
- 단일 YAML 파일을 사용한 서비스를 통해 애플리케이션의 실행 및 노출하기
- kubectl을 이용한 롤링 업데이트
- 새 버전 V2 이미지 태그는 luksa/kubia:v2
- 동일한 이미지 태그에 업데이트 푸시하기: imagePullPolicy: Always
- kubectl rolling-update
- 롤링 업데이트를 위한 kubectl의 사전 수행 단계
- 라벨 셀렉터가 app=kubia 만이 아니라 deployment=aaaaaa 도 수정됨
- 두 개의 레플리케이션 컨트롤러를 확장해 새 포드로 교체
- kubectl 롤링 업데이트가 더 이상 사용되지 않는 이유
- 기존의 라벨을 수정하기 때문에
- kubectl 클라이언트가 수행하기 때문에, 네트워크가 끊어지면 장애
- rolling-update라는 명령을 수행해야 하기 때문에 (YAML 수정해도 자동으로 안 바뀜)
- 애플리케이션 초기 버전 실행
- 선언적으로 애플리케이션을 업데이트하기 위한 디플로이먼트 사용하기
- 디플로이먼트 생성
- 디플로이먼트 매니페스트 생성
- 디플로이먼트 리소스 생성
- 디플로이먼트 롤아웃 상태 출력: kubectl rollout status deployment kubia
- 디플로이먼트가 레플리카셋을 생성한 이후에 레플리카셋이 포드를 생성하는 방법
- 서비스를 통한 포드 접근
- 디플로이먼트 업데이트
- 가능한 디폴로이먼트 전략: RollingUpdate, ReCreate
- 데모를 목적으로 롤링 업데이트의 속도 느리게 하기
- 롤링 업데이트 트리거: kubectl set image deployment kubia nodejs=luksa/kubia:v2
- 디플로이먼트의 경이로움
- 명령이 끝나기를 기다리지 않아도 됨
- 롤아웃 중에 문제가 생겨도 자동 해결
- 디플로이먼트 롤백
- 애플리케이션 버전 3 생성
- 버전 3 배포
- 롤아웃 되돌리기: kubectl rollout undo deployment kubia
- 디플로이먼트의 롤아웃 히스토리 보여주기: kubectl rollout history deployment kubia
- 특정 디플로이먼트 리비전으로 롤백하기: –to-revision=1
- 롤아웃 속도 통제
- 롤링 업데이트 전략의 maxSurge와 maxUnavailable 속성 소개
- maxUnavailable 속성
- 롤아웃 프로세스 일시 중지
- 롤아웃 일시 중지하기: kubectl rollout pause deployment kubia
- 롤아웃 재개: kubectl rollout resume deployment kubia
- 롤아웃을 방지하기 위한 일시 정지 기능 사용
- 잘못된 버전의 롤아웃 방지
- minReadySeconds의 적용 가능성 이해
- V3 버전이 완전히 롤아웃되는 것을 방지하기 위한 레디네스 프로브 정의
- kubectl apply를 통한 디플로이먼트 업데이트
- 레디네스 프로브가 잘못된 버전으로 롤아웃되는 것을 방지하는 방법
- 롤아웃 데드라인 설정: progressDeadlineSeconds
- 잘못된 롤아웃 중지하기: kubectl rollout undo deployment kubia
- 디플로이먼트 생성
- 요약
- 레플리케이션 컨트롤러에 의해 관리되는 포드의 롤링 업데이트 수행하기
- 저수준 레플리케이션 컨트롤러 또는 레플리카셋 대신 디플로이먼트 작성하기
- 디플로이먼트 사양에서 포드 템플릿을 편집해 포드 업데이트하기
- 이전 리비전이나 리비전 히스토리에 나열된 이전 리비전으로 디플로이먼트를 롤백하기
- 중간에 디플로이먼트 중단하기
- 디플로이먼트를 일시 중지하여 새 포드 인스턴스가 이전 인스턴스를 대체할 수 있게 하기 전에 새 버전의 단일 인스턴스가 어떻게 동작하는지 검사하기
- maxSurge 및 maxUnavailable 속성으로 롤링 업데이트 속도 제어하기
- 잘못된 버전의 롤아웃이 자동으로 차단되도록 minReadySeconds 및 레디네스 프로브를 사용해보기
- 그 외
- 단일 YAML 파일에 여러 리소스를 정의하는 세 개의 대시(—)를 구분 기호로 사용하는 방법
- 커튼 뒤에 있는 일을 정확하게 확인하기 위해 kubectl 의 verbose logging 기능을 켜는 방법