야레야레, 못말리는 쿠버네티스

peterTheAnteater·2024년 11월 1일
12

데브옵스

목록 보기
10/11
post-thumbnail

또 고민하시는거예요?
쿠버네티스는 종류가 많다구요
사이고노 케-코쿠데스
지금 고르지 않으면,
우린 춤을 출 거예요
야레야레, 못 말리는 쿠버네티스

죄송합니다

글을 쓰게 된 동기

안녕하세요. 오랜만에 제대로 된 글로 찾아뵙습니다. 이번에는 여태 우려먹던 도커가 아닌 쿠버네티스와 관련된 주제를 가지고 왔습니다.

요즘 일이 바빠서 글을 쓸 시간이 부족하네요 살려줘

사실 제가 쿠버네티스에 대해서 뭘 많이 알고 있다고 생각하지는 않고 회사에서 매일 쓰지만 하나도 모르는 쿠버네티스 그냥 대충 어떻게 사용하는법만 알아서 딱히 글을 쓸수 있는게 없어서 여태 쓸 생각을 못한거 같습니다.

최근에 아는분께서 로컬에서 쿠버네티스를 사용해보고 싶다 하면서 뭘 사용해야되는지 물어보는 일이 있었습니다.

로컬에서 쿠버네티스를 경험해보신분들은 알겠지만 쿠버네티스 버젼들이 생각보다 많습니다...! 그리고 이 점 때문에 초보분들은 고를때 결정장애가 올수 있죠.

잘 골라야됩니다

그래서 제가 알고있는 지식내에서 버젼들의 차이들이 뭔지, 그리고 뭐가 더 상황에 맞는지를 설명하느라 애를 좀 먹었습니다. 추가적으로 공부를 하면서 알게된 내용과 기존에 알고있던 내용 및 경험을 이 글에서 한번 써보려고 합니다.

쿠버네티스는 그냥 쿠버네티스 아닌가요?

네. 아닙니다.

놀랍게도 쿠버네티스는 종류(배포판)가 많습니다. 쿠버네티스는 처음 구글에서 고 언어로 만들어서 오픈소스화 된 툴입니다. 그 이후 많은 기업들에서 자기만에 쿠버네티스 서비스를 제공을 하기 시작합니다.

예를 들어 AWS EKS (Elastic Kubernetes Service), GCP GKE (Google Kubernetes Engine), Microsoft AKS (Azure Kubernetes Service), Red Hat Openshift, Rancher 등등 아무 다양합니다.

그 중 클라우드 서비스로 제공을 해주는 업체가 있고 기본 쿠버네티스에서 사용하기 쉽게 기능을 추가로 넣거나 뺀 쿠버네티스 종류들을 제공합니다.

물론 이 외에도 더 많이 있고 원조(?) 쿠버네티스도 모두가 사용할수있습니다

그럼 경량화 쿠버네티스는 뭔가요?

경량화 쿠버네티스 (Lightweight Kubernetets)는 말 그대로 기본 쿠버네티스 대비 비교적 적은 리소스 (cpu, ram, disk)를 가지고 운영할수있는 쿠버네티스 입니다.

위에 적은 쿠버네티스들은 클라우드 업체에 돈을 내거나 운영을 위해 마스터 노드 (쿠버네티스를 조종하는 기본 노드) 하나 포함된 클러스터 하나를 위해 최소 램2gb, cpu 2개, disk 30gb, 등등 같은 조건들이 좀 붙습니다. 저 수치는 진짜 최.소. 입니다

하지만 서버는 잘 터집니다

그 외에 운영이나 유지 등등 해야되는 부분들이 좀 많습니다. 에초에 집에서 프로젝트 하라고 만든게 아니라 대기업들 서비스 돌리라고 만들어놓은 쿠버네티스들이니까요.

그래서 집에서 프로젝트용으로 쿠버네티스를 돌리고 싶으신분들은 경량화 쿠버네티스중 하나를 고르셔서 사용하시면 됩니다.

자세한 리소스는 아래 차트를 보시면 됩니다.

사진 출처

그래서 어떤걸 사용하면 되나요?

사실 제가 추천을 해드리는 종류(배포판)는 딱히 없습니다. 그냥 자기가 하고싶은거 골라서 하면 되니까요. 물론 종류(배포판)들의 장단점을 다 보고 자기한테 맞는걸 사용하는게 맞습니다. 아래 장단점들을 말해보겠습니다.

Minikube

자료가 제일 많은 배포판 입니다. 쿠버네티스 팀에서 관리하고 배포 하는 서비스라 안정성이 높고 새로운 기술들이 빨리 업데이트 됩니다.

아마 벨로그에서 로컬 쿠버네티스 자료 찾아보시면 미니큐브가 많을겁니다.

단점은 VM이 돌아가기 때문에 리소스 사용량이 좀 높은 편입니다.

