DevOps./Kubernetes

[Kubernetes] Deployment (디플로이먼트)

PI.314 2022. 2. 2. 01:07

디플로이먼트란?

서비스 버전이 업데이트되어 파드를 새로운 버전의 이미지 파드로 교체해야 한다면? 새 버전에 이슈가 발견되어 롤백을 진행해야 한다면?

디플로이먼트 (Deployment)

  • 파드의 이미지 버전이 갱신될 때 배포 전략을 설정
  • 디플로이먼트 오브젝트를 생성하면 대응되는 ReplicaSet과 Pod 자동 생성
  • 기본적으로 Recreate 전략과 RollingUpdate 전략 지원

사용자는 특수한 목적이 아니라면 파드와 레플리카셋이 아닌 디플로이먼트로 워크로드 관리

 

디플로이먼트의 배포전략

재생성 (Recreate)

  • 기존 레플리카셋의 파드를 모두 종료 후 새 레플리카셋의 파드를 새로 생성

 

롤링 업데이트 (Rolling Update)

세부 설정에 따라 기존 레플리카셋에서 새 레플리카셋으로 점진적으로 이동

  • maxSurge: 업데이트 과정에 spec.replicas 수 기준 최대 새로 추가되는 파드 수
  • maxUnavailable: 업데이트 과정에 spec.replicas 수 기준 최대 이용 불가능 파드 수

 

새 파드 생성 후 기존 파드 삭제 반복

  • 클러스터의 노드자원이 부족해질 수 있다.
  • traffic 측면을 고려하면 이 전략이 유리하다.
maxSurge: 1
maxUnavailable: 0

기존 파드 삭제 후 새 파드 생성 반복

  • 노드 자원을 초과하지 않는다.
  • 대신 Pod를 1개 덜 사용하기 때문에 Traffic이 많은 상황에는 자원이 부족해질 수 있다.
 maxSurge: 0
 maxUnavailable: 1


참조: 
https://fastcampus.co.kr/dev_online_awsdevops

 

 

'DevOps. > Kubernetes' 카테고리의 다른 글

[Kubernetess] ConfigMap  (0) 2022.02.02
[Kubernetes] Service (서비스)  (0) 2022.02.02
[Kubernetes] ReplicaSet (레플리카셋)  (0) 2022.02.02
[Kubernetes] 파드 (Pod)  (0) 2022.02.02
[Kubernetes] kubectl 명령형과 선언형 방식  (0) 2022.02.01