[K8s in Action] 8. 디플로이먼트: 선언적 애플리케이션 업데이트

Sangmin Yoon·2021년 6월 30일
0

Kubernetes in Action

목록 보기
8/8

1. 파드에서 실행 중인 애플리케이션 업데이트

1) 오래된 파드를 삭제하고 새 파드로 교체

  • ReplicationController에서 파드 템플릿을 교체한 다음 진행할 수 있다.

2) 새 파드 기동과 이전 파드 삭제

  • 잠시 동안 두 배의 파드를 실행하는 방법도 있다.
  • 아니면 롤링 업데이트를 할 수도 있다. 하지만 이걸 수동으로 하면 어렵고 오류가 발생하기 쉽다.

2. 레플리케이션컨트롤러로 자동 롤링 업데이트 수행

1) kubectl을 이용한 롤링 업데이트

  • 이렇게 하는 건 구린 방법이다. 이런 식의 방법은 서버가 아니라 클라이언트가 업데이트 프로세스를 수행하는 것이다. kubectl이 업데이트 수행하는 동안 네트워크 연결이 끊어진다면?
  • 그리고 이러한 방법은 imperative(실제 명령)이다. K8s에게 파드를 추가/제거하라고 직접 지시하지 마라. 원하는 레플리카 수를 변경하면 된다.

3. 애플리케이션을 선언적으로 업데이트하기 위한 Deployment 사용하기

Deployment는 lower-level로 간주되는 ReplicationController나 ReplicaSet과 달리 앱을 배포하고 declarative하게 업데이트하기 위한 high-level 리소스이다.

1) Deployment 생성
Deployment를 생성하는 것은 ReplicationController를 만드는 것과 다르지 않다. Deployment는 레이블 셀렉터, 원하는 레플리카 수, 파드 템플릿으로 구성된다.

2) Deployment 업데이트

  • 사용 가능한 디플로이먼트 전략
    - 기본은 RollingUpdate이다. 대안은 Recreate가 있다.

  • 디플로이먼트 리소스에서 파드 템플릿을 변경하기만 하면 앱이 최신 버전으로 업데이트된다.

3) Deployment 롤백

  • Deployment는 Revision history를 유지한다. 즉 이전 레플리카셋이 롤아웃 이후에도 삭제되지 않는다는 뜻이다. 이를 이용해 롤백을 할 수 있다.

0개의 댓글