practice makes perfect

Kubernetes 란? 본문

Kubernetes

Kubernetes 란?

후니옹 2019. 4. 6. 12:19

Kubernetes(쿠버네티스) 란 무엇인가

  • 컨테이너화 된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스
  • 구글에서 설계 되었고 애플리케이션을 구성하는 컨테이너들의 쉬운 관리를 위해 논리적인 단위로 그룹화
  • 어원은 그리스어로 조타수, 키잡이라는 뜻이며 Kubernetes 에서 ubernete 가 8글자이므로 k8s 라고 표현

 

[출시배경]

  • 마이크로 서비스 아키텍처 발전
    - 마이크로 서비스 아키텍처가 단순 개념에서 부터 점점 발전하기 시작하였고 디자인 패턴과 이를 구현하기 위한 다양한 인프라 플랫폼들이 소개되기 시작했다. 또한 서비스가 점점 작아지면서 1~2 Core로도 운영할 수 있는 작은서비스들이 등장하게 되었고 이런 작은 서비스는 VM 환경으로 운영하기에는 낭비가 심하다 
  • 솔루션의 발전
  • 데브옵스 모델의 성숙화
    - 데브옵스 모델도 나온지는 오래되었지만, 운영을 데브옵스라는 이름으로 바꾼 것일 뿐 실제적인 변화가 없는 팀들이 많았고, 또는 데브옵스라는 이름아래에서 개발팀이 개발과/운영 역할을 병행해서 하는 사례가 오히려 많았다. 이런 데브옵스의 개념도 근래에 들어서 정리가 되어가고 있는데, 개발팀이 개발과 시스템에 대한 배포/운영을 담당한다면, 데브옵스팀은 개발팀이 이를 쉽게할 수 있는 아랫단의 플랫폼과 자동화를 하는데 목표를 두는 역할로 역할이 명확해지고 있다.

[사용이유]

  • 벤더나 플랫폼에 종속되지 않기 때문에, 대부분의 퍼블릭 클라우드 (구글,아마존,애저)등에 사용이 가능하고 오픈 스택과 같은 프라이빗 클라우드 구축 환경이나  또는 베어메탈 (가상화 환경을 사용하지 않는 일반 서버 하드웨어)에도 배포가 가능 
  • Docker 이외에도 rkt나 Hyper container 다양한 컨테이너 엔진들을 지원
  • 하드웨어 자원을 컨테이너화 하여 isolation(격리) 하는 기능이 가능
  • 스토리지 자원의 활용 용이성
  • 노드 확장등을 유연하게 지원
  • 자원을 최대한 최적으로 사용하기 위해 적절한 위치에 배포가 가능 

 

[Docker와 다른점]

 컨테이너하면 떠오르는 것이 바로 대표적인 Docker 이지만 어플리케이션이 늘어나면 얘기는 달라진다.

관리자 측면에서 생각을하면 하나의 노드에서 여러 컨테이너를 올리다보니 Resource 부족 현상이 발생한다. 여기서 Resource는 CPU, Memory, Disk 등을 얘기한다.

 

예를들어 서버를 하나 더 추가해서 컨테이너를 나누고 노드에 담자

노드를 하나 늘려서 Docker를 설치하였지만 관리하는 노드가 점점 많아질수록 복잡하고 관리가 어렵다.

 

또 하나의 예를들어 웹서버를 배포하려는데 중요한 서비스이니 Downtime이 발생하면 안되고 이중화 구성을 위해 로드밸런서를 두고 트래픽 분산을 하려고 한다.

 

도커만으로 위 내용을 충족시키기가 매우 어렵다. 

 

하지만!!

 

Kubernetes (쿠버네티스) 는 위에서 필요한 기능들을 다 제공하고 있다.

 

간단한 그림 예

Comments