Overview

숭맹이·2025년 4월 22일
0

Kubernetes 개요

Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 플랫폼입니다. 2014년 Google이 오픈소스로 공개했으며, 이름은 그리스어로 "조타수(helmsman)"를 의미합니다.

  • 확장성: 수천 개의 컨테이너를 관리할 수 있는 구조
  • 이식성: 온프레미스, 퍼블릭 클라우드, 하이브리드 환경 모두 지원
  • 커뮤니티 중심 발전: CNCF(Cloud Native Computing Foundation) 주도로 빠르게 발전

Kubernetes가 필요한 이유

컨테이너는 애플리케이션을 패키징하고 배포하는 훌륭한 방법이지만, 실제 운영 환경에서는 다음과 같은 문제가 발생합니다.

  • 장애 복구(컨테이너가 죽으면 자동 재기동)
  • 서비스 디스커버리 및 로드밸런싱
  • 무중단 배포 및 롤백
  • 리소스 최적화

Kubernetes는 이런 운영 이슈를 체계적으로 해결합니다. 복잡한 분산 시스템의 구축과 운영을 프레임워크 수준에서 지원하는 것이죠.

Kubernetes 주요 기능

1. 서비스 디스커버리와 로드밸런싱

  • Kubernetes는 DNS 이름 또는 자체 IP를 통해 Pod(컨테이너 집합)에 접근할 수 있게 합니다.
  • 트래픽이 많을 경우 로드밸런서를 통해 네트워크 부하를 분산합니다.

2. 스토리지 오케스트레이션

  • 로컬 스토리지, 퍼블릭 클라우드 스토리지(AWS EBS, GCP Persistent Disk 등)를 자동으로 마운트할 수 있습니다.

3. 자동화된 롤아웃 및 롤백

  • 선언적 방식(Declarative Approach)으로 원하는 상태를 정의하면, Kubernetes가 실제 상태를 점진적으로 맞춰갑니다.

4. 자동 리소스 배치 (Bin Packing)

  • 컨테이너별 CPU, 메모리 요청량을 기반으로 최적화된 노드에 컨테이너를 배치합니다.

5. 셀프 힐링(Self-Healing)

  • 실패한 컨테이너를 자동으로 재시작하거나 교체합니다.
  • 상태 확인이 실패한 컨테이너는 외부에 노출하지 않습니다.

6. 보안 및 설정 관리

  • 비밀번호, OAuth 토큰, SSH 키 등 민감한 정보를 안전하게 저장하고 배포할 수 있습니다.

7. 수평적 확장

  • 명령어, UI, 또는 CPU 사용량을 기반으로 Pod 수를 자동 확장하거나 축소합니다.

Kubernetes는 무엇이 아닌가

  • PaaS가 아님: 전체 개발 플랫폼을 제공하지 않고, 필요한 기능만 제공합니다.
  • CI/CD 툴이 아님: 소스코드 빌드 및 배포는 외부 시스템과 통합해야 합니다.
  • 어플리케이션 서비스 제공자가 아님: 데이터베이스, 캐시 같은 서비스는 직접 운영하거나 별도 배포해야 합니다.
  • 중앙집중식 오케스트레이터가 아님: 다양한 컨트롤러들이 비동기적으로 상태를 유지합니다.

Kubernetes의 역사적 배경

1. 전통적 서버 환경

  • 물리 서버 위에 여러 앱이 동작 → 리소스 경합 및 비효율 문제

2. 가상화 시대

  • VM 도입 → 자원 격리 및 효율 개선, 하지만 무겁고 느림

3. 컨테이너 시대

  • OS 공유 기반 경량화 → 빠른 배포, 높은 이식성, 리소스 최적화

컨테이너 기술의 급격한 발전은 복잡한 컨테이너 환경을 운영할 수 있는 관리 시스템(Kubernetes)의 등장을 자연스럽게 이끌었습니다.

profile
👨🏻‍💻 Backend Developer

0개의 댓글