🧱 쿠버네티스의 핵심 구성 요소: Pod, Deployment, Service 이해하기

✨ 시작하기 전에

쿠버네티스를 처음 배우는 여러분, 환영합니다! 👋

이 글은 Pod, Deployment, Service라는 쿠버네티스의 핵심 개념 3가지를 중심으로 왜 필요한지, 무슨 역할을 하는지, 어떤 식으로 사용되는지를 쉽고 자세히 알려주는 블로그입니다.

📚 이 글을 읽으면, 마치 레고 블록처럼 쿠버네티스를 조립하듯 이해할 수 있어요!


🧩 쿠버네티스란?

  • 컨테이너(도커 등)를 자동으로 관리해주는 시스템
  • 구글에서 만들었고, 지금은 오픈소스로 전 세계에서 사용 중

쿠버네티스는 이런 걸 자동으로 해줘요:

| 기능 | 설명 | |——|——| | 배포 | 컨테이너를 서버에 자동으로 배치해줌 | | 확장 | 사용자가 많아지면 자동으로 컨테이너 수 늘림 | | 복구 | 문제가 생긴 컨테이너는 자동으로 재시작 | | 연결 | 사용자와 컨테이너, 컨테이너 간 연결을 자동으로 설정 |


🔹 1. Pod란 무엇일까?

“Pod는 쿠버네티스에서 앱이 실제로 실행되는 가장 작은 단위예요.”

📦 쉽게 말해:

  • 컨테이너를 하나 이상 감싸고 있는 상자
  • 보통은 하나의 Pod에 하나의 컨테이너가 들어감

🎨 그림으로 이해하기

image

💡 왜 Pod가 필요할까?

  • 컨테이너는 자체적으로는 IP나 저장소 등을 가질 수 없음
  • Pod가 이걸 대신 제공해줌 (네트워크, 볼륨, 설정 등)

🔹 2. Deployment란?

“Deployment는 여러 Pod를 자동으로 관리하는 매니저예요.”

📦 쉽게 말해:

  • Pod가 하나라면, Deployment는 Pod를 몇 개나 만들지, 언제 교체할지, 문제가 생기면 어떻게 복구할지 등을 정해주는 사람

🎨 그림으로 이해하기

image

✅ Deployment가 해주는 일

| 기능 | 설명 | |——|——| | 자동 생성 | 원하는 수만큼 Pod 생성 | | 복구 | 죽은 Pod 자동 재생성 | | 업데이트 | 새로운 이미지로 교체 가능 (롤링 업데이트) | | 롤백 | 문제가 생기면 이전 상태로 되돌리기 |


🔹 3. Service란?

“Service는 외부에서 Pod에게 접근할 수 있도록 도와주는 문지기예요.”

📦 쉽게 말해:

  • Pod는 IP가 매번 바뀌는데, Service는 고정된 주소를 제공
  • 트래픽을 여러 Pod에 골고루 분산해줌 (로드밸런서 역할)

🎨 그림으로 이해하기

image

✅ Service의 종류

| 종류 | 설명 | |——|——| | ClusterIP | 내부에서만 접근 가능 (기본값) | | NodePort | 외부에서 특정 포트로 접근 가능 | | LoadBalancer | 클라우드에서 외부 IP 부여 |


🧠 세 가지 구성요소 요약 비교

항목 Pod Deployment Service
역할 컨테이너 실행 단위 Pod 자동 관리 접근 & 연결 담당
구성 수 1개 이상 컨테이너 여러 Pod 여러 Pod에 연결
자동화 없음 있음 있음
외부 노출 안 됨 안 됨

🛠 예시 실습: 웹 서버 배포 흐름 보기

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-web-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-web
  template:
    metadata:
      labels:
        app: my-web
    spec:
      containers:
      - name: web
        image: nginx
        ports:
        - containerPort: 80
apiVersion: v1
kind: Service
metadata:
  name: my-web-svc
spec:
  type: NodePort
  selector:
    app: my-web
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080

위 두 파일을 적용하면 3개의 웹서버 Pod가 만들어지고, 외부에서 30080 포트로 접근할 수 있어요.


📚 마무리 요약

  • Pod: 컨테이너를 담는 최소 단위 (실행 공간)
  • Deployment: Pod를 자동으로 관리하는 관리자
  • Service: 외부나 내부에서 Pod에 접근하는 통로

이 세 가지가 합쳐져서 쿠버네티스의 기본 구조를 만듭니다!


📎 참고자료:

  • https://kubernetes.io
  • https://labs.play-with-k8s.com/
  • 한국폴리텍대학 서울강서캠퍼스 빅데이터소프트웨어공학과 이협건 교수 강의자료