쿠버네티스 파드(Pod) 완벽 가이드: 개념, 구성, 관리 방법

쿠버네티스(Kubernetes)에서 가장 중요한 기본 단위는 **파드(Pod)**입니다. 파드는 하나 이상의 컨테이너를 실행하고 관리하는 최소 배포 단위이며, 쿠버네티스의 핵심 개념 중 하나입니다.

이 글에서는 파드의 개념, 구성 요소, 동작 방식, 관리 방법, 그리고 실전 예제까지 자세히 설명합니다.


📌 목차

  1. 쿠버네티스 파드(Pod)란?
  2. 파드의 주요 특징
  3. 파드의 구성 요소
  4. 단일 컨테이너 vs. 다중 컨테이너 파드
  5. 파드의 라이프사이클 및 동작 방식
  6. 파드 생성 및 관리 방법 (kubectl 사용)
  7. 파드의 네트워크 및 서비스 연동
  8. 파드 모니터링 및 문제 해결
  9. 결론

1. 쿠버네티스 파드(Pod)란?

**파드(Pod)**는 쿠버네티스에서 컨테이너를 실행하는 최소 배포 단위입니다. 하나의 파드는 하나 이상의 컨테이너를 포함할 수 있으며, 컨테이너 간 네트워크와 스토리지를 공유할 수 있습니다.

파드는 무엇을 해결하는가?

  • 컨테이너 오케스트레이션을 쉽게 관리할 수 있도록 그룹화.
  • 여러 컨테이너가 협업할 수 있도록 공유 네트워크 및 볼륨 제공.
  • 하나의 단위로 배포, 스케일링, 관리가 가능.

2. 파드의 주요 특징

🔹 1) 하나 이상의 컨테이너를 실행 가능

  • 파드는 단일 컨테이너로 구성될 수도 있고, 여러 컨테이너가 협력하여 동작할 수도 있음.

🔹 2) 자체 IP 주소 보유

  • 각 파드는 클러스터 내부에서 고유한 IP 주소를 가짐.
  • 같은 파드 내 컨테이너들은 localhost로 서로 통신 가능.

🔹 3) 공유 저장소(Volume) 사용

  • 파드 내 컨테이너들은 동일한 볼륨을 공유 가능하여 데이터 유지 가능.

🔹 4) 일시적인 존재 (Ephemeral)

  • 파드는 영구적인 존재가 아님 (재시작될 경우 새로운 ID와 IP 할당).
  • 지속적인 실행이 필요한 경우 디플로이먼트(Deployment) 또는 스테이트풀셋(StatefulSet) 사용.

3. 파드의 구성 요소

파드는 다음과 같은 요소로 구성됩니다.

구성 요소설명
컨테이너실행되는 애플리케이션 컨테이너(Docker 등)
네트워크파드는 고유한 IP를 가지며, 같은 노드의 다른 파드와 격리됨
스토리지 (Volume)파드 내 컨테이너 간 데이터 공유 가능
메타데이터파드의 이름, 네임스페이스, 레이블 등 관리 정보 포함

YAML 예제 (단일 컨테이너 파드)

<yaml>

apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80

4. 단일 컨테이너 vs. 다중 컨테이너 파드

🔹 단일 컨테이너 파드

  • 대부분의 경우 하나의 컨테이너만 실행.
  • 실행 프로세스가 독립적일 때 사용.

🔹 다중 컨테이너 파드

  • Sidecar 패턴 (예: 로깅, 프록시 컨테이너 추가).
  • Ambassador 패턴 (API 요청을 중계하는 역할).
  • Adapter 패턴 (데이터 변환 및 수집).

다중 컨테이너 파드 예제

<yaml>

apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: app-container
image: my-app
- name: sidecar-container
image: logging-agent

5. 파드의 라이프사이클 및 동작 방식

파드는 다음과 같은 상태를 가질 수 있습니다.

상태설명
Pending컨테이너가 실행될 준비 중
Running컨테이너가 실행 중
Succeeded컨테이너 실행 완료 후 종료
Failed컨테이너가 비정상적으로 종료됨
Unknown네트워크 문제 등으로 상태 확인 불가

파드 상태 확인 명령어

<bash>

kubectl get pods
kubectl describe pod my-pod

6. 파드 생성 및 관리 방법 (kubectl 사용)

🔹 파드 생성

<bash>

kubectl apply -f my-pod.yaml

🔹 파드 목록 조회

<bash>

kubectl get pods

🔹 파드 상세 정보 확인

<bash>

kubectl describe pod my-pod

🔹 파드 삭제

<bash>

kubectl delete pod my-pod

7. 파드의 네트워크 및 서비스 연동

파드는 클러스터 내에서 서로 독립된 네트워크 공간을 가지며, Service를 통해 접근할 수 있습니다.

서비스(Service)로 파드 접근

<yaml>

apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
<bash>

kubectl apply -f my-service.yaml

8. 파드 모니터링 및 문제 해결

🔹 로그 확인

<bash>

kubectl logs my-pod

🔹 실시간 터미널 접속

<bash>

kubectl exec -it my-pod -- /bin/sh

🔹 이벤트 확인

<bash>

kubectl get events

9. 결론

🎯 쿠버네티스 파드는 컨테이너 실행을 위한 기본 단위

  • 단일 컨테이너 또는 다중 컨테이너 형태로 운영 가능.
  • IP 주소를 갖고 있으며, 같은 파드 내에서는 localhost로 통신 가능.

🛠 파드 관리 필수 요소

  • kubectl 명령어로 생성, 조회, 삭제 가능.
  • 지속 실행이 필요한 경우 DeploymentStatefulSet 사용.

쿠버네티스에서 파드는 컨테이너를 실행하는 핵심 개념입니다. 이를 이해하고 활용하면, 효율적인 컨테이너 기반 애플리케이션을 구축할 수 있습니다. 🚀