Kubernetes 기초 (9) - Deployment

이것저것 개발자·2022년 5월 7일
0

kubernetes 기초

목록 보기
9/16

ReplicaSet을 이용해 배포하는 이유

  • 여러 개의 Pod을 한번에 실행
  • 선언한 replicas의 수만큼 실행을 보장
  • ReplicaSet이 Pod의 상태를 24/7 감시
  • Pod 실행 중에도 replicas의 조정이 자유로움

롤백/ 롤아웃을 해야하는 경우에는 이미 실행중인 Pod의 상태 변경에 어려움이 있음 (삭제 후 재배포 해야하는 등)

Pod 배포의 3가지

  • selector
  • replicas
  • Pod template image (주로 이걸 바꿈)

Deployment

ReplicaSet + 배포 전략

  • 새로운 Pod을 롤아웃/롤백할 때 ReplicaSet 생성을 대신해준다

개발자 -> Deployment -> ReplicaSet -> apply

전략 1 - Recreate

  • 이전 Pod을 모두 종료하고 새로운 Pod을 replicas만큼 생성
  • 서비스 운영단계에서는 적합하지 않음 (실행중인 Pod이 존재하지 않는 구간이 발생)

전략 2 - RollingUpdate

  • 새로운 Pod 생성과 이전 Pod 종료가 동시에 일어남
  • 버전이 맞지 않는 Pod이 동시에 존재 (서비스 다운 타임 최소화)

RollingUpdate 속성

  • maxUnavailable
    - 유지하고자 하는 최소 Pod의 비율(수)를 지정
    • 최소 Pod 유지 비율 = 100 - maxUnavailable
      • ex) replicas: 10, maxUnavailable: 30%
        • 최소 7개가 유지됨
  • maxSurge
    - 허용할 수 있는 최대 Pod 비율(수)를 지정
    • 최대 Pod 허용 비율 = maxSurge 값

Revision

Deployment는 롤아웃 히스토리를 Revision # 으로 관리한다

kubectl rollout undo deployment <deployment-name> --to-revision=1

1번 revision으로 rollout하는 명령어

profile
조호영, Developing something

0개의 댓글