Kubernetes(k8s) 에 대해서

민콕이·2026년 3월 4일
post-thumbnail

Kubernetes 란?

쿠버네티스(Kubernetes, 줄여서 K8s)는 수많은 컨테이너화된 애플리케이션을 자동으로 배포, 확장 및 관리해주는 오픈소스 오케스트레이션 플랫폼입니다.

k8s 라는 표기는 "K"와 "s"와 그 사이에 있는 8글자를 나타내는 약식 표기이다



쿠버네티스가 필요한 이유

과거에는 서버 한 대에 하나의 운영체제를 설치하고 앱을 실행했지만, 현대의 서비스는 수십, 수백개의 작은 서비스로 쪼개져 컨테이너 형태로 돌아갑니다. 사람이 일일이 이 컨테이너들을 관리하는 것은 불가능에 가깝기 때문에 쿠버네티스가 다음과 같은 일을 대신 해줍니다.

컨테이너란 애플리케이션과 그 실행에 필요한 모든 환경(라이브러리, 설정 등)을 하나로 묶어 독립적으로 실행하는 기술

  • 자동 복구(Self-healing): 컨테이너가 다운되면 즉시 감지하여 다시 살려냅니다.
  • 자동 확장(Auto-Scaling): 사용자가 몰리면 컨테이너 수를 늘리고, 한산해지면 다시 줄여 비용을 절감합니다.
  • 로드 밸런싱: 트래픽이 몰리지 않도록 여러 컨테이너에 골고루 나누어 줍니다.
  • 무중단 배포: 서비스를 멈추지 않고도 새로운 버전으로 업데이트할 수 있습니다.


Kubernetes vs Docker 차이점

핵심적인 차이는 "단일 컨테이너를 만드느냐(Docker)""수많은 컨테이너를 관리하느냐(Kubernetes)"의 차이

역할의 차이

  • 도커 (Docker): 컨테이너 기술의 표준입니다. 애플리케이션을 실행하는 데 필요한 모든 것을 하나로 묶어 컨테이너 이미지를 만들고 실행하는 것에 집중합니다.

  • 쿠버네티스 (Kubernetes): 도커로 만든 컨테이너들을 여러 대의 서버(클러스터)에 걸쳐 효율적으로 운영하는 도구입니다. 컨테이너가 꺼지면 다시 살리고, 트래픽이 몰리면 개수를 늘리는 등의 관리를 자동화합니다.



클러스터의 기본 구조

쿠버네티스 클러스터는 컨트롤 플레인과 하나 이상의 워커 노드로 구성된다
사용자가 앱을 배포하면, 클러스터는 마치 하나의 거대한 가상 컴퓨터처럼 작동하여 내부적으로 어떤 노드가 여유로운지 계산하고 적절한 곳에 앱을 띄워줍니다.


클러스터의 핵심 구성 요소

  • 마스터 노드 (Control Plane): 클러스터의 '뇌'입니다. 전체적인 상태를 관리하고 명령을 내립니다.
    (예: master00)

    • API Server
      쿠버네티스 시스템의 중심 창구로, 모든 내부 및 외부 요청을 처리하는 REST API를 노출
    • etcd
      클러스터의 모든 상태 정보(설정, 포드 상태, 노드 정보 등)를 저장하는 고가용성 키-값(Key-Value) 저장소
    • Scheduler
      생성되었지만 아직 특정 노드에 배치되지 않은 파드를 감지하여 최적의 노드를 결정
    • Controller Manager
      클러스터 내의 다양한 상태를 모니터링하고 원하는 상태로 유지하기 위해 지속적으로 루프를 실행하는 프로세스
    • Cloud Controller Manager (선택 사항)
      쿠버네티스 클러스터를 특정 클라우드 제공업체(AWS, Azure, GCP 등)의 API와 연결
  • 워커 노드 (Worker Nodes): 실제 '몸통'입니다. 컨테이너(앱)가 실제로 돌아가는 물리 서버 또는 가상 머신들입니다.
    (예: worker00, worker01, ...)

    • Kubelet
      각 노드에서 실행되는 기본 에이전트로, 파드(Pod)와 컨테이너의 생명 주기를 관리
    • Kube-proxy (선택 사항)
      노드 내부의 네트워크 규칙을 관리하여 쿠버네티스 서비스 개념을 구현
    • Container Runtime
      실제로 컨테이너를 실행하고 관리하는 핵심 소프트웨어


Resource

profile
정리 블로그

0개의 댓글