본문 바로가기

Kubernetes

쿠버네티스 개념 및 용어 정리

쿠버네티스란?

쿠버네티스는 컨테이너 기반 MSA 환경에서 복잡한 운영을 자동화하고 표준화하기 위해 사용되는 오케스트레이션 플랫폼입니다.

이게 아직은 무슨 소린지 감이 안 잡힙니다.


쿠버네티스 도입 배경 알기 전에 MSA에 대하여 간략하게 알아봐야 합니다.

MSA : Micro Service Architecture의 약자로 기존 서버의 기능을 역할 별로 쪼개어 결합도를 낮추어 배포하는 방식

ex) 쿠팡 백엔드 서버(서비스)를 -> 결제 서버, 장바구니 서버, 회원 서버, 판매 서비스 등 쪼개버리는 것

 

MSA의 장점은 기존에는 서버에 문제가 생기면 모든 기능이 마비가 되었는데 서버를 역할별로 잘게 쪼개어 하나의 서버에서 문제가 생겨도 나머지 기능에 영향이 가지 않도록 하기 위함입니다.

 

개발적인 측면이나 안정성 측면에서는 장점이 많은데, 이제 인프라 단에서의 복잡도는 하나의 서버만 잘 배포하고 관리하면 되던 것을 서비스 별로 서버 관리를 따로따로 진행해야 되는 골치가 생겼습니다.

 

각각의 기능 별로 나누어지는 서버 분류만 수십-수백 가지가 되고 이 각 기능별 서비스 복제본 또한 수십-수백 대에 걸쳐 배포가 되어있다 생각하면 이 수많은 서비스를 배포하고 업데이트하고 장애가 발생하였을 때 일일이 대응하는 것이 거의 불가능해집니다.

ex) 결제 서비스(컨테이너) x 100대, 장바구니 서비스 (컨테이너) x 20대, 판매 서비스 (컨테이너) x 100개

일일이 배포 장애대응 업데이트 확장 하려 하면 G.G입니다.


이 문제를 해결하기 위해 도입된 것이 바로 구글의 쿠버네티스입니다.

쿠버네티스를 사용하면 서비스가 몇 개든, 인스턴스가 수십 개든 수백 개든 단지 “원하는 상태”만 선언해 두면 된다. 그러면 쿠버네티스가 그 선언에 맞춰 배포, 업데이트, 환경 구성, 확장, 장애 복구, 네트워크 엔드포인트 통합까지 자동으로 수행하여 여러 서비스를 중앙에서 안정적이고 일관되게 관리할 수 있게 해 줍니다.

오케스트라에서 지휘자 한 명이 모든 악기를 조율하듯, 여러 컨테이너와 서비스를 중앙에서 자동으로 조율·관리하기 때문에 이를 오케스트레이션이라 부르는 것입니다.


쿠버네티스 주요 개념

클러스터

쿠버네티스에서 모든 워크로드는 클러스터(Cluster)라는 환경에서 실행된다. 클러스터는 여러 대의 서버(노드)로 구성되며, 쿠버네티스의 모든 컴포넌트(Pod, Deployment, Service 등)가 이 안에서 동작합니다.

  • 컨트롤 플레인 노드 : 전체 상태 관리, 스케줄링, 자동화 로직 수행
  • 워커 노드 : 실제로 컨테이너(Pod)가 실행되는 공간

아래에서 설명하는 Pod, Deployment, Service는 모두 이 클러스터 안에서 유기적으로 동작하는 구성 요소들입니다.


Pod (파드)

  • 쿠버네티스 클러스터 내에서 실행되는 가장 작고 기본적인 배포 단위입니다.
  • Pod 내에는 하나 이상의 컨테이너가 실행됩니다.
    • 가장 일반적인 경우는 Pod당 하나의 컨테이너만 돌아가는 형태입니다.
    • 다중 컨테이너 방식은 Sidecar 패턴이라 부르고 주로 로깅/모니터링 등을 위해 보조 컨테이너를 하나 더 띄웁니다.
  • Pod 내 컨테이너들은 동일한 IP와 네트워크 공간을 공유하며 포트 번호로 구분됩니다.

Deployment (디플로이먼트)

  • Pod들을 관리하는 상위 요소로, 원하는 상태를 선언적(yaml 파일)으로 관리합니다.
  • 필요한 개수만큼 Pod를 항상 유지합니다.
    • 마스터 노드와 연결된 여러 노드에 지정된 개수만큼 알아서 Pod를 잘 분배하여 배포합니다.
    • Pod의 문제가 발생하여 동작을 멈추면 해당 Pod를 다시 재실행시킵니다.
  • 롤링 업데이트/블루-그린 등 안정적인 배포 전략을 제공합니다.
  • 문제 발생 시 빠른 롤백이 가능합니다.
  • 즉, Pod의 고가용성과 지속적인 버전 관리를 담당하는 핵심 컨트롤러입니다.

Service (서비스)

Deployment는 Pod의 수를 유지하고 업데이트하는 역할이고, Pod는 생성/삭제될 때마다 IP가 변경됩니다.

그래서 외부나 다른 리소스가 Pod에 접근할 때 '고정된 주소'가 필요합니다.

이러한 문제를 해결하기 위해 Service는 다음 기능을 제공합니다.

  • 변하지 않는 단일 접근 IP(ClusterIP) 제공합니다.
  • Pod가 죽거나 새로 생성되어도 자동으로 새로운 Pod로 트래픽 전달합니다.
  • 부하 분산 기능을 제공하며, label selector로 트래픽을 보낼 Pod를 자동으로 찾습니다.
  • 노출 방식(Type)에 따라 접근 방법이 달라집니다.
    • ClusterIP : 쿠버네티스 내부에서만 접근 가능한 ‘고정 IP’를 제공하는 Service 타입
    • NodePort : 노드 포트를 외부에 노출
    • LoadBalancer : 클라우드 로드밸런서를 통한 외부 트래픽 분산
  • 즉, 애플리케이션의 접속 창구 역할을 하며 Pod의 변동성으로부터 접근 안정성을 보장합니다.

'Kubernetes' 카테고리의 다른 글

쿠버네티스 네트워크  (0) 2025.12.12
쿠버네티스 볼륨  (0) 2025.12.10
쿠버네티스 아키텍처  (0) 2025.12.09
쿠버네티스 명령어 정리 (kubectl) 및 yaml  (0) 2025.12.08
쿠버네티스 VMware 실습 환경 세팅  (0) 2025.12.05