본문 바로가기

AI Feed
Tech & Product/AI, 더 쉽게

쿠버네티스, 오픈소스 도구로 더 알차게 쓰는 법!

쿠버네티스는 AI 개발, 학습하시는 분들이라면 무척 친숙한 플랫폼입니다. AI 개발자, 또는 그와 관련된 솔루션을 개발하시는 분들은 원하든 원하지 않든 아주 오래 붙들고 있게 될 텐데요. (TEN의 개발자분들도 포함해서요🤓) 쿠버네티스(Kubernetes)는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장성도 있는 오픈소스 플랫폼입니다. 2014년 구글에서 오픈소스로 전환한 이후로 지금까지 다양한 아이디어, 적용 사례가 결합, 누적되어 왔는데요. “K”와 “S” 사이에 8글자가 있다는 의미로 “K8s”로 표기하기도 합니다.

크고, 빠르게 성장하는 생태계를 갖춘 플랫폼이라 쿠버네티스 서비스, 기술 지원, 도구를 어디서나 쉽게 이용할 수 있다는 점이 매력적이지만, 단점 역시 존재합니다. 바로 소프트웨어 패키지 관리 시스템이 없다는 점입니다.🤦 그래서 기본적으로 수행할 수 있는 작업이 부족해요. 예를 들어 내장된 모니터링 소프트웨어가 부족해서 보안상 위험이 있는 구성을 하더라도 그 실수를 감지할 수 없는 경우가 있고요. 기본 대시보드가 말 그대로 매우 ‘기본’에 충실해서, 클러스터를 관리하거나 모니터링할 때 충분히 정보를 얻을 수 없는 경우도 있습니다.🤔

얼핏 들으면 치명적일 수 있는 단점을 가지고 있음에도, 쿠버네티스가 지금의 위치를 차지하게 된 이유가 있습니다. 바로 쿠버네티스에 적용할 수 있는 오픈소스 도구, 솔루션인데요.🤓 오늘은 쿠버네티스를 더 완벽한 플랫폼으로 기능하도록 만들어주는 다양한 오픈소스 도구들을 몇 가지 소개해 드릴까 합니다.

 

 

 

[ 쿠버네티스를 로컬에서? 아니면 서버리스는 어때요? ]

아, 노트북에서 쿠버네티스를… 어떻게 안 될까?🤔 같은 고민, 해보신 적 있나요? 예를 들면 쿠버네티스를 막 배우기 시작하셨거나 테스트가 필요한데, 공부하고 테스트할 독립 환경을 설정하기 어려우신 경우가 있겠는데요. 그렇다면 추천해 드리고 싶은 도구가 있습니다. 바로 미니큐브(Minikube)입니다.

미니큐브를 사용하면, 리눅스, 윈도우, 맥OS를 사용하는 로컬 머신에서 쿠버네티스 클러스터를 생성할 수 있는데요. K3s, MicroK8s와 같은 다른 Kubernetes 배포판도 비슷한 기능을 제공하긴 합니다만, 미니큐브는 쿠버네티스 프로젝트의 자체 후원으로 개발되었다는 점에서 차이가 있습니다. 즉 "공식"적으로 경량화된 쿠버네티스라, 타사에서 개발된 오픈소스 도구/솔루션보다 안정성 부분에서 믿을 수 있는 거죠.🙂

쿠버네티스를 사용해서 서버리스 기능을 호스팅하고, 이벤트 기반 컴퓨터를 수행할 수 있도록 하는 도구도 있습니다. 바로 케이네이티브(Knative)입니다.🤓 케이네이티브는 미니큐브처럼 경량화에 초점을 맞췄다기보다, 클러스터 함수 전환, 완전한 제어 환경 등의 기능적 측면을 고려한 도구입니다.

클러스터를 AWS Lambda 또는 Azure 함수 등으로 전환할 수 있는데요. 클라우드 기반 서버리스 컴퓨팅에서 비용, 보안 및 구성 측면에서 아쉬움을 느끼셨다면, 서버리스 코드는 사용자가 완전히 제어할 수 있는 환경에서 실행되기 때문에 여러 방면에서 개발자 및 기획자가 의도한 대로 컨트롤할 수 있다는 장점이 있습니다. 쿠버네티스에서 컨테이너만 실행하는 데에 그쳐야 하는 아쉬움을 해결해 주는 거죠.😉

 

 

 

[ 쿠버네티스를 더 단순하게, 빠르게 ]

‘기본’에 충실한 플랫폼이라는 건 어떤 의미일까요? 보통 ‘기본’이라는 말을 떠올리시면 텅텅 비어있는, 가장 심플하고 간소화된 플랫폼을 생각하실 텐데요. 사실 심플하고 간소화된 것조차 ‘기본’ 상태에서 개량된 것일 수 있음을 감안하면, 아마 거의 다듬어지지 않은 ‘원석’에 가까운 플랫폼이라고 이해하는 것이 쿠버네티스의 플랫폼 상태에 맞는다고 할 수 있겠습니다. 그대로 사용하기에는 불편하지만, 원석의 가치는 어마어마한 거죠.😲

