Pod란, 쿠버네티스 개념과 구성요소

도람·2025년 10월 31일

Pod

쿠버네티스 개념을 공부할때마다 나오는 pod가 대체 무엇이기에 쿠버네티스관련 개념에 항상 나오는지, 쿠버네티스의 개념과 구성요소를 이해하기 전에 먼저 이 개념을 이해하도록 한다.


Pod란

  • 쿠버네티스에서 가장 작은 배포 단위는 컨테이너가 아니라 Pod다. Pod는 하나 이상의 컨테이너를 포함할 수 있다.
  • Pod의 콘텐츠는 항상 같은 위치에 배치되고 함께 스케줄링되며 공유된 컨텍스트에서 실행된다.
  • 상대적으로 밀접하게 결합된 하나 이상의 애플리케이션 컨테이너를 포함한다.

이것이 Pod의 개념이다. 그러니까 컨테이너를 감싸고 있는 것이 Pod이며 컨테이너 자체는 배포할 수 없고 반드시 Pod단위로 배포된다.
(단순히 컨테이너를 감싸는 껍데기가 아니라, 컨테이너들이 공유자원을 함께 쓰도록 하는 실행 환경 단위이다.)

Pod 안에 컨테이너들

  • 같은 Pod안에 컨테이너는 같은 IP주소, 같은 포트 네임스페이스를 공유한다.
  • 서로 localhost로 통신이 가능하다
  • 같은 Volume을 공유해서 파일도 같이 쓸 수 있다.
    -> 하나의 서버안에 아주 밀접하게 연결된 컨테이너 묶음이라는 의미.

또한 Pod가 해당 노드에서 실행될 수 있도록 클러스터의 각 노드에 컨테이너 런타임을 설치해야 한다.


Pod가 사용되는 주요 방법

  • 단일 컨테이너를 실행하는 Pod: 위에서 Pod는 하나 이상의 컨테이너를 포함할 수 있다고 했다. 단일 컨테이너를 실행하는 Pod같은 경우에는 "Pod당 컨테이너 1개" 모델이며, 가장 일반적인 쿠버네티스 사용 사례이다.
  • 함께 작동해야 하는 여러 컨테이너를 실행하는 Pod: Pod는 밀접하게 결합되어 여러개의 컨테이너로 구성된 애플리케이션을 캡슐화할 수 있다. 이렇게 배치된 컨테이너는 하나의 응집력 있는 단위를 형성한다.

여러 개의 공동 배치 및 공동 관리 컨테이너를 하나의 Pod로 그룹화 하는 것은 비교적 고급 사용 사례이며 일반적인 상황은 아니다. "컨테이너가 밀접하게 결합된 특정상황" 에서만 이 패턴을 사용한다.


Pod 사용 예시

pods/simple-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

이 Pod를 다음과 같은 명령어를 실행하여 생성할 수 있다.

kubectl apply -f https://k8s.io/examples/pods/simple-pod.yaml

쿠버네티스

위의 글에서 "쿠버네티스는 컨테이너를 직접 관리하는 대신 Pod를 관리한다."라는 글을 통해 Pod와 쿠버네티스의 관계를 알게 되었다.
또한 전에 쓴 게시물을 통해
쿠버네티스를 통해 컨테이너를 탄력적으로 운영할 수 있으며 무중단 배포가 및 카나리아 배포가 가능하게 한다는 것을 알게되었다.

이 쿠버네티스는 어떻게 구성되어 있을까.


쿠버네티스 구성요소

  • 쿠버네티스 클러스터는 제어영역(위에선 Control Plane)와 하나 이상의 Worker Node(이하 Node)로 구성된다.

제어영역 - (Control Plane, Master)

제어영역은 클러스터의 전반적인 상태를 관리한다.

  • kube-apiserver : kubernetes HTTP API를 노출하는 핵심 구성 요소 서버
  • etcd : 모든 API 서버 데이터에 대한 일관되고 가용성이 높은 키 값 저장소이다.
  • kube-scheduler : 아직 노드에 할당되지 않은 Pod를 찾아 적절한 노드에 할당한다.
  • kube-controller-manager: 컨트롤러를 실행하여 쿠버네티스 API 동작을 구현한다.

노드 (Worker Node)

모든 노드에서 실행되고, 실행중인 Pod를 유지 관리하며 kubernetes 런타임 환경을 제공한다.

  • Kubelet : Pod안에 있는 컨테이너가 실행중인지를 확인한다.
  • kube-proxy(선택 사항) : 노드에서 네트워크 규칙을 유지하여 서비스를 구현한다
  • 컨테이너 런타임 : 컨테이너 실행을 담당하는 소프트웨어이다.

참고자료
:[CNF-쿠버네티스 아키텍처 완벽 가이드 : 구조와 동작 원리 A to Z] https://www.cncf.co.kr/resource/kubernetes-architecture-guide/
:[쿠버네티스 공식 홈페이지 - kubernetes Components] https://kubernetes.io/docs/concepts/overview/components/
:[쿠버네티스 공식 홈페이지 - Pod]
https://kubernetes.io/docs/concepts/workloads/pods/

profile
정도를 걷는 엔지니어

0개의 댓글