본문 바로가기

Kubernetes 란


쿠버네티스는 운영 수준에서 컨테이너 오케스트레이션(컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리) 기능을 하는 오픈소스 시스템이다. GO 언어로 구현이되었으며, 구글에서 설계를 했지만 오픈소스로서 특정 벤더나 플랫폼에 종속되지 않기 때문에, 대부분의 클라우드/온프레미스 등에 사용이 가능하다. 비슷한 기능을 하는 솔루션으로 Docker Swarm, Mesosphere, OpenStack, CloudFoundry 등이 있지만 Kubernetes 로 표준화되어 가고 있다. 쿠버네티스(Kubernetes) 는 K8s 라고도 하는데 K"ubernete"s 가운데 8글자를 "8"로 대체한 약어이다. 우선 쿠버네티스가 실전에서 어떻게 사용되는지를 먼저 보는 것이 쿠버네티스의 용도를 파악하기 쉬울 것 같다.


쿠버네티스를 사용한 어플리케이션 여러 배포 방법 중 하나의 과정을 적어봤다.


  1. 뚝딱뚝딱 서비스할 어플리케이션(A) 만들기.
  2. 쿠버네티스를 제공하는 클라우드 서비스에서 어플리케이션(A)가 운영될 클러스터 생성 및 리소스 설정
  3. 어플리케이션(A)을 컨테이너화하고 쿠버네티스에 배포 <- 운영 시작
  4. 스케일링 설정으로부터 파드(Pod) 수를 조절하며 업데이트 및 롤백 가능


큰 그림 위주의 단계만 적어놓아 이해에 부족함이 있을지도 모르겠다. 위 단계처럼 쿠버네티스는 배포 시스템이며, 안정적으로 운영을 하기 위한 여러 기능을 제공하고 있다. 기존 웹서버에 ELB 와 오토스케일링을 붙이는 방식보다 컨테이너 배포 시스템이 더 나은 점은 빠르고 안정적인 배포와 확장이다. 규모가 커질수록 컨테이너 방식이 월등하다. 다운될 일이 전혀 없는 작은 서비스를 운영하고 있고, 앞으로도 큰 서비스를 개발할 계획이 절대 없다면 이러한 컨테이너 서비스를 사용할 필요가 없다. 제대로 사용하기까지 드는 시간과 노력의 비용이 훨씬 많이 들기 때문이다. 쿠버네티스에 일찍 올라타진 못했지만 많은 사람들이 컨테이너 오케스트레이션 중에는 쿠버네티스를 가장 선호하고 있으며, GitKube 나 Jenkins X 등 Kubernetes 를 더 편리하게 사용할 수 있도록 많은 툴들이 확장되고 있다. 컨테이너 서비스에 관심이 많거나, 최소 트래픽 분산 환경의 웹서버를 운영하는 종사자, 또는 앞날이 창창한 신입 개발자들에게 반드시 도움이 되는 시스템이라고 생각한다.



* 더 도움이 되는 사이트

쿠버네티스 공식 문서(부분 한글) - https://kubernetes.io/docs/home/

조대협(조병욱) 님의 블로그 - https://bcho.tistory.com/1255