그럼, 우리가 생각한 ‘기본’이 형태에 가깝도록 쿠버네티스를 단순하게, 빠르게 만들어주는 도구는 없을까요? 아마도 오픈 소스 패키지 관리 시스템인 헬름(Helm)이 적절한 답이 될 것 같습니다.🤓 본래 쿠버네티스에서는 일명 ‘명령줄 도구’라고 부르는 ‘kubectl’를 사용해서 애플리케이션을 배포하는 방식으로 쿠버네티스 소프트웨어를 설치해야 하는데요. 헬름을 사용하면 패키지를 사용하여 Kubernetes 소프트웨어를 설치하는 방식으로 과정을 단순화할 수 있습니다. 그뿐만 아니라 클러스터에서 소프트웨어 업데이트, 제거 프로세스를 자동화할 수 있답니다.

 

쿠버네티스가 ‘기본’에 충실한 플랫폼이어서 더욱 어려운 일이 하나 더 있습니다. 바로 로그 파일에 엑세스하는 건데요. 물론 kubectl 로그 또는 Kubernetes 대시보드를 사용하여 개별 포드의 로그를 볼 수 있기는 합니다만…🤔 각 포드에 모니터링을 위해 명령을 반복해서 해줘야 하는 번거로움이 있습니다.

이때 추천해 드릴 수 있는 도구가 바로 쿠베테일(Kubetail)입니다. 한 번의 명령으로 여러 Pod에 대한 로그를 테일링(tailing)할 수 있어요. 로그 파일 엑세스, 모니터링을 일일이 해야 하던 과정을 단순화해 주는 동시에, 한 번의 명령으로 일명 ‘퉁 치기’를 할 수 있다는 건 그만큼 로그를 빨리 볼 수 있다는 거겠지요. 별것 아닌 것처럼 보일 수도 있겠지만, 로그를 자주 테일링(tailing)한다면? 혹은 수십 개의 포드, 수백 개의 클러스터에 수십 개의 노드가 있다면 어떨까요? 이제 쿠베테일의 장점을 확실히 체감하실 수 있으실 거예요.😊

 

 

 

[ 클러스터를 추적하고 모니터링하는 참신한 도구들 ]

로그 모니터링 이야기가 나왔으니, 본격적으로 쿠버네티스의 모니터링을 위한 도구를 추천해 드려볼까 합니다. 제일 먼저 소개해 드리고 싶은 도구는 바로 프로메테우스(Prometheus)인데요. 클러스터 모니터링을 위한 도구입니다. 물론 쿠버네티스를 모니터링하고 관찰하기 위한 다양한 솔루션이 있고 프로메테우스가 가장 좋다, 강력하다고 말하기는 어렵긴 한데요.🤔 다른 도구에 비해 간단해서 클러스터에 대한 기본 모니터링 및 메트릭 수집만 필요한 경우 유용하게 사용하실 수 있고, 무료라는 점은 무시할 수 없는 매력이기에 소개해 드립니다.

협업에서 빠질 수 없는 업무 툴 슬랙(Slack)에서 바로 클러스터의 상태를 추적할 수 있는 도구도 있습니다. 바로 쿠베워치(Kubewatch)입니다. 슬랙만 연동할 수 있는 것이 아니라, 다른 커뮤니케이션 및 협업 플랫폼에서도 쿠버네티스에서 발생한 이벤트에 대한 알림을 받을 수 있도록 연동할 수도 있습니다.🙂 물론 완전한 모니터링 기능을 지원한다거나 유일무이한 모니터링 도구라고 말씀드리기는 어렵습니다. 하지만 모니터링을 좀 더 효율적으로 할 수 있도록 도와주는 푸시 기능이 있으니, 쿠베워치만큼 편리한 솔루션도 없다는 생각이 듭니다.

 

 



지금까지 쿠버네티스를 좀 더 알차게, 야무지게 사용할 수 있는 도구들을 소개해 드렸습니다. 헬름으로 쿠버네티스 소프트웨어 설치를 단순화하고, 프로메테우스로 클러스터를 모니터링하고, 케이네이티브를 사용해서 쿠버네티스를 서버리스 컴퓨팅 환경으로 전환하고… 어떠신가요?🤔 쿠버네티스를 활용하시면서 느끼셨던 부담이 조금 줄어드셨을까요? 쿠버네티스 활용에 도움이 되는 다른 도구들도 기회가 되면 더 소개해 드릴 테니, TEN의 AI 피드에 자주 놀러 오세요!😉