- 디플로이먼트
- 레플리카 셋을 이용해서 파드를 무중단으로 업데이트 할 수 있도록 해주는 리소스
- 디플로이먼트는 파드를 직접 교체하지 않고 레플리카셋을 교체한다.
- 파드 교체 방법
- 먼저 수동으로 파드를 교체하는 방법에는 2가지가 있는데
- 파드를 먼저 삭제하고 새 파드를 올리거나
- 레플리카 셋의 파드 템플릿을 변경하고 파드를 하나 삭제하기.
- 파드를 생성하고 이전 파드를 삭제하는 것.
- 새로운 레플리카셋을 만들어서 파드를 새로 만들고 거기에 서비스를 연결 시키기
- 한번에 서비스 다 옮기면 recreate 한개씩 교체해 나가는걸 rolling update
- rolling update로 하면 하드웨어 리소스를 조금씩만 쓸 수 있다.
- kubectl에 rolling update가 자동으로 되도록 기능을 제공한다.
- 레플리케이션 컨트롤러와 로드밸런서 서비스를 미리 만들고 rolling update 커맨드로 지정 실행
- kubectl rolling update 단점
- 클라이언트 단에서 scale up, down 요청이 실행 되기 때문에 네트워크 소실이 될 경우 중간에 멈출 수 있음.
- 직접 리소스를 생성하여 실행하여야 한다.
- 쿠버네티스에서 파드 배포는 명령에 의해서가 아닌 쿠버네티스의 판단에 따라 자동 실행 되는 것을 지향하기 때문에 옳지 않음.
- 디플로이먼트
- 레플리카 셋을 관리 할 수 있는 리소스
- 기본적으로 레플리카 셋 생성과 크게 차이가 없음 ( 레이블 셀렉터, 레플리카 수, 파드 템플릿 으로 구성)
- 롤아웃(롤링 업데이트)을 자동으로 수행한다.
- 디플로이먼트는 롤아웃 수행 후 이전 레플리카셋을 삭제하지 않고 유지한다. ( 이후 롤백이 쉽게 가능)
- 롤 아웃은 maxSurge와 maxUnvaliable 속성에 따라 수행을 한다.
- maxSurge : 레플리카수에 비해 추가로 생성해서 유지할 수 있는 파드의 수
- maxSurge의 갯수 만큼 새로운 버전의 파드를 생성하고 기존 파드를 삭제
- maxUnvaliable : 레플리카수에 비해 부족하게 유지시켜도 되는 파드의 수
- maxUnvaliable의 갯수 만큼 기존 파드를 먼저 삭제하고 새로운 버전의 파드를 생성
- maxSurge와 maxUnvaliable 수가 둘 다 0이면 롤아웃을 실행할 수 없음.
- minReadySecond : 롤아웃 수행 중 중간에 중지하고 레드니스 프로브로 생성된 파드를 검증 후에 다시 진행 하는 방식으로 사용하는 옵션