쿠버네티스 포드(Pod)란 무엇인가
쿠버네티스(Kubernetes)를 본격적으로 사용하기 전, 가장 기본적인 개념인 포드(Pod)부터 이해해봅니다.
포드는 쿠버네티스에서 가장 작고 기본적인 배포 유닛으로, 하나 또는 그 이상의 컨테이너를 감싸는 추상화된 단위입니다.

포드는 왜 중요한가?
- 마이크로서비스 아키텍처에서는 여러 개의 컨테이너를 배포해야 합니다.
- 도커(Docker)만 사용한다면 각각의 컨테이너를 수동으로 관리해야 하는데, 이는 매우 번거로운 작업입니다.
- 쿠버네티스는 이러한 컨테이너를 효율적으로 배포하고 관리할 수 있도록 '포드'라는 개념을 도입했습니다.
포드의 구성

공식 문서에 따르면, 포드는 다음과 같은 구성 요소를 가집니다:
- 하나 이상의 컨테이너 (주로 도커 기반)
- 공유 스토리지 및 네트워크
- 실행 방법이 정의된 메타데이터
왜 하나의 포드에 여러 컨테이너를 넣을까?
대부분의 경우 포드에는 하나의 컨테이너만 존재합니다. 하지만, 다음과 같은 경우 보조 컨테이너(Sidecar)를 함께 넣기도 합니다:
- 로그 수집 컨테이너
- 보안, 인증을 담당하는 프록시 컨테이너
- 예: 웹 서버 + 로그 가공기
그러나 일반적인 실습 환경이나 학습에서는 대부분 포드당 하나의 컨테이너만 사용합니다.
포드는 컨테이너의 '포장지'다

- 포드는 컨테이너를 감싸는 일종의 포장지라고 이해하면 쉽습니다.
- 쿠버네티스에서는 포드를 기준으로 자원(CPU, 메모리, 네트워크)을 할당하고, 이를 모니터링합니다.
실습: 첫 번째 포드 정의하기
아래는 YAML 형식으로 작성된 포드 정의입니다:
apiVersion: v1
kind: Pod
metadata:
name: webapp
spec:
containers:
- name: webapp
image: richardchesterwood/k8s-fleetman-webapp-angular:release0-arm64
- apiVersion: 사용된 쿠버네티스 API의 버전입니다.
- kind: 객체의 종류를 나타냅니다. 여기선 Pod.
- metadata.name: 포드의 이름입니다.
- spec.containers: 포드에 들어갈 컨테이너의 리스트입니다.
- image: 사용할 도커 이미지입니다.

포드 생성 및 적용
kubectl apply -f first-pod.yaml
적용 후, 상태 확인은 아래 명령어로 확인합니다:
kubectl get all

포드 상태 상세 확인
kubectl describe pod webapp
특히 Events 섹션에서 컨테이너의 생성 상태, 오류 여부 등을 확인할 수 있습니다.
포드 내부에 접속하기
kubectl exec -it webapp sh
이 명령어는 포드 내부 쉘에 접속합니다.
wget <http://localhost:80>
cat index.html
웹 서버가 잘 실행되고 있는지 확인할 수 있습니다.

포드는 외부에서 직접 접근할 수 없다
- 클러스터 외부에서 포드에 직접 접근하려고 하면 접속할 수 없습니다.
- 브라우저로 minikube ip 주소를 입력해도 포드에는 연결되지 않습니다.
- 이를 해결하려면 Service 개념을 배워야 합니다 (다음 포스트에서 다룸).

요약
- 포드는 컨테이너를 쿠버네티스에서 관리 가능하도록 추상화한 최소 단위입니다.
- 대부분 포드 하나에 컨테이너 하나를 할당합니다.
- 포드는 클러스터 내부에서만 접근 가능합니다.
- 외부 접근이 필요하면 Service를 통해 연결해야 합니다.
다음 포스트에서는 Service 구성 요소를 다루며, 포드를 외부와 연결하는 방법을 배워보겠습니다.
반응형
'Server > 🚢 Kubernetes' 카테고리의 다른 글
[minikube] 쿠버네티스 서비스(Service) 구조와 실행 (0) | 2025.04.08 |
---|---|
[minikube] Kubernetes 실습을 위한 Minikube 설치 가이드 (Mac / Windows / Linux) (0) | 2025.04.08 |
댓글