Pod

Pod는 쿠버네티스가 컨테이너를 실행하고 관리하기 위해 만든 논리적 단위이다.

  • 보통 하나의 Pod에는 컨테이너가 한 개 들어가지만,
    함께 동작해야 하는 컨테이너라면 여러 개를 하나의 Pod로 묶을 수도 있다.
  • Pod 내부의 컨테이너들은 같은 네트워크(IP, 포트 공간)를 공유하며,
    필요에 따라 볼륨을 통해 데이터를 교환한다.
  • Pod 단위로 상태 점검 또는 자동 복구 정책을 적용할 수 있다.

즉, Pod는 단순히 컨테이너를 모아놓은 묶음이 아니라
애플리케이션이 실행되기 위한 최소한의 환경이라고 볼 수 있다.


Node

Node는 Pod가 실제로 실행되는 서버를 의미한다.
물리 서버일 수도 있고, 클라우드상의 가상 머신일 수도 있다.

  • 하나의 Node에는 여러 Pod가 동시에 배포될 수 있다.
  • Node는 Control Plane에서 내려오는 명령에 따라 Pod를 생성하거나 삭제하며 클러스터의 일부로 동작한다.

Node의 주요 구성요소

구성요소역할
kubeletNode에서 Pod를 실행하고 상태를 Control Plane에 보고
Container Runtime컨테이너를 실제로 띄우는 프로그램 (containerd, CRI-O 등)
kube-proxy네트워크 트래픽을 올바른 Pod로 전달하고 연결 경로를 관리

이 세 가지가 함께 동작해야 Node가 정상적으로 Pod를 실행할 수 있다


Control Plane과 Node의 관계

쿠버네티스는 크게 두 영역으로 나뉜다.

구분설명
Control Plane클러스터의 전체 상태를 제어하고, 새로운 Pod를 어디에 배치할지 결정하는 영역
Data Plane(Node)애플리케이션이 실제로 실행되는 영역으로, Pod가 이곳에서 동작한다

조금 더 쉽게 접근해보면

Control Plane - 두뇌 , Data Plane - 두뇌의 명령을 실행하는 구현체


Pod와 Node의 상호작용

  • 사용자가 kubectl 명령이나 API를 통해 Pod를 생성하면,
    Control Plane의 스케줄러가 어떤 Node에 배치할지 결정한다.
  • 이후 kubelet이 해당 Node에서 Pod를 띄우고, 런타임이 컨테이너를 실행한다.
  • 이런 구조 덕분에 쿠버네티스는 여러 서버(Node)에 걸쳐 애플리케이션을 유연하게 관리할 수 있다.

업로드중..

이 상위 리소스들은 다음 기능을 제공한다.

  • Pod의 자동 생성과 삭제
  • 장애 발생 시 재생성
  • 여러 인스턴스 복제와 확장
  • 무중단 배포(rolling update)

즉, 사용자는 Pod 자체를 직접 다루기보다, Pod를 대신 관리해주는

리소스를 통해 안정적인 운영을 하게 된다.

0개의 댓글