컨테이너를 다루는 표준 아키텍처, 쿠버네티스

컨테이너 인프라 환경이란

리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 independent 상태로 실행되는 인프라 환경을 말한다. 여기서 컨테이너란 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스이다.

가상화 환경(VMware)에서는 각각의 가상 머신이 모두 독립적인 운영 체제 커널을 가지고 있어야 하기 때문에, 그만큼 자원을 더 소모해야 하고 성능이 떨어진다. 하지만 컨테이너 인프라 환경은 운영 체제 커널 하나에 컨테이너 여러 개가 격리된 형태로 실행되기 때문에 자원을 효율적으로 사용할 수 있다.

그러다 커널을 공유해 더 많은 애플리케이션(컨테이너)을 올릴 수 있는 기술이 도입되면서 컨테이너를 관리해주는 솔루션이 필요했는데, 그게 구글에서 오픈소스로 공개한 쿠버네티스다.

쿠버네티스 이해하기

오케스트레이션 (Orchestration)이란 복잡한 단계를 관리하고 요소들의 유기적인 관계를 미리 정의해 손쉽게 사용하도록 서비스를 제공하는 것을 의미한다. 다수의 컨테이너를 유기적으로 연결, 실행, 종료할 뿐만 아니라 상태를 추적하고 보존하는 등 컨테이너를 안정적으로 사용할 수 있게 만들어준다.

이러한 오케스트레이션 기능을 하는 솔루션들이 여러가지가 있다.

  • Docker Swarm : 간단하게 설치할 수 있고 사용하기도 용이하다. But 그만큼 기능이 다양하지 않다. 따라서 소규모 환경에는 유용하지만 대규모 환경에는 잘 사용하지 않는다.
  • Mesos : Apache의 오픈소스 프로젝트. 대규모 서버 환경에서 자원을 유연하게 공유하며 하나의 자원처럼 관리하도록 지원한다. 하지만 기능을 충분히 활용하려면 분산관리 시스템과 연동해야 하므로 부담이 있다.
  • Nomad : Vagrant 처럼 간단한 구성으로 오케스트레이션 환경을 제공한다. 하지만 기능이 부족하므로 복잡하게 여러 기능을 사용하는 환경이라면 적합하지 않다.
    • 해시코프의 Consul(서비스 검색, 구성 및 분할 기능 제공)과 Vault(암호화 저장소)와의 연동이 원활하므로 이러한 도구를 쓴다면 노매드 도입을 고려해볼 수 있다.
  • 쿠버네티스 : 컨테이너 오페스트레이션을 넘어 IT 인프라 자체를 컨테이너화하고 그 인프라를 쿠버네티스 위에서 동작할 수 있게 만든다.

Toy Project를 올릴 때 도커 스웜을 써봐도 좋겠다.

쿠버네티스 구성방법

  1. 관리형 쿠버네티스 : EKS(Amazon Elastic Kubernetes Service), AKS(Azure Kubernetes Services), GKE(Google Kubernetes Engine) 등 public cloud vendor 에서 제공하는 관리형 쿠버네티스를 사용한다.

  2. 설치형 쿠버네티스 : Rancher, OpenShift 와 같은 플랫폼에서 제공하는 설치형 쿠버네티스를 사용한다. (유료다)

  3. 구성형 쿠버네티스 : 쿠버네티스 클러스터를 자동으로 구성해주는 솔루션을 사용한다. kubeadm, kops, krib, kubespray 등이 있다.

온프레미스(on-premise)는 소프트웨어 등 솔루션을 클라우드 같이 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 말한다.

kubeadm은 사용자 설멍이 가장 많이 필요하고, 쿠버네티스가 설치되는 서버 노드가 가상머신을 이용해 실제 온프레미스에 가깝게 구성된다.

댓글남기기