Post

[Kubernetes] Pod, Service, Volume, Deployment 핵심 개념 정리

Kubernetes를 이해하기 위한 핵심 개념 정리. Pod, Service, Volume, Deployment와 기본 배포 전략(Blue-Green, Rolling Update)을 실제 구조 중심으로 설명합니다.

[Kubernetes] Pod, Service, Volume, Deployment 핵심 개념 정리

☸️ Kubernetes 핵심 개념 정리

쿠버네티스를 처음 접하면 가장 먼저 부딪히는 문제가 용어의 복잡함입니다.

Pod, Service, Deployment, ReplicaSet 등 다양한 개념이 등장하면서
전체 구조를 이해하기 어려워지는 경우가 많습니다.

하지만 Kubernetes는 몇 가지 핵심 구성요소만 이해하면 전체 구조가 자연스럽게 연결됩니다.

이 글에서는 Kubernetes를 이해하기 위한 가장 기본적인 개념들을 정리합니다.


🏗 Kubernetes Cluster 구조

Kubernetes는 Cluster 구조로 동작합니다.

클러스터는 크게 두 가지 영역으로 나뉩니다.

  • Control Plane (Master)
  • Worker Node
graph TD

A[Kubernetes Cluster]

A --> B[Control Plane]
A --> C[Worker Node 1]
A --> D[Worker Node 2]

B --> E[API Server]
B --> F[Scheduler]
B --> G[Controller Manager]
B --> H[etcd]

C --> I[Pod]
C --> J[Pod]

D --> K[Pod]

🧠 Control Plane (Master)

Control Plane은 클러스터 전체를 관리하는 영역입니다.

graph TD

A[Control Plane]

A --> B[API Server]
A --> C[Scheduler]
A --> D[Controller Manager]
A --> E[etcd]

주요 역할은 다음과 같습니다.

  • 클러스터 상태 관리
  • 스케줄링
  • API 제공
  • 컨테이너 배치 관리

대표적인 컴포넌트

Component역할
API ServerKubernetes API 제공
SchedulerPod를 어느 Node에 배치할지 결정
Controller Manager클러스터 상태 유지
etcd클러스터 상태 저장

🖥 Worker Node

Worker Node는 실제로 컨테이너가 실행되는 서버입니다.

graph TD

A[Worker Node]

A --> B[kubelet]
A --> C[kube-proxy]
A --> D[Container Runtime]
A --> E[Pods]

각 Node에는 다음 구성요소가 포함됩니다.

  • kubelet
  • kube-proxy
  • container runtime (Docker / containerd)

Node는 다음 환경에서 실행될 수 있습니다.

  • 물리 서버
  • 가상 머신
  • 클라우드 인스턴스

각 구성요소

Component설명
kubeletNode의 Pod 관리
kube-proxy네트워크 처리
Container Runtime컨테이너 실행
Pods실제 애플리케이션

📦 Kubernetes Object

Kubernetes에서는 모든 리소스를 Object 형태로 관리합니다.

예를 들어

  • Pod
  • Service
  • Deployment
  • ConfigMap

모두 Kubernetes Object입니다.

Object는 보통 YAML 파일로 정의합니다.

예시 구조

1
2
3
4
5
6
7
8
apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
  - name: app
    image: nginx

Object에는 크게 두 가지 정보가 포함됩니다.

  • Metadata → 이름, label 등
  • Spec → 원하는 상태 (Desired State)

🐳 Pod

Pod는 Kubernetes에서 가장 작은 배포 단위입니다.

중요한 점은 Kubernetes가 컨테이너를 직접 배포하지 않는다는 것입니다.

대신 컨테이너를 Pod 안에서 실행합니다.

Pod 특징

  • 하나 이상의 컨테이너 포함
  • 동일한 네트워크 사용
  • 동일한 스토리지 공유 가능

Pod 구조

graph TD

A[Pod]

A --> B[Container - App]
A --> C[Container - Sidecar]
A --> D[Shared Network]
A --> E[Shared Volume]

이 구조를 이용하면 다음과 같은 패턴이 가능합니다.

예시

  • Application Container
  • Log Collector Container

애플리케이션이 생성한 로그를 Sidecar Container가 수집하는 방식입니다.

Pod Networking

Pod는 각각 고유한 IP를 가집니다.

graph LR

A[Pod A] --> B[Pod B]
B --> C[Pod C]

