Kubernetes Deployment 완벽 가이드! Replica와 Rolling Update 구조 이해하기

Kubernetes에서 Application을 안정적으로 운영하기 위해서는 단순히 Container를 실행하는 것보다 배포와 관리 방식을 이해하는 것이 중요합니다.

Kubernetes에서는 Deployment라는 Resource를 사용하여 Application 배포, Replica 관리, 업데이트, 장애 복구를 자동으로 처리합니다.

Deployment는 Kubernetes 운영에서 가장 많이 사용하는 핵심 기능 중 하나입니다.

구성 요소역할
DeploymentApplication 배포 및 관리
ReplicaSetPod 개수 유지
Pod실제 Container 실행
ContainerApplication 실행 환경

Deployment를 활용하면 서비스 중단을 최소화하면서 새로운 버전의 Application을 배포할 수 있습니다.

Kubernetes Deployment란 무엇인가?

Deployment는 Kubernetes에서 Application 배포 상태를 관리하는 Resource입니다.

사용자가 원하는 Pod 개수와 Application 상태를 정의하면 Kubernetes가 자동으로 현재 상태를 유지합니다.

예:

설정 상태내용
원하는 상태Web Server Pod 5개 실행
현재 상태Web Server Pod 3개 실행

Kubernetes Deployment는 부족한 Pod를 자동으로 생성하여 원하는 상태를 유지합니다.

Deployment는 다음과 같은 기능을 제공합니다.

기능설명
Pod 생성Application 실행
Replica 관리Pod 개수 유지
Rolling Update서비스 중단 없는 업데이트
Rollback이전 버전 복구

Deployment는 Production 환경에서 안정적인 Application 운영을 위한 핵심 기능입니다.

Kubernetes ReplicaSet이란?

ReplicaSet은 지정된 개수의 Pod를 항상 유지하는 역할을 담당합니다.

예를 들어 Web Server Pod 3개를 유지하도록 설정하면 ReplicaSet은 항상 3개의 Pod가 실행되도록 관리합니다.

상태동작
Pod 3개 실행정상 상태 유지
Pod 1개 장애 발생새로운 Pod 생성
Pod 개수 증가불필요한 Pod 제거

ReplicaSet은 장애 발생 시 자동 복구 기능을 제공합니다.

하지만 일반적으로 ReplicaSet을 직접 관리하기보다는 Deployment를 통해 관리합니다.

Kubernetes Deployment와 ReplicaSet 관계

Deployment는 내부적으로 ReplicaSet을 사용합니다.

구조:

구성 요소역할
Deployment전체 배포 관리
ReplicaSetPod 개수 유지
PodApplication 실행

Application 배포 과정:

Deployment 생성

ReplicaSet 생성

Pod 생성

Container 실행

이 구조를 통해 Kubernetes는 Application 상태를 지속적으로 관리합니다.

Kubernetes Deployment 생성 방법

Deployment는 YAML 파일을 이용하여 생성하는 방식이 일반적입니다.

기본 구성 요소:

항목설명
metadataResource 정보
spec원하는 상태 정의
replicasPod 개수 설정
templatePod 설정

Deployment 설정에서 replicas 값을 이용해 실행할 Pod 개수를 지정할 수 있습니다.

예:

설정의미
replicas: 3Pod 3개 실행
replicas: 10Pod 10개 실행

Kubernetes는 설정된 값을 기준으로 자동으로 Pod를 관리합니다.

Kubernetes Replica 설정과 Scaling

Deployment에서는 Replica 개수를 변경하여 Application 규모를 조절할 수 있습니다.

이 과정을 Scaling이라고 합니다.

Scaling 방식설명
Scale UpPod 개수 증가
Scale DownPod 개수 감소

예:

변경 전변경 후
Pod 3개Pod 10개

서비스 이용자가 증가하면 Replica 개수를 늘려 더 많은 요청을 처리할 수 있습니다.

Kubernetes Rolling Update란?

Rolling Update는 서비스 중단 없이 Application 버전을 업데이트하는 방식입니다.

기존 방식:

기존 Container 종료

새로운 Container 시작

이 방식은 업데이트 과정에서 서비스 중단이 발생할 수 있습니다.

Kubernetes Rolling Update:

기존 Pod 유지

새로운 버전 Pod 생성

정상 확인

기존 Pod 제거

이 과정을 통해 서비스 중단을 최소화할 수 있습니다.

Kubernetes Deployment 업데이트 전략

Deployment는 여러 가지 업데이트 전략을 제공합니다.

전략설명
RollingUpdate순차적으로 Pod 교체
Recreate기존 Pod 종료 후 새 Pod 생성

Production 환경에서는 일반적으로 RollingUpdate 방식을 많이 사용합니다.

RollingUpdate 장점:

장점설명
서비스 중단 최소화사용자 요청 유지
안정적인 배포문제 확인 가능
점진적 변경위험 감소

Kubernetes Rollback 기능

Deployment 업데이트 후 문제가 발생하면 이전 버전으로 되돌릴 수 있습니다.

이 기능을 Rollback이라고 합니다.

예:

상황동작
새 버전 오류 발생이전 버전 복구
Application 장애 발생정상 버전 유지

Rollback은 Production 환경에서 매우 중요한 기능입니다.

Kubernetes Deployment 상태 확인

Deployment 운영 시 현재 상태를 확인하는 것이 중요합니다.

명령어용도
kubectl get deploymentDeployment 확인
kubectl describe deployment상세 정보 확인
kubectl rollout status배포 상태 확인
kubectl rollout history배포 기록 확인

배포 과정에서 문제가 발생하면 상태 정보를 통해 원인을 분석할 수 있습니다.

Kubernetes Deployment Scaling 방법

Deployment는 명령어를 통해 쉽게 Scale 조정이 가능합니다.

명령어기능
scaleReplica 개수 변경
autoscale자동 확장 설정

예:

서비스 요청 증가

Pod 부족 발생

Replica 증가

처리 능력 향상

Kubernetes는 이러한 방식으로 Application 규모를 자동으로 조절할 수 있습니다.

Kubernetes Deployment 운영 장점

장점설명
자동 복구장애 Pod 재생성
안정적인 배포Rolling Update 지원
쉬운 ScalingReplica 조절 가능
버전 관리Rollback 지원

Deployment는 Kubernetes 운영 환경에서 가장 중요한 배포 관리 방식입니다.

자주 묻는 질문

Deployment와 Pod의 차이는 무엇인가요?

Pod는 실제 Container가 실행되는 단위이고 Deployment는 Pod를 관리하는 상위 Resource입니다.

Replica는 왜 필요한가요?

Replica는 동일한 Pod를 여러 개 실행하여 안정성과 처리 능력을 높이기 위해 사용합니다.

Rolling Update를 사용하는 이유는 무엇인가요?

서비스 중단 없이 Application 버전을 변경하기 위해 사용합니다.

마무리

Kubernetes Deployment는 Application 배포와 운영을 자동화하는 핵심 기능입니다.

구성 요소역할
Deployment배포 관리
ReplicaSetPod 개수 유지
PodContainer 실행
Rolling Update무중단 업데이트
Rollback이전 버전 복구

Deployment를 이해하면 Kubernetes 환경에서 Application을 안정적으로 배포하고 운영할 수 있습니다.

다음 글에서는 Kubernetes Application 노출을 담당하는 Kubernetes Service 완벽 가이드! ClusterIP, NodePort, LoadBalancer 구조 이해하기를 알아보겠습니다.

댓글 남기기