본문 바로가기
K8S

daemonset, deployment, statefulset 비교 정리

by Rainbound-IT 2024. 11. 10.
반응형

Kubernetes에서 DaemonSet, Deployment, StatefulSet은 애플리케이션을 배포하고 관리하는 데 사용되는 세 가지 주요 리소스입니다. 각각의 목적과 동작 방식이 다르며, 특정 상황에 적합한 기능을 제공합니다. 이 세 가지 리소스를 자세히 설명하겠습니다.

 


1. DaemonSet


개념: DaemonSet은 클러스터 내의 모든 노드에서 특정 애플리케이션의 복사본을 실행하도록 보장합니다. 새로운 노드가 클러스터에 추가되면, 해당 노드에도 자동으로 Pod가 생성됩니다. 마찬가지로 노드가 클러스터에서 제거되면 그 노드에서 실행 중인 Pod도 제거됩니다.

주요 특징:

클러스터의 모든 노드 또는 특정 레이블이 있는 노드에 애플리케이션을 배포합니다.
로그 수집 에이전트, 모니터링 에이전트, 네트워크 플러그인 등 노드별로 실행해야 하는 작업에 적합합니다.
노드 수에 따라 자동으로 Pod가 추가되거나 제거됩니다.
사용 사례:

로그 수집 도구(예: Fluentd, Logstash).
모니터링 에이전트(예: Prometheus Node Exporter).
네트워크 플러그인(Calico, Flannel 등).


2. Deployment


개념: Deployment는 애플리케이션의 스케일링, 업데이트, 롤백을 관리합니다. 기본적으로 무상태(Stateless) 애플리케이션을 배포하는 데 적합하며, 원하는 수의 복제본을 실행하도록 보장합니다.

주요 특징:

애플리케이션의 스케일링과 롤링 업데이트를 지원합니다.
Pod 템플릿을 정의하여 동일한 템플릿을 따르는 여러 복제본을 실행할 수 있습니다.
새로운 버전의 애플리케이션을 배포할 때 기존 버전을 점진적으로 교체하면서 무중단 업데이트를 수행할 수 있습니다.
롤백 기능을 제공하여 이전 버전으로 쉽게 되돌릴 수 있습니다.
사용 사례:

무상태 웹 서버, API 서버 등 동일한 인스턴스가 여러 개 필요한 애플리케이션.
애플리케이션의 업데이트 및 롤백이 자주 필요한 경우.


3. StatefulSet


개념: StatefulSet은 상태가 있는(Stateful) 애플리케이션을 배포하고 관리하는 데 사용됩니다. 각 Pod는 고유한 네트워크 ID와 스토리지를 가지며, 순서가 보장되는 생성 및 종료 동작을 제공합니다.

주요 특징:

각 Pod는 고유한 네트워크 ID(예: my-app-0, my-app-1)를 가지며, 이 ID는 순서대로 할당됩니다.
각 Pod에 대해 고유한 PersistentVolumeClaim(PVC)을 생성하여, Pod가 삭제되더라도 데이터는 유지됩니다.
Pod의 생성과 종료가 순차적으로 이루어지므로, 순서가 중요한 애플리케이션에 적합합니다.
클러스터 간 복제 또는 데이터베이스의 리더-팔로워 설정 등 상태가 중요한 애플리케이션에 유용합니다.
사용 사례:

데이터베이스(MySQL, PostgreSQL 등)와 같은 상태가 필요한 애플리케이션.
분산 파일 시스템(Cassandra, HDFS).
상태가 있는 서비스를 실행해야 하거나, 각 인스턴스의 식별이 중요한 경우.

4. 정리 및 비교

특성 DaemonSet Deployment StatefulSet
목적 모든 노드에서 애플리케이션의 인스턴스를 실행 무상태 애플리케이션의 관리와 스케일링 상태가 있는 애플리케이션의 배포와 관리
Pod 배포 방식 모든 노드 또는 특정 노드에서 실행 원하는 수의 복제본을 생성하여 무작위로 배포 순서에 따라 Pod를 생성하고 종료하며, 고유한 네트워크 ID 부여
스토리지 관리 일반적으로 스토리지와 관련 없음 스토리지 필요 시 외부 스토리지와 연결 각 Pod에 대해 고유한 PVC를 사용, 데이터 유지 보장
업데이트 전략 Pod가 추가/삭제될 때 자동 관리 Rolling Update 및 롤백 지원 순차적 업데이트, 상태가 중요한 애플리케이션에 적합
주요 사용 사례 로그 수집, 모니터링 에이전트, 네트워크 플러그인 무상태 웹 서버, API 서버 등 데이터베이스, 분산 시스템 등 상태 유지가 중요한 애플리케이션
반응형

'K8S' 카테고리의 다른 글

[Kubernetes] PDB 란?  (0) 2024.12.02
helm plugin 수동 설치 - windows  (0) 2024.11.25
Istio 의 컴포넌트  (0) 2024.11.09
[kubernetes] ingress 를 거치는 통신 과정  (0) 2024.11.07
CKA 합격 후기 및 팁  (1) 2024.06.04

댓글