Programming,  Unix/Linux/Mac

맥북 K8s에 분산 시스템 설치하기

며칠 간의 로컬 k8s 위에 elasticsearch나 opensearch를 구축하는 시도는 무위로 돌아갔다. Linux box에 설치하는 건 잘 동작하는데, 맥북에 설치하려니 여러가지 문제가 생긴다.

  • 기본 설정은 multi-node 3copy 구성이고 single-node로 설치하기가 쉽지 않다.
  • 가까스로 single-node로 설치하더라도 macOS는 VM 위에 k8s를 설치하게 되는데 VM에 할당된 자원의 한계로 인해 곧잘 동작하다가 뻗어버리기 일쑤다. 유독 elasticsearch 계열의 소프트웨어가 그렇다.

VM에 자원을 50% 이상 할당하자니 업무용 PC에서 다른 작업을 하기가 어렵고 해서 그냥 포기한다. K8s 위에 설치하는 대신에 로컬에 패키지 매니저를 이용해 설치하는 게 더 안정적이다.

K8s에 설치했던 여러 오픈소스 소프트웨어는 상당히 큰 시스템 성능을 요구한다. 특히 분산 아키텍처를 채택한 소프트웨어들이 그렇다.

여러 소프트웨어들을 PC의 로컬 환경 + 싱글노드 K8s 클러스터 위에 설치해봤더니 다음과 같은 사용 경험을 얻을 수 있었다.

  • MySQL의 경우, IO에 의존하다보니 성능이 너무 떨어지지만 참고 쓸 수 있는 수준이다.
  • Loki는 겨우 설치해서 잘 돌리는 수준이고 쿼리가 무거우면 타임아웃이 종종 발생한다.
  • elasticsearch는 위에서 언급한대로 설치부터 훨씬 어려웠다. 설치가 되더라도 곧바로 뻗어버리는 경우가 대다수이다.
  • Redis가 좀 더 가벼워서 설치까지 큰 문제가 없었는데, MongoDB는 최소 구조로 설치해도 잘 안 된다. (경험 부족)

결국 K8s를 싱글노드로 설치할 경우 메모리를 넉넉하게 확보하는 것이 핵심인 것 같다. ES같은 분산 시스템은 4GB 이상 요구하는 것으로 보인다. io-bound 소프트웨어는 컨테이너 대신 VM이나 물리장비 위에서 운영하는 게 어떨까 싶다.