쿠버네티스 공식 문서와 각 블로그들을 보고 쿠버네티스를 공부하는 내용입니다.
쿠버네티스(Kubernetes)란
Google에서 개발한 쿠버네티스(Kubernetes)는 오픈소스 컨테이너 오케스트레이션 플랫폼으로, 컨테이너화된 애플리케이션의 배포, 확장 및 괄리를 자동화하도록 설계되었다. 실제로 쿠버네티스는 컨테이너 오케스트레이션을 위한 표준으로 자리를 잡았으며, 퍼블릭 클라우드 플랫폼에서도 지원한다. (AWS EKS, GCP GKE, Azure AKS 등)
쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장 가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다.
인프라의 발전 역사
전통적인 배포 시대 : 초기 애플리케이션은 물리 서버에서 실행되었다. 물리 서버 하나에서 여러 애플리케이션을 실행하면, 애플리케이션마다 리소스를 차지하는 양이 달랐고 결과적으로 애플리케이션의 성능이 저하될 수 있다. 해결책으로는 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행시키는 것이다. 그러나 리소스가 충분히 활용되지 못할 수도 있고, 물리 서버를 많이 유지하기 위해서 많은 비용이 들었다.
가상화된 배포 시대 : 이에 해결책으로 가상화가 도입되었다. 가상화란 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM)을 실행할 수 있게 한다. 가상화를 사용하면 VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 할 수 없으므로, 일정 수준의 보안성이 제공되었다.
가상화를 사용하면 물리서버에서 리소스를 전보다 효율적으로 활용하고, 하드웨어 비용을 절감할 수 있었다.
컨테이너 개발 시대 : 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 VM보다 가볍고 빠르다. (VM은 각 VM마다 운영체제를 설치해야 하지만 컨테이너는 호스트 운영체제를 공유하기 때문이다.)
컨테이너 오케스트레이션 서비스중 쿠버네티스를 사용하는 이유
컨테이너 오케스트레이션 서비스로는 가장 빠르게 발전하고, 사실상 표준으로 자리잡았다. 그 이유는 로드 밸런싱, 스토리지 오케스트레이션, 자동화된 롤아웃과 롤백, 자동화된 빈 패킹, 자동화된 복구 등이 있다.