스터디/[쿠버네티스 인 액션] (2024.8)

[쿠버네티스 인 액션] 9장. 디플로이먼트 : 선언적 애플리케이션 업데이트 - 롤링업데이트

ttoance 2024. 10. 19. 17:23

 

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

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

- 레플리케이션컨트롤러를 사용하면 파드 템플릿은 업데이트 하고, 새 인스턴스 생성할 때 업데이트된 파드 템플릿 사용할 수 있다. 

- 이전 파드 인스턴스를 삭제해 쉽게 교체할 수 있다. 

짧은 다운타임을 허용하지만 파드 세트를 업데이트하는 가장 간단한 방법이다

 

 

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

- 다운타임이 발생하지 않고 한 번에 여러 버전의 애플리테이션이 실행하는 것을 지원하는 경우에는, 

- 프로세스를 먼저 전환해 새 파드를 모두 기동한 후 이전 파드를 삭제할 수 있다. 

 

3) 롤링 업데이트 수행 

- 파드를 단계별로 교체하는 롤링 업데이트를 수행할 수 있다. 

- 이전 레플리케이션컨트롤러를 천천히 스케일 다운하고 새 파드를 스케일 업해 이를 수행할 수 있다. 

수동으로 롤링 업데이트를 수행하는 것은 어려운데, 쿠버네티스 사용하면 하나의 명령어로 롤링 업데이트 수행할 수 있다.

 

 

9.2 레플리케이션 자동 롤링 업데이트 수행 

1) 롤링 업데이트 실습 

kubectl rolling-update kubia-v1 kubia-v2 --image=luska/kubia:v2

 

kubia-v2 라는 새로운 레플리케이션 컨트롤러가 생성됨

 

그리고 나서 v2파드를 만들면서 v1파드를 하나씩 스케일 다운한다. 

서비스 다운타임 없이 롤링 업데이트를 수행할 수 있다.

 

다운타임은 발생하지 않지만, v1과 v2가 공존하긴 한다. 

 

 

2) kubectl rolling-update 를 더 이상 사용하지 않는 이유 

- 쿠버네티스가 오브젝트를 수정하게 된다. (레이블과 레플리케이션 컨트롤러의 레이블 셀럭터를 수정하게 된다)

- 쿠버네티스 클라이언트가 업데이트 프로세스를 수행하는데 과정에 네트워크 연결이 끊기면 중간에 중단되면서 예상하지 못한 문제를 발생시킬 수 있다. 

 

반응형