쿠버네티스가 왜 필요한가?

수 많은 마이크로서비스를 어떤 서버에 어떻게 배포할 것인가?

도커를 이용한 애플리케이션 배포 과정을 보면 다음과 같다

  1. 개발서버에서 이미지 빌드
  2. 빌드된 이미지 도커 이미지 레지스트에 푸시
  3. 이미지를 운영서버에 풀
  4. 도커 런으로 실행

배포해야 할 마이크로서비스가 수백 개인 경우 일련의 과정을 모두 사람이 처리하기는 어렵고 여러 서버에 효율적으로 배치하는 것도 어렵다. 또한 네트워크, 인프라, 리소스관리등 또한 고려해야 한다. 마이크로서비스별 리소스 사용량 예측과 그 경우의 조합수에 따른 리소스 분배는 매우 어렵다.

이런 고민들을 쿠버네티스로 해결할 수 있다.

쿠버네티스의 출현까지

구글에서 컨테이너 관리 기술을 내부에서 사용사용하기 위해 Borg와 거기에 발전시킨 Omega를 기반으로 구글 퍼블릭 클라우드 인프라 사업의 성장을 위해 설계하고 개발하게 되었다. 주 목표로는 컨테이너로 향상된 리소스 활용의 이점을 누리면서 복잡한 분산 시스템을 쉽게 배포하고 관리할 수 있게 만드는 것이다.

쿠버네티스는 더 높은 수준의 추상화를 위해 REST API를 통해서만 접근할 수 있기 때문에 제어하기 위해서는 앞단에 놓여있는 API를 이용해야 한다.

쿠버네티스 클러스터 정의

클러스터란 여러 개의 서버를 하나로 묶는 집합 또는 하나의 서버처럼 동작하는 형태를 의미하며, 쿠버네티스 클러스터는 애플리케이션 컨테이너를 배포하기 위한 서버의 집합정도로 이해할 수 있다. 즉 쿠버네티스가 관리하기 쉽게 각 컨테이너 서버를 하나의 집합으로 묶는 것을 의미하는 것이다.

쿠버네티스 클러스터 구조