본문 바로가기

2017
itworld

글: Serdar Yegulalp | InfoWorld / 2017-5-23

 

 

 

컨테이너화된 워크로드를 위한 클러스터 관리자인 쿠베르네티스(Kubernetes)가 대세다. 까다로운 로드밸런싱과 작업 관리는 쿠베르네티스에 맡기고 사용자는 다른 부분에 집중할 수 있다.

그러나 거의 모든 오픈소스 프로젝트가 그렇듯이 쿠베르네티스 역시 아직 만들어가는 과정이다. 쿠베르네티스를 사용하다 보면 누구나 필연적으로 부족한 부분과 불편한 점을 발견하게 된다. 쿠베르네티스 클러스터 관리에 따르는 부담을 덜어주는 4가지 프로젝트를 소개한다.

큐브-어플라이어(Kube-applier)
쿠베르네티스 성공의 핵심은 구글이 아닌 다른 IT 브랜드들도 채택하고 있다는 것이다. 클라우드 스토리지 업체 박스(Box)는 내부 배치에 사용했던 쿠베르네티스용 코드 일부를 오픈소스화했는데, 큐브-어플라이어도 그러한 프로젝트 중 하나다.

큐브-어플라이어는 쿠베르네티스 서비스로 실행되며, 깃(Git) 리포지토리에 호스팅되는 쿠베르네티스 클러스터용 선언 구성 파일 집합을 받아 이를 클러스터의 팟(pod)에 지속적으로 적용한다. 정의 파일에 변경 사항이 발생할 때마다 자동으로 리포지토리에서 가져와 해당 팟에 적용한다.

변경 내용은 일정을 기반으로 적용할 수도, 필요에 따라 그때그때 적용할 수도 있다. 큐브-어플라이어는 실행될 때마다 작업을 로그로 기록하며 프로메테우스(Prometheus)와 호환되는 메트릭을 제공하므로 이 툴이 클러스터의 작동에 미치는 영향을 파악할 수 있다.

큐브톱(Kubetop)
가장 단순한 툴이 가장 유용할 때가 있다. 파이썬으로 작성된 큐브톱은 현재 실행 중인 모든 노드, 노드의 모든 팟, 그리고 팟의 모든 컨테이너를 목록화하고 각각의 CPU 및 메모리 사용량을 보여준다. 유닉스/리눅스의 top 명령과 비슷하다. 이 툴은 아주 간단한 정보만 생성하므로 본격적인 로깅 또는 보고 툴 대용으로 사용해서는 안 된다. 그러나 쿠베르네티스 클러스터에 대한 간결하고 일목요연한 보고 기능으로 충분한 경우라면 아주 유용하다.

명령줄을 사용하는 중에 지금 클러스터 사용량이 많은 요소가 무엇인지 빠르게 알아야 한다면 이 툴이 딱 맞다. 쿠베르네티스의 kubectl도 비슷한 기능을 하지만 큐브톱의 출력이 더 깔끔하다.

Kubectx/K8senv
쿠베르네티스에는 구성 데이터가 서로 다른 개별 클러스터를 참조하기 위한 “컨텍스트”라는 개념이 있다. 기본 kubectl 명령줄 툴을 사용해서 컨텍스트에서 컨텍스트로 전환하기는 때로 불편하고 거추장스럽다. 그래서 서드파티를 통해 간단히 컨텍스트를 전환할 수 있는 방법이 등장했다.

Kubectx라는 간단한 셸 스크립트를 사용하면 쿠베르네티스 컨텍스트에 짧은 이름을 부여해서 이 이름을 사용해 컨텍스트 전환이 가능하다. Kuberctx에 대시(-)를 전달하면 이름을 기억할 필요도 없이 이전 컨텍스트로 전환된다. 이 스크립트는 탭을 사용한 이름 완성도 지원하므로 긴 이름을 일일이 입력하지 않아도 된다.

또 다른 셸 스크립트인 K8senv는 훨씬 더 단순한 대신 기능은 그만큼 떨어진다. 예를 들어 현재 인스턴스와 지난 인스턴스 사이를 전환하는 기능이 없다.

kubeadm-dind-cluster
테스트를 위해 로컬로 단일 노드 쿠베르네티스 인스턴스를 구동해야 한다면 쿠베르네티스에서 제공하는 기본 툴인 미니큐브(Minikube)로도 충분하다. 그러나 쿠베르네티스 자체 테스트와 개발을 위해 다중 노드 클러스터를 구동하려면 미란티스(Mirantis)의 kubeadm-dind-cluster(KDC)를 사용하는 것이 좋다.

KDC는 쿠베르네티스의 kubeadm 앱을 사용해서 VM이 아닌 도커 컨테이너로 구성된 클러스터를 실행한다. 이를 통해 쿠베르네티스 작업 시 클러스터를 더 빠르게 재시작하고, 따라서 각 코드 변경이 미치는 영향을 더 신속하게 파악할 수 있다. 지속적 통합 환경에서도 “중첩 가상화에 따른 문제 없이” KDC를 사용할 수 있다. KDC는 리눅스, 맥OS, 윈도우 등 플랫폼을 가리지 않고 실행되며, 쿠베르네티스의 도커화된(Dockerized) 빌드를 사용하므로 고(Go) 설치도 필요 없다.

 

 

 

 

 

 

※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지

 

 

 

 

[원문출처 : http://www.itworld.co.kr/news/104887]

 

맨 위로
맨 위로