쿠버네티스
- 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링하기 위한 관리 시스템이다.
- 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임워크를 제공한다:
- 가령 한 컨테이너가 다운되면 다른 컨테이너를 올려야 하는데, 이를 쿠버네티스가 자동으로 처리해준다.
- 서비스 로드밸런싱, 스토리지 오케스트레이션, 롤아웃 및 롤백 자동화, 복구 자동화 등을 제공한다.
- 구글이 사내에서 사용하던 Borg를 오픈소스화한 것이 쿠버네티스이다.
배경
- 전통적인 배포 시대: 여러 애플리케이션을 하나의 물리 서버 위에서 실행한다. 한 애플리케이션이 리소스를 전부 차지하면 다른 애플리케이션의 성능이 저하되는 문제가 있다.
- 가상화된 배포 시대: 하나의 물리 서버에 여러 가상머신(VM)을 실행하고, 그 위에 애플리케이션을 실행한다. 각 VM은 가상화된 하드웨어 상에서 자체 운영체제를 실행하는 하나의 완전한 머신이다.
- 컨테이너 배포 시대: 컨테이너는 VM과 비슷하지만 격리 속성을 완화해 애플리케이션간 OS를 공유한다. 컨테이너는 VM보다 가벼우며, 더욱 빠르게 생성/배포할 수 있다.
아키텍처
- 클러스터(Cluster): 컨테이너화된 애플리케이션을 실행하기 위한 노드의 집합.
- 노드(Node): 쿠버네티스 클러스터에 존재하는 개별 머신. 주로 IDC의 물리 머신이나 클라우드의 가상 머신이다.
- 파드(Pod):
- 쿠버네티스는 컨테이너를 직접 실행하는 대신 파드라는 추상화 단위로 실행한다.
- 파드는 노드 안에서 실행되며, 컨테이너는 파드 안에서 실행된다. 애플리케이션은 컨테이너 안에서 실행된다.
이 문서를 인용한 문서
- 소프트웨어 공학
- 『Large-scale cluster management at Google with Borg』
- 『플랫폼 엔지니어링』
-
쿠버네티스의 부상은 클라우드 서비스가 조직의 요구를 충족시키지 못했다는 증거다.
-