CS/Infra

쿠버네티스 공부 10일차 :: 디플로이먼트

lovelyunsh 2022. 11. 18. 15:23
  • 디플로이먼트
    • 레플리카 셋을 이용해서 파드를 무중단으로 업데이트 할 수 있도록 해주는 리소스
    • 디플로이먼트는 파드를 직접 교체하지 않고 레플리카셋을 교체한다.
  • 파드 교체 방법
    • 먼저 수동으로 파드를 교체하는 방법에는 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 : 롤아웃 수행 중 중간에 중지하고 레드니스 프로브로 생성된 파드를 검증 후에 다시 진행 하는 방식으로 사용하는 옵션