
생각보다 쿠버네티즈에 대한 쉬운 설명이 잘 없는것 같아 조금 쉽게 이해할 수 있는 글을 써보았다.
쿠버네티즈 공식사이트에 있는 내용을 참고하였으니 보다 자세히 알고싶으면 공홈에 들어가보는걸 추천한다.
쿠버네티즈는 쉽게 말해 하나의 서비스를 운영하기 위한 관리 시스템이다.
앱이나 웹사이트 같은 서비스를 구축하면 벡엔드에서 다양한 어플리케이션SW이 실행되고 있다.
(여기서 어플리케이션SW는 기능 단위의 SW로 예를들면 mysql 같은 프로그램을 의미한다.)
근데 각 어플리케이션은 구동환경(OS, 버전, 패키지)이 모두 다르기 때문에 하나의 환경에서 실행할 수 없다.
그렇다면 PC를 어플리케이션 갯수만큼 사면 되지 않을까? 싶겠지만, 이렇게 되면 너무 많은 리소스 낭비가 발생되고 물리적으로 PC가 너무 많이 필요하다는 단점이 있다.
그럼 하나의 물리적 PC에 VM을 여러개 띄워서 구성하면되지 않을까?
VM은 가상 머신을 띄우고 그 안에 OS를 설치하는 형태로, 너무 무겁다는 단점이 있으며 수백개의 VM이 생성되면 어디에서 문제가 생겼는지 알기 어렵다.
그리고 VM별 리소스를 유동적으로 조절할 수 없고 SW버전을 업데이트하기 위해 서비스를 잠시 중단해야 할수도 있다.
즉, 더 가볍게 유기적으로 각종 어플리케이션을 구동하면서 여기에 문제가 생겼을때 이를 자동 복원해주는 시스템이 필요했던 것이다.
전 세계에서 이러한 문제를 가장 많이 겪은 회사가 어딜까?
바로 가장 많은 트레픽을 처리해야 하는 구글(Google)이다.
구글은 이를 해결할 수 있는 방안으로 쿠버네티즈를 개발하였으며 완성하기까지 15년이 걸렸다. 그리고 2014년에 쿠버네티즈 프로젝트를 오픈소스화하면서 세상에 공개되었다.
쿠버네티즈를 나타내는 K8s라는 표기는 K와 s사이에 8글자가 있다는 것을 나타내는 표기이다.
위에서 말한 운영 시스템의 발전 단계를 소개하면서 왜 쿠버네티즈가 필요하게 되었는지 설명하도록 하겠다.
초기 조직은 애플리케이션을 물리 서버에서 실행했었다. 그러나 물리 서버 하나에서 여러 애플리케이션을 실행하면, 리소스 전부를 차지하는 애플리케이션 인스턴스가 있을 수 있고, 결과적으로는 다른 애플리케이션의 성능이 저하될 수 있었다. 이에 대한 해결책으로 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행할 수도 있지만, 이는 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않았으며, 조직이 많은 물리 서버를 유지하는 데에 높은 비용이 들었다.
그 해결책으로 가상화가 도입되었다. 이는 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM)을 실행할 수 있게 한다. 가상화를 사용하면 VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스할 수 없으므로, 일정 수준의 보안성을 제공할 수 있다. 가상화를 사용하면 물리 서버에서 리소스를 보다 효율적으로 활용할 수 있으며, 쉽게 애플리케이션을 추가하거나 업데이트할 수 있고 하드웨어 비용을 절감할 수 있어 더 나은 확장성을 제공한다. 그러나 여전히 하드웨어 종속적인 이슈가 있으며, 설치하는 단계가 복잡하다.
컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다. VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 수 있다.
컨테이너는 애플리케이션을 포장하고 실행하는 좋은 방법이다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 잘 가동되고 있는지 확인해야 한다.
컨테이너가 다운되면 다른 컨테이너를 다시 시작해야 하는 등 컨테이너 운영 및 관리 기술이 필요하다.
공식 홈페이지에서 소개하는 구체적인 쿠버네티즈의 역할은 아래와 같다.
쿠버네티즈는 다양한 어플리케이션을 하나로 묶어서 효율적으로 관리하기 위해 개발된 컨테이너 관리 및 운영 시스템이다.
요즘엔 거의 대부분의 시스템이 쿠버네티스를 기반으로 돌아가고 있다.
쿠버네티스는 분리하기 용이하여 타 하드웨어로 전이하기 쉬우며, 스케일업도 쉽게 가능하다는 장점이 있다.
또한 운영적인 측면에서 자동으로 많은 일들을 해주기 때문에 구축만 잘 되면 유지보수하기 매우 편리하다.
따라서 어느정도 규모가 되는 시스템을 구성하려면 쿠버네티즈는 선택이 아니라 필수이다.
감사합니다. 이런 정보를 나눠주셔서 좋아요.