쿠버네티스 아키텍처 - 오브젝트

Chori·2025년 11월 14일
post-thumbnail

초보를 위한 쿠버네티스 안내서를 수강하며 정리한 내용입니다.

Pod

  • 쿠버네티스에서 컨테이너를 관리하는 가장 작은 배포 단위
  • 쿠버네티스는 컨테이너를 직접 관리하지 않고 Pod로 감싸서 관리
  • 컨테이너를 배포하는 것이 아니라 Pod를 배포
  • Pod마다 IP 주소를 부여 받음, IP 주소를 통해서 내부적으로 통신할 수 있음
  • Pod 안에 컨테이너가 하나 이상 존재
  • Pod 안에 있는 컨테이너끼리 폴더를 공유할 수 있음
  • Pod 안에 있는 컨테이너끼리 포트를 localhost로 공유할 수 있음

ReplicaSet

  • 여러 개의 Pod를 관리
  • 새로운 Pod는 Template을 참고하여 생성

Deployment

  • 배포 버전 관리
  • 내부적으로 ReplicaSet을 이용
  • 무중단으로 배포 버전을 바꿀 때 기존의 ReplicaSet과 다른 새로운 ReplicaSet을 만듦

Service

ClusterIP

  • 클러스터 내부에서 사용하는 프록시, 외부에서는 접근 불가
  • Pod에 로드 밸런싱
  • Pod는 동적이지만 Service는 고유한 IP를 가짐
  • Pod가 사라지고 새로 생성되면서 Pod의 IP도 언제든 사라지고 바뀌게 됨, 요청을 Pod로 바로 보내지 않고 Service에 요청을 보내면 Pod에 전달됨
  • 클러스터 내부에서 Service 연결은 DNS를 이용

NodePort

  • Node에 노출되어 외부에서 접근 가능한 Service
  • Node에 포트가 생기고 이를 통해 접속하면 해당 요청이 ClusterIP를 거쳐 Pod로 전달됨
  • 모든 Node에 동일한 포트로 생성됨, 어느 노드로 요청을 보내도 알맞은 ClusterIP를 찾아 요청을 전달

LoadBalancer

  • 도메인이 연결된 특정 노드가 중단됐을 때를 대비하여 NodePort 앞에 LoadBalancer를 둠
  • LoadBalancer로 보낸 요청은 NodePort와 ClusterIP를 거쳐 Pod로 전달됨

Ingress

  • 도메인 또는 경로별 라우팅
  • 도메인 이름과 도메인 뒤에 붙는 경로에 따라서 내부에 있는 ClusterIP에 연결할 수 있음

일반적인 구성

  • Deployment를 생성하면 Deployment가 ReplicaSet을 자동으로 생성하고 ReplicaSet이 자동으로 Pod를 생성
  • 외부에 노출하기 위해 ClusterIP와 Ingress 생성, Ingress를 만들면 NodePort와 LoadBalancer가 자동으로 생성됨
  • 클라이언트는 도메인으로 접속하면 LoadBalancer, NodePort, ClusterIP를 거쳐서 Pod에 연결됨

그 외 기본 오브젝트

  • Volume: 스토리지
  • Namespace: 논리적인 리소스 구분
  • ConfigMap / Secret: 설정
  • ServiceAccount: 권한 계정
  • Role / ClusterRole: 권한 설정
profile
전부인 것처럼, 전부가 아닌 것처럼

0개의 댓글