Kubernetes 특징

  • Pod 간 직접 통신 가능
  • NAT 없이 Pod IP 사용

Service 구조

Pod는 생성/삭제될 때마다 IP가 바뀝니다.

이 문제를 해결하는 것이 Service입니다.

graph TD

A[Service]

A --> B[Pod 1]
A --> C[Pod 2]
A --> D[Pod 3]

Service 역할

  • Pod 로드밸런싱
  • 고정된 접근 포인트 제공

💾 Volume

컨테이너의 파일 시스템은 기본적으로 휘발성(Ephemeral) 입니다.

즉 컨테이너가 재시작되면 데이터가 사라집니다.

이 문제를 해결하기 위해 사용하는 것이 Volume입니다.

Volume 특징

  • Pod에 마운트되어 사용
  • 컨테이너 간 공유 가능
  • 데이터 유지 가능

예시 구조

graph TD

A[Pod]

A --> B[Container 1]
A --> C[Container 2]

B --> D[Shared Volume]
C --> D

대표적인 Volume 타입

  • emptyDir
  • hostPath
  • Persistent Volume (PV)

🌐 Service

Pod는 생성되고 삭제될 때마다 IP가 변경됩니다.

따라서 Pod에 직접 접근하는 방식은 안정적이지 않습니다.

이 문제를 해결하는 것이 Service입니다.

Service는

  • Pod 그룹에 대한 고정된 네트워크 엔드포인트
  • 내부 로드밸런싱 기능

을 제공합니다.

graph TD

A[Service]

A --> B[Pod]
A --> C[Pod]
A --> D[Pod]

즉 Service는 Pod 앞단에서 트래픽을 분산하는 역할을 합니다.


🚀 Deployment

Pod는 직접 생성해서 사용할 수도 있지만 실무에서는 보통 Deployment를 사용합니다.

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

  • Pod 자동 생성
  • Replica 관리
  • Rolling Update
  • Rollback

Deployment 구조

graph TD

A[Deployment]

A --> B[ReplicaSet]

B --> C[Pod]
B --> D[Pod]
B --> E[Pod]

Deployment는 내부적으로 ReplicaSet을 생성하고 Pod를 관리합니다.


🔄 Kubernetes 배포 전략

Kubernetes에서는 다양한 배포 전략을 사용할 수 있습니다.

대표적인 방식 두 가지를 살펴보겠습니다.


🔵🟢 Blue-Green Deployment

Blue-Green 배포는 두 개의 환경을 동시에 운영하는 방식입니다.

graph LR

A[Blue Version - Old]

B[Green Version - New]

C[Load Balancer]

C --> A

C -. Switch .-> B

배포 과정

  1. 새로운 버전(Green) 배포
  2. 트래픽을 Blue → Green으로 전환
  3. 문제 없으면 Blue 제거

장점

  • 롤백이 매우 빠름
  • 안정적인 배포 가능

🔁 Rolling Update

Rolling Update는 Pod를 하나씩 교체하는 방식입니다.

graph LR

A[Old Pod] --> B[New Pod]
A2[Old Pod] --> B2[New Pod]
A3[Old Pod] --> B3[New Pod]

특징

  • 서비스 중단 없이 배포 가능
  • 점진적 업데이트
  • 문제 발생 시 롤백 가능

Deployment의 기본 배포 방식이기도 합니다.


🌐 Kubernetes Networking 구조

외부 트래픽은 다음 경로를 통해 Pod로 전달됩니다.

graph TD

A[User]

A --> B[Ingress]

B --> C[Service]

C --> D[Pod]
C --> E[Pod]

구성 요소

Component역할
IngressHTTP 라우팅
Service로드밸런싱
Pod애플리케이션

🏛️ Kubernetes 전체 아키텍처

지금까지 설명한 구조를 하나로 합치면 다음과 같습니다.

graph TD

A[User]

A --> B[Ingress]

B --> C[Service]

C --> D[Pod]

D --> E[Worker Node]

E --> F[Kubernetes Cluster]

F --> G[Control Plane]

🧠 정리

Kubernetes를 이해하기 위해 가장 중요한 개념은 다음과 같습니다.

Cluster 구조

  • Control Plane
  • Worker Node

핵심 Object

  • Pod
  • Service
  • Volume
  • Deployment

배포 전략

  • Blue-Green
  • Rolling Update
This post is licensed under CC BY 4.0 by the author.