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

Kubernetes 환경에서 Application을 안정적으로 운영하려면 단순히 Container를 실행하는 것뿐만 아니라 원하는 개수의 Pod를 유지하고, Version 변경과 업데이트 과정을 안전하게 관리해야 합니다.

예를 들어 Web Application을 운영할 때 하나의 Pod만 실행하면 장애 발생 시 서비스가 중단될 수 있습니다.

또한 새로운 Version의 Application을 배포할 때 모든 Pod를 한 번에 교체하면 서비스 중단 위험이 발생합니다.

Kubernetes에서는 이러한 문제를 해결하기 위해 Deployment 기능을 제공합니다.

Deployment는 ReplicaSet과 Pod를 관리하며 Application 배포, Scaling, Rolling Update, Rollback을 지원하는 Kubernetes 핵심 Controller입니다.

구성 요소역할
DeploymentApplication 배포 관리
ReplicaSetPod 개수 유지
PodContainer 실행
Controller상태 조정

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

Kubernetes Deployment란 무엇인가?

Deployment는 Kubernetes에서 Stateless Application을 관리하기 위한 Resource입니다.

사용자가 원하는 Pod 개수와 Application 상태를 정의하면 Kubernetes가 항상 해당 상태를 유지합니다.

예:

원하는 상태:

Web Pod 3개 실행

현재 상태:

Web Pod 1개 실행

Deployment Controller 확인

Pod 2개 추가 생성

총 3개 유지

이처럼 Deployment는 Desired State와 Current State를 일치시키는 역할을 합니다.

Kubernetes Deployment가 필요한 이유

Container 운영 환경에서는 지속적인 관리가 필요합니다.

문제:

상황문제
Pod 장애서비스 중단 가능
Version 변경업데이트 위험
Traffic 증가Pod 부족
수동 관리운영 부담 증가

Deployment를 사용하면 Application Lifecycle을 자동으로 관리할 수 있습니다.

Kubernetes Deployment 동작 구조

Deployment는 ReplicaSet을 생성하고 ReplicaSet이 Pod를 관리하는 구조입니다.

구조:

구성 요소역할
Deployment배포 상태 관리
ReplicaSetPod Replica 유지
PodApplication 실행
Container실제 서비스 실행

동작 과정:

단계내용
1단계Deployment 생성
2단계ReplicaSet 생성
3단계Pod 생성
4단계상태 확인
5단계원하는 상태 유지

Deployment Controller가 전체 상태를 관리합니다.

Kubernetes Deployment와 ReplicaSet 관계

Deployment는 직접 Pod를 관리하지 않습니다.

중간에 ReplicaSet을 통해 Pod 개수를 유지합니다.

구조:

Deployment

ReplicaSet

Pod

예:

Deployment:

nginx-app

ReplicaSet:

nginx-app-v1

Pod:

nginx Pod 3개

이 구조를 통해 안정적인 Version 관리가 가능합니다.

Kubernetes Replica란 무엇인가?

Replica는 동일한 Application Pod의 개수를 의미합니다.

예:

replicas: 5

의미:

동일한 Pod 5개 실행

효과:

효과설명
가용성 증가장애 대응
Load 분산Traffic 처리
확장 가능사용자 증가 대응

Replica 설정은 Application 안정성에 중요한 요소입니다.

Kubernetes Deployment Scaling 방식

Deployment는 Replica 개수를 조절하여 Application 규모를 변경합니다.

Scale Up:

Pod 3개

Pod 10개 증가

Scale Down:

Pod 10개

Pod 3개 감소

Scaling 명령:

방법설명
kubectl scale직접 변경
HPA자동 Scaling
Manifest 변경설정 변경

운영 환경에서는 HPA와 함께 사용하는 경우가 많습니다.

Kubernetes Rolling Update란?

Rolling Update는 Application Version 변경 시 기존 Pod를 조금씩 교체하는 배포 방식입니다.

서비스 중단 없이 새로운 Version을 적용할 수 있습니다.

동작:

기존 Version Pod

새로운 Version Pod 생성

Traffic 이동

기존 Pod 제거

안정적인 무중단 배포 방식입니다.

Kubernetes Rolling Update 설정

