IT용어위키


쿠버네티스 디플로이먼트

쿠버네티스 디플로이먼트(Kubernetes Deployment)은 컨테이너화된 애플리케이션을 선언적으로 배포(deployment)하고 관리하기 위한 리소스 오브젝트이다.

개요

디플로이먼트는 애플리케이션 워크로드를 실행하기 위해 여러 파드 집합을 관리하며, 보통 스테이트리스(stateless) 애플리케이션을 대상으로 한다. 디플로이먼트는 파드(Pod)와 하위의 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다. 클러스터 내에 “원하는 상태(desired state)”를 정의하면, 디플로이먼트 컨트롤러가 현재 상태를 자동으로 의도한 상태로 맞추도록 동작한다.

주요 기능 및 역할

  • 복제 및 스케일링: 원하는 파드의 수(replica)를 정의하여, 지정한 수만큼 파드가 항상 실행되도록 보장한다.
  • 선언적 업데이트: 이미지나 설정 변경 시 새로운 레플리카셋을 생성하여 점진적으로 파드를 교체하는 롤아웃(Rollout) 방식이 가능하다.
  • 롤백(Rollback): 새 버전 배포 후 문제가 발생하면 이전 안정된 버전으로 되돌릴 수 있다.
  • 무중단 배포: 기본 업데이트 전략으로 롤링 업데이트(RollingUpdate)를 사용해 가용성을 유지하며 배포할 수 있다.

예: Deployment 매니페스트

다음은 nginx 컨테이너 3개의 복제본을 생성하는 Deployment YAML 예시이다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-deployment
  template:
    metadata:
      labels:
        app: nginx-deployment
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

이 매니페스트를 통해 디플로이먼트를 생성하면, 해당 ReplicaSet과 Pod들이 자동으로 생성 및 관리된다.

사용 사례

  • 애플리케이션의 새 버전 릴리스 시 안정적이고 반복 가능한 배포
  • 트래픽 증가에 따른 스케일 아웃
  • 애플리케이션 장애 시 자동 복구 및 가용성 유지
  • 여러 파드의 롤아웃 또는 롤백 관리

장점 및 다른 리소스와의 관계

디플로이먼트는 단순한 ReplicaSet 또는 Pod 직접 생성 방식보다 다음과 같은 장점을 제공한다.

  • Pod와 ReplicaSet뿐 아니라 배포 이력(history) 관리를 포함 — 이전 버전으로 돌아갈 수 있다.
  • 선언적 방식으로 업데이트를 정의하면, 수동 스크립트 없이도 자동으로 롤아웃/롤백/스케일 조절을 수행할 수 있다.
  • 여러 Pod를 동시에 관리하고, 하나의 Deployment 정의만으로 ReplicaSet 생성 및 관리가 가능 — 운영이 단순화된다.

관련 리소스

디플로이먼트는 다음과 같은 리소스들과 밀접하게 연관되어 있다.

  • ReplicaSet — Deployment 하위에서 파드를 생성 및 유지
  • Pod — 실제 컨테이너가 실행되는 최소 단위
  • StatefulSet, DaemonSet — 상태가 있거나 특수 목적 워크로드용 컨트롤러

같이 보기

Kubernetes ReplicaSet Pod (Kubernetes) StatefulSet (Kubernetes)

각주


  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!