Kubernetes in Action 9장 디플로이먼트: 애플리케이션을 선언적으로 업데이트하기

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

Loading

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

Your email address will not be published. Required fields are marked *