CKA

(TIL) Kubernetes의 Pod

심플코더 2025. 3. 13. 09:29

Pod란

Pod는 Kubernetes에서 배포 가능한 가장 작은 단위이다.
Pod는 하나 이상의 컨테이너를 포함하며, 일반적으로는 Pod 하나당 하나의 컨테이너가 존재한다.

Pod의 기본 구조

Pod는 다음과 같은 요소들로 구성되어있다.

  • Container
  • Volumes
  • Networking

Pod를 사용하는 이유

왜 굳이 컨테이너를 단독으로 실행하지 않고 Pod로 한번 감싼 후 동작하는 방식으로 되어있는지 의아할 수 있다.
각 방식이 가지는 차이점은 다음과 같다.

Docker Standalone Pod
개별 컨테이너를 직접 실행 Pod를 통해 컨테이너를 실행
컨테이너 간 네트워크 설정 필요 Pod 내부 컨테이너는 자동으로 연결
컨테이너의 상태를 직접 관리해야함 Kubernetes가 Pod의 상태를 자동으로 관리

즉, Pod를 사용하면 Kubernetes를 통해 컨테이너의 상태를 더 쉽게 관리할 수 있다.

Pod의 동작 방식

하나의 컨테이너만 포함하는 Pod의 경우 아래와 같은 yaml 파일로 정의할 수 있다.

apiVersion: v1
kind: Pod
metadata:
  name: my-webapp
spec:
  containers:
    - name: webapp
      image: my-webapp:latest

상황에 따라 하나의 Pod에서 여러 컨테이너를 실행할 수도 있으며, 해당 상황에선 아래와 같은 yaml 파일로 정의할 수 있다.

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
    - name: webapp
      image: my-webapp
    - name: helper
      image: helper-container

Pod 생성 및 관리

Kubernetes에서 Pod를 생성하려면 kubectl run 명령어를 사용한다.

kubectl run my-nginx --image=nginx

위 명령어를 nginx 컨테이너를 실행하는 Pod를 생성한다.

이후 Pod이 정상적으로 생성되었는지 확인하려면 다음과 같은 명령어를 사용한다.

kubectl get pods

Pod의 내부 정보를 확인하기위해서는 아래와 같은 명령어를 사용한다.

kubectl describe pod

위 명령어를 사용하면 컨테이너 이미지, 네트워크 IP주소, 상태, 이벤트 등의 정보를 확인할 수 있다.

Pod을 삭제하려면 다음과 같은 명령어를 실행하면된다.

kubectl delete pod my-nginx