Pods
December 5, 2025
Pod란?
- Kubernetes는 컨테이너를 워커 노드에 직접 배포하지 않는다.
- Kubernetes에서 컨테이너는
Pod라는 Kubernetes 객체로 캡슐화된다. Pod는 쿠버네티스에서 생성할 수 있는 가장 작은 객체이다.Pod는 애플리케이션의 단일 인스턴스이다.
Pod와 컨테이너
- 일반적으로 컨테이너와
Pod는 1대1 관계이지만,Pod에 반드시 컨테이너가 하나만 존재해야하는 것은 아니다.- 예시: 주 컨테이너는 애플리케이션 실행, 보조 컨테이너가 로그 수집. 이 2가지 컨테이너가 하나의
Pod를 구성하는 경우
- 예시: 주 컨테이너는 애플리케이션 실행, 보조 컨테이너가 로그 수집. 이 2가지 컨테이너가 하나의
- 하지만, 대부분의 경우
Pod와 컨테이너는 1대1 관계로 사용하며, 위와같은 경우에도 따로 분리하는 경우가 대부분이다. 이에 1대1 관계라고 보아도 무방하다.
애플리케이션의 트래픽이 증가할 경우, 우선
Pod를 추가하여 여러 Pod에 로드밸런싱한다. 이후 트래픽이 더 증가하여 해당 노드에서 감당하기 힘든 상황이 되었을 경우 노드를 추가하며 Pod들이 여러 노드에 분산되어 배치된다.cf) 이 때, Service가 Deployment가 관리하는 여러개의 Pod로 트래픽을 분산하는 것은 L4 로드밸런싱이다.
명령어 예시
kubectl run nginx --image nginx
NginxPod를 생성하고 배포하는 명령어
kubectl get pods
Pod목록을 얻는 명령어
kubectl describe pod <pod-name>
Pod에 대한 자세한 정보를 보는 명령어
YAML
# pod-definition.yml
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
apiVersion(String): 객체를 생성하는데 사용하는 Kubernetes API 버전Pod-v1/Service-v1/ReplicaSet-apps/v1/Deployment-apps/v1등
kind(String): 생성하려는 객체의 유형metadata(Dictionary): 이름, 라벨과 같은 개체를 나타내는 데이터- 와야하는 값들이 정해진
Dictionary형태 name(String): 이름을 나타내는 문자열label(Dictionary):- 원하는대로 key와 value를 가질 수 있다. (필요에 따라 key, value 추가 가능)
- 예를 들어, 수백개의 프론트엔드, 백엔드 pod가 있다고 했을 때,
label에type를 지정해두면 필터링하기 편하다.
- 원하는 값들을 넣을 수 있는 영역은
metadata뿐이다.
- 와야하는 값들이 정해진
spec(Dictionary): 객체와 관련된 추가 정보들- 객체마다 이 하위 항목은 다를 수 있으므로 해당 객체의 documentation을 참조해서 작성해야한다.
containers(List/Array):- List/Array인 이유는 Pod가 여러 컨테이너를 가질 수 있기 때문이다.
-는 List/Array 항목을 나타내며, Dictionary 타입이다.name(String): 컨테이너의 이름image(String): 이미지의 이름 (위의 경우 Docker Hub에 있는 이미지의 이름을 뜻함)- Docker Hub에 있는 이미지가 아닐 경우 전체 경로를 모두 작성해야함
kubectl create -f pod-definition.yml
- 위 명령어로 작성한 yaml에 맞는
Pod를 생성한다. kubectl apply -f pod-definition.yml도 정확히 똑같이 동작한다.
Yaml에서 Indentation 의 경우 2칸을 띄우던, 4칸을 띄우던 더 많은 칸을 띄우던 상관없지만, 같은 계층의 요소들이 띄워쓰기 갯수가 다르면 안된다.
일반적로는 공백 2칸을 사용하며 이를 추천한다.
레퍼런스
- https://kubernetes.io/docs/concepts/workloads/pods/pod/
- https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/
- https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)