멀티 노드가 가능은 하지만 기본적으로 싱글 노드로만 가능하고 멀티 노드를 할때 문제가 좀 생길수 있습니다.

로컬에서 테스트용으로는 아주 좋은 선택중 하나입니다.

KinD (Kubernetes in Docker)

제가 알려드리는 경량화 쿠버네티스중 제일 가벼운 쿠버네티스 입니다. 신기한점은 KinD의 노드들은 사실 도커 컨테이너 입니다. 즉 컴퓨터 자체나 VM을 노드로 사용하는게 아닌 컨테이너를 사용합니다.

그래서 장점으로는 쉽게 멀티 노드 클러스터를 도커 컨테이너 기반으로 띄울수 있다는 점입니다. 그래서 멀티 노드 환경 테스트 (CI/CD중) 할때 사용하기 편합니다. 가볍고 멀티노드 환경 설정도 쉽고해서 CI파이프라인에서 테스트할때 빨리 KinD 를 띄우고 쓰는 경우가 많습니다.

단점으로는 도커에 의존성을 갖고 있다는점입니다. 즉 환경에 도커를 설치 안하면 작동도 못합니다.

그 외 간단한 테스트가 아닌 프로덕션용으로 사용할시 필요한 네트워크 설정, 스토리지 설정, 등등이 좀 어렵고 빠져있습니다.

프로덕션으로 사용하기에는 불안정합니다.

K0s

Mirantis라는 기업에서 만든 경령화 쿠버네티스 입니다.

장점으로서는 K0s도 KinD만큼 가볍습니다. 비교를 하자면 KinD보다는 무겁지만 도커가 꼭 필요하지 않습니다.

그래서 그런지 K0s도 CI/CD테스트에서 많이 사용하고 특히 IoT에서 사용을 많이 합니다. 가볍지만 KinD보다 안정성이 높습니다.

단점으로는 비교적으로 커뮤니티가 작아서 도움을 받기 어려운 편입니다. 저도 한국어 영어 가리지 않고 공부를 해보려고 했지만 공식 문서 이외 문서가 많이 적은 편입니다.

K3s

개인적으로 좋아하는 쿠버네티스 배포판 입니다. 자료도 적당이 있고 가볍습니다.

장점으로는 위에 배포판들처럼 가볍지는 않습니다만 적당이 가볍습니다. 특히 Minikube보다는 가볍습니다. 프로덕션급 배포판이고 기본적으로 임베디드 데이터베이스를 SQLite로 제공을 해줍니다.

단점으로는 여기도 자료가 많은 편은 아니라는 점과 인그레스가 기본적으로 Traefik로 설정이 된다는 점입니다. 물론 저는 좋아하지만 (선배 https 설정해주세요. 선배 혹시 traefik도 같이?) 엔진엑스로 인그레스 설정을 하시는게 더 편한 분들이 많을겁니다.

MicroK8s

마지막으로 MicroK8s입니다. 이 배포판은 조금 골 때립니다. Canonical 이라는 우분투를 만든거로 유명한 회사에서 나온 쿠버네티스 입니다.

장점으로는 기본 쿠버네티스와 거의 다를게 없는 프로덕션급 기능을 제공해주고 부가적인 기능들은 자체 cli로 쉽게 추가 할수있다는 점입니다.

단점이 조금 웃깁니다. MicroK8s는 Snap이라는 툴이 있어야 설치가 가능한데 이 툴은 우분투 기반 리눅스 배포판들에만 설치가 되어있습니다.

쓰라는거야 말라는거야

물론 우회해서 Snap을 설치하는 방법도 있기는 하지만 조금 골 때리는 점입니다. 그리고 당연히 기능이 많다보니 무겁습니다. 개인적으로 들을 내용으로는 멀티 노드 설정이 편하지 않다고 들었습니다. 기본적으로 싱글 노드를 염두하고 만든 배포판입니다.

결론

쿠버네티스를 고르실때 상황에 맞게 고르시면 됩니다. 사실 수많은 종류들이 있지만 결국은 회사에서 쓰라는걸 제일 자주 하는게 현실입니다. 솔직히 회사에서 쿠버네티스 만지는데 집에와서 까지 만지고 싶은 생각이 들면... 진정한 개발자입니다.

제 글에 틀린 부분이 있을수도 있으니 염두하시고... (댓글로 남겨주시면 방영합니다) 많은 도움이 됐으면 합니다.

여담으로 저는 집에서 K3s를 자주 씁니다

읽어주셔서 감사합니다!

profile
소프트웨어 개발과 밀당하는 개발자

2개의 댓글

comment-user-thumbnail
2024년 11월 6일

너무 재밌네요 ㅋㅋㅋㅋㅋㅋㅋ

답글 달기
comment-user-thumbnail
2024년 11월 7일

글이 너무 맛있네요 😋

답글 달기