Deployment에서는 업데이트 전략을 설정할 수 있습니다.

주요 옵션:

설정설명
maxUnavailable동시에 줄일 수 있는 Pod 수
maxSurge추가 생성 가능한 Pod 수

예:

현재 Pod:

10개

maxSurge:

2

최대 12개까지 생성 가능

점진적인 업데이트가 가능합니다.

Kubernetes Deployment Rollback이란?

새로운 Version 배포 후 문제가 발생하면 이전 Version으로 되돌릴 수 있습니다.

이를 Rollback이라고 합니다.

과정:

Version 업데이트

Application 오류 발생

이전 ReplicaSet 선택

기존 Version 복구

빠른 장애 복구가 가능합니다.

Kubernetes Deployment Revision 관리

Deployment는 변경 이력을 저장합니다.

각 변경은 Revision으로 관리됩니다.

활용:

기능설명
Revision 확인배포 기록 확인
Rollback이전 상태 복구
Version 관리변경 추적

운영 환경에서 안정적인 배포를 지원합니다.

Kubernetes Deployment Update 전략

Deployment는 두 가지 Update 전략을 제공합니다.

전략설명
RollingUpdate순차 변경
Recreate전체 삭제 후 재생성

일반적인 Production 환경에서는 RollingUpdate를 많이 사용합니다.

Kubernetes Deployment와 Service 관계

Deployment는 Pod를 관리하고 Service는 Pod에 Traffic을 전달합니다.

구조:

Client

Service

Deployment

Pod

역할이 서로 다릅니다.

Kubernetes Deployment와 HPA 관계

HPA는 Deployment Replica 수를 자동으로 변경합니다.

구조:

Traffic 증가

HPA 감지

Deployment Replica 증가

Pod 추가 생성

자동 Scaling 환경에서 중요한 구조입니다.

Kubernetes Deployment 활용 사례

Application사용 목적
Web Server서비스 운영
API ServerBackend 운영
FrontendUI 서비스
MicroserviceApplication 배포

Stateless Application 운영에서 가장 많이 사용하는 Controller입니다.

Kubernetes Deployment 운영 시 고려사항

Production 환경에서는 안정적인 배포 전략이 필요합니다.

항목설명
Replica 수서비스 규모 고려
Update 전략배포 방식 선택
Resource 설정CPU, Memory 관리
Health Check상태 확인

Deployment 설정은 서비스 안정성과 직접 연결됩니다.

Kubernetes Deployment 장애 처리

Pod 장애가 발생하면 Deployment는 자동으로 복구합니다.

과정:

Pod 장애 발생

ReplicaSet 감지

새로운 Pod 생성

원하는 Replica 유지

자동 복구 구조를 제공합니다.

Kubernetes Deployment 장점

장점설명
자동 복구Pod 상태 유지
무중단 배포Rolling Update 지원
ScalingReplica 조절
Rollback빠른 복구 가능

Deployment는 Kubernetes Application 운영의 핵심 Resource입니다.

자주 묻는 질문

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

Pod는 Container를 실행하는 단위이고 Deployment는 Pod의 생성과 상태를 관리하는 Controller입니다.

Deployment 없이 Pod를 실행할 수 있나요?

가능하지만 Production 환경에서는 자동 복구와 Version 관리를 위해 Deployment 사용이 일반적입니다.

Rolling Update 중 서비스 중단이 발생하나요?

정상적으로 설정하면 기존 Pod와 새로운 Pod를 함께 운영하면서 서비스 중단을 최소화할 수 있습니다.

마무리

Kubernetes Deployment는 Application 배포, Replica 관리, Scaling, Rolling Update, Rollback을 담당하는 핵심 Controller입니다.

구성 요소역할
Deployment배포 관리
ReplicaSetPod 개수 유지
PodApplication 실행
Controller상태 조정

Deployment 구조를 이해하면 Kubernetes 환경에서 안정적인 Application 배포와 운영 자동화 방식을 이해할 수 있습니다.

다음 글에서는 Kubernetes Service를 통한 Application Network 연결을 위한 Kubernetes Service 완벽 가이드! ClusterIP, NodePort, LoadBalancer 구조 이해하기를 알아보겠습니다.

댓글 남기기