Skip to Content
Infra & DevOpsK8s 핵심 개념 및 아키텍처 도입 배경
☁️ Infra & DevOps2019년 1월 10일

K8s 핵심 개념 및 아키텍처 도입 배경

#kubernetes#infra-devops#cloud-native#containers

Kubernetes Architecture

1. 거대 시스템 배포 자동화의 필요성

통합 모니터링 및 빅데이터 솔루션은 기존 베어메탈(Bare-metal)이나 VM(가상머신) 위에서 구동되었습니다. 그러나 마이크로서비스 아키텍처(MSA) 채택과 더불어 컴포넌트 단위가 쪼개지면서, 수십~수백 개의 Linux 컨테이너 인프라를 수동으로 조작하는 것은 불가능에 가까운 병목(Bottleneck)이 되었습니다. 팀 내부적으로 왜 Docker Swarm이나 다른 워크로드 대신 K8s를 핵심 표준으로 채택하는지에 대한 명확한 사상 및 기술적 백그라운드 공유가 필요하여 본 인트로케이션 문서가 작성되었습니다.

2. 오케스트레이션 아키텍처와 핵심 컴포넌트

Kubernetes(종종 K8s, k8s 또는 “kube”라 불림)는 Linux 컨테이너 작업을 자동화하는 오픈소스 플랫폼입니다. 이 플랫폼에서는 컨테이너화된 애플리케이션을 배포하고 스케일링(Scale-up/out)하는 데 더 이상 레거시한 수동 스크립트 기반 프로세스가 필요하지 않습니다.

  1. 클러스터링: 여러 대의 하드웨어 호스트(노드)를 하나로 묶어 거대한 컴퓨팅 풀(Pool)처럼 관리할 수 있습니다.
  2. 다양한 환경 지원: 클러스터는 온프레미스(사내 망 구축), 퍼블릭 클라우드(AWS EKS, GCP GKE), 프라이빗 또는 하이브리드 클라우드 전체로 호스트를 자유롭게 배포하고 확장할 수 있는 유연성을 제공합니다.

Kubernetes의 탄생 배경

Kubernetes는 원래 Google 엔지니어들이 대규모 프로덕션 환경을 제어하기 위해 개발하고 설계한 플랫폼입니다. 구글은 과거 일주일에 20억 개 이상의 컨테이너를 배포하는 사내 컴퓨팅 자원 통합 관리 시스템 Borg(보그)를 운용했습니다. Borg를 개발 및 운영하며 축적한 구글 엔지니어들의 10년 이상의 노하우가 K8s 기술의 주요 원동력(Design Principle)이 되었습니다. 이후 2015년 Google이 새롭게 설립된 클라우드 네이티브 컴퓨팅 재단(CNCF)에 이 아키텍처 프로젝트를 기부하면서 전 세계 인프라의 사실상 표준(De-facto Standard)이 되었습니다.

참고: Kubernetes 로고에 표시된 방향타의 7개 손잡이(Spoke)는 프로젝트의 원래 코드 네임이었던 “Project Seven of Nine (스타트렉 캐릭터)“을 의미합니다.

4. 도입 후기 및 전망

도입 초기에는 K8s의 방대한 초기 학습 곡선(Learning Curve) 때문에 이 정도의 오버엔지니어링이 정말 필요한지 논쟁이 있었으나, Pod의 오토힐링(Auto-healing)과 롤링 업데이트(Rolling Update) 기능을 프로덕션 클러스터에서 한 번 경험하고 나서는 결코 K8s 이전 시대로 되돌아갈 수 없게 되었습니다.

(본 문서의 기본 정의는 RedHat 컨테이너 아키텍처 개론 을 기반으로 스터디 및 정리되었습니다.)

Last updated on