구글과 쿠버네티스 – 구글은 왜 오픈소스로 공개했을까?
쿠버네티스는 구글이 개발하고 오픈소스로 공개한 컨테이너 오케스트레이션 도구 입니다.
구글이 어떤 과정을 통하여 쿠버네티스를 만들었고, 내부적으로 컨테이너 기술을 어떻게 사용하고 있는 지에 대해서 설명하겠습니다.
유튜브 동영상 보기
구글에서 오픈소스 공개한 쿠버네티스 발표자료 다운로드
발표 슬라이드의 내용을 각각 살펴 보겠습니다.
Google과 컨테이너
Gmail에서 YouTube, 검색에 이르기까지 Google의 모든 제품은 컨테이너에서 실행됩니다.
개발팀은 컨테이너화를 통해 더욱 신속하게 움직이고, 효율적으로 소프트웨어를 배포하며 전례 없는 수준의 확장성을 확보할 수 있게 되었습니다.
구글은 매주 수십억 개가 넘는 컨테이너를 생성합니다.
지난 10여 년간 프로덕션 환경에서 컨테이너화된 워크로드를 실행하는 방법에 관해 많은 경험을 쌓으면서 Google은 커뮤니티에 계속 이 지식을 공유해 왔습니다.
초창기에 cgroup 기능을 Linux 커널에 제공한 것부터 내부 도구의 설계 소스를 Kubernetes 프로젝트로 공개한 것까지 공유의 사례는 다양합니다.
그리고 이 전문 지식을 Google Cloud Platform으로 구현하여 개발자와 크고 작은 규모의 회사가 최신의 컨테이너 혁신 기술을 쉽게 활용할 수 있도록 하였습니다.
구글의 컨테이너 역사
Google 에서 개발한 최초의 통합 컨테이너 관리시스템 – Borg
Google에서 개발한 최초의 통합 컨테이너 관리 시스템은 Borg 라는 이름의 시스템이었습니다.
Borg는 리소스 활용도를 높이고 비용을 절감하는 방법으로 서로 다른 애플리케이션간에 시스템을 공유합니다.
이러한 공유는 Linux 커널에서 컨테이너을 이용하여 지연 시간에 민감한 사용자 서비스와 CPU를 많이 사용하는 일괄 처리 사이의 분리를 통해 자원 효율성을 향상 시켰기 때문에 가능했습니다.
공유 상태 방식을 자원 할당 스케줄링 – OMEGA
Google 은 Borg 다음으로 공유 상태 모델에 의한 스케줄링 우선 순위를 가진 선점과 경쟁을 통한 스케줄링을 가능하게 합니다.
공유 상태 모델의 주요 목적이 Scalability보다는 오히려 소프트웨어 개발의 유연성에 두고 있습니다.
자원할당을 위한 스케쥴링 방식 비교 – Monolithic, Two-level, Shared-state
Monolithic 방식은 클러스터 내에 단일 스케줄러가 존재하며 복수개의 프레임워크에 대한 스케줄링을 지원한다. 이 경우 스케줄러 내에서 각 프레임워크에 특화된 스케줄링 로직 때문에 지원할 수 있는 프레임워크를 추가하기 어렵다.
또한 단일 스케줄러라는 특징 때문에 대기중인 다른 작업들이 한 작업의 스케줄링 시간 동안 지연되느 Head-Of-Line Blocking 문제가 있다.
반면 Two-Level 방식은 전체 클러스터 내에서 동작하는 다수의 스케줄러를 배치하고 이들을 조정하는 단일 중앙 조정자 (Central Coordinator)를 둔다. 그러나 이경우에는 단일한 중앙 조정자가 스케줄링의 병목 지점이 되는 문제가 존재한다.
공유 상태 (Shared-State) 방식은 각 클러스터의 스케줄러에서 클러스터 전테 상태의 동기화가 이루어진다. 이 특징으로 인해 클러스터의 크기와 스케줄러 수에 비례하여 각 스케줄러에 동기화로 가해지는 부하와 지연이 증가하는 문제가 있다.
Allocation Module 병렬화를 통한 Mesos 스케줄러이 확장성 과 성능 향상 기법 – 한호돌, 오상윤
Google은 모두 컨테이너에서 실행
지메일, 유튜브 , 구글 검색 그리고 지도 서비스 까지 구글의 모든 제품은 컨테이너에서 실행됩니다.
구글은 매주 수 십억 개가 넘는 컨테이너를 생성하고, 운영 중에 있습니다.
쿠버네티스 소개
Google 에서 만든 오픈소스 클라우드 플랫폼 – 쿠버네티스
Kubernetes ( 쿠버네티스 ) 는 컨테이너화된 애플리케이션(Containerized Application)의 배포, 확장 그리고 관리를 할 수 있는 오픈 소스 컨테이너 오케스트레이션 시스템입니다.
구글에서 개발한 언어인 고로 작성되었으며 Apache 2.0 라이선스입니다 구글은 리눅스 재단 산하의 cncf 재단의 쿠버네티스를 기증하였습니다.
쿠버네티스는 구글 엔지니어들이 개발하고 설계한 플랫폼으로서 수 년 전부터 내부에서 이용하던 컨테이너 클러스터 관리 도구인 “Borg” 와 ” Omega” 의 아이디어를 바탕으로 만들어진 오픈소스 소프트웨어입니다.
쿠버네티스는 2014 년 6 월에 시작하여 2015 년 7 월에 버전 1.0을 발표하였고, 현재에는 구글, 아마존, 애저 등 주요 클라우드 벤더와 Red Hat, IBM , Oracle 과 같은 소프트웨어 벤더 들이 각자의 브랜드로 Kubernetes 배포판을 제공하고 있습니다.
쿠버네티스 는
쿠버네티스 는 깃허브에 커뮤니티가 있습니다 cncf 즉 클라우드 네이티브 컴퓨팅 재단에서 관리되는 오픈소스 프로젝트입니다.
cni 표준을 통해 네트웍 인터페이스에 대한 표준화를 진행 중이며 cri를 통해 컨테이너 런타임 표준을 정하고 있습니다
References & Related Links
- 컨테이너기술의 장점 – http://www.opennaru.com/openshift/container/benefits-of-container/
- 컨테이너기술과 가상화 기술 비교 – http://www.opennaru.com/cloud/virtualization-vs-container/
- 물리서버 , 가상화 , 컨테이너기술 진화의 역사 – http://www.opennaru.com/cloud/physical-server-virtualization-container/
쿠버네티스 : 마이크로서비스 아키텍처 구현 데모
/in Kubernetes, Microservices Architecture, OpenShift, 분류되지 않음/by 실장 님클라우드 여정 의미와 가치
/in Cloud, Kubernetes, OpenShift, 분류되지 않음/by 실장 님쿠버네티스 1.2 부터 도커 사용 중단
/in Kubernetes, OpenShift, 분류되지 않음/by 실장 님