작년에 학부 연구생 프로젝트를 진행하며 라즈베리 파이로 구축한 K3s 클러스터가 방 한켠을 차지하고 있었다.
사이드 프로젝트를 넓은 범주에서 활용하기도 하며
또한 내 방에 오랫동안 사용할 작은 홈 쿠버네티스 클러스터를 구축하고자 작성하게 되었다.
https://boramchan-corgi.tistory.com/42
[K3s] Raspberry PI 4 에 K3s 설치하여 클러스터 구축하기
이번에 RaspberryPI를 통한 클라우드 환경 구축 및 이 가이드에서는 Raspberry Pi 4 클러스터에 K3를 원활하게 설치하는 데 도움이 되는 커맨드 라인과 유용한 팁을 공유합니다. 본격적으로 설치 과정을
boramchan-corgi.tistory.com
왜 K3s에서 MicroK8s를 선택했는가 ?
K3s에서 MicroK8s로 마이그레이션을 선택한 이유는 여러 가지가 있다.
3년전 처음에는 쿠버네티스를 이론적으로 학습하면서 Mac Mini에 Minikube를 설치해 단일 클러스터 환경을 구성했었다.
그러던 중, 에트리에서 인턴으로 일하면서 이기종 GPU가 탑재된 데스크탑들로 클러스터를 구축해 테스트하는 업무를 맡기도 했다.
이때, '쿠버네티스는 고사양 환경에서만 작동한다'는 고정관념이 생긴 것 같다. 하지만 K3s로 클러스터를 구축하면서 쿠버네티스가 고성능의 기기에서만 작동해야 한다는 생각을 완전히 깨버렸다.
이후에 K3s를 이용한 데이터 파이프라이닝 프로젝트를 진행하며 큰 제약 없이 운영할 수 있었고, RabbitMQ, InfluxDB, Telegraf, Grafana 등 다양한 서비스들이 잘 돌아갔다. (라즈베리파이가 8gb이여서 그럴수도)
그럼에도 불구하고 마이그레이션을 결심한 이유는 '범용성' 때문이다.
추후 데스크탑을 GPU 노드로 활용할 계획이 있었고, 이를 위해 더 넓은 범위에서 호환성과 관리의 용이함을 제공하는 MicroK8s가 더 적합하다고 판단했다.
또한, K8s를 직접 사용해본 경험이 있기 때문에 CNI와 CSI를 실제 환경과 비슷하게 구동시키는 작업도 진행해보고 싶었다.
최종적으로는 RTX 4060이 탑재된 데스크탑을 GPU 노드로 활용하여 개인적인 추론 홈서버를 구축하는 것이 목표이다.
아래는 내가 마이그레이션을 결정하게 된 계기이고
현업자 이신 jyje님께 직접 질문하며 마이그레이션에 관련하여 의견을 여쭤보았다.
k3s에 대한 의견
- k3s는 Rancher에서 저성능, 고가용으로 튜닝한 쿠버네티스입니다. 클러스터 성능이 그리 높지 않다면 여전히 최적의 선택입니다.
- 튜닝 쿠버네티스라서 사용할 수 있는 CSI,CNI 등이 일부 제한됩니다. 저성능에 최적화된 CSI,CNI이므로 고성능의 장비에서는 성능 병목현상이 자주 발생합니다.
- 또, 리눅스 계열의 노드만 지원합니다. 맥이나 윈도우 서버를 노드로 추가할 수 없어요.
- 하지만 1GB 라즈베리파이 1대 라도 싱글노드 쿠버네티스를 쓸 수 있는 무서운 최적화를 보여줍니다.
k3s에서 pod 생성이 버벅인다면 k3s를 사용하시는 게 좋습니다. 제 경험상 각 노드가 4GB RAM 이상이라면 MicroK8s로 전환해도 전혀 무리가 없었습니다
MicroK8s에 대한 의견
- 바닐라 쿠버네티스는 API 구조가 정식 쿠버네티스와 동일합니다. k3s과 같은 튜닝 클러스터는 그렇지 않아 각각 아키텍처를 잘 파악해야합니다. 물론 앱 배포에 사용하는 Pod 같은 워크로드는 바닐라/튜닝 간 차이는 없습니다.
- 지원하는 CSI, CNI의 제한이 없습니다. 따라서 MicroK8s에서 검증한 내용을 다른 바닐라 쿠버네티스에 적용하기 좋습니다. 집에서 테스트한 컨트롤 플레인 구성을 회사에 바로 적용할 수 있습니다.
- 다른 OS와 호환성이 좋습니다. 맥 노드를 추가해서 실험하기 좋았어요.
아래 링크의 jyje님의 블로그를 참조하며 설치를 진행하였다.
https://blog.jyje.live/posts/dev/ops/raspberry-pi-microk8s
MicroK8s 클러스터 만들기 with 라즈베리파이
여는 말
blog.jyje.live
구축 과정
각 모든 디바이스의 OS는 라즈비안 64비트로 진행하였다.
결과
1Master 2 Worker Node로 구축이 잘 되었다.
K3s 구축 시에는 마스터 노드도 워커 역할을 할 수 있도록 taint 설정을 풀었지만, 이번에는 마스터 노드는 오직 마스터 역할만 수행하도록 운용할 계획이다.
즉, 마스터 노드는 클러스터 관리 및 스케줄링 기능만 담당하고, 워커 노드는 실제 워크로드를 처리하는 역할에 집중하도록 할 것 이다.
이렇게 분리함으로써 각 노드의 역할을 명확히 하고, 시스템 안정성 및 관리 측면에서 더 효율적인 환경을 만들어볼 것이다.
'Computer Science (CS)' 카테고리의 다른 글
[CS] AMQP 와 RabbitMQ 분석하기 (2) | 2025.01.04 |
---|---|
[CS] 메시지 큐에 대해 알아보기 (Message Queue) (0) | 2025.01.01 |
[DB] Database Project - 5 / PHP 연동 및 플랫폼 구현 (0) | 2024.03.06 |
JWT(JSON Web Token) 이란? (0) | 2024.01.23 |
[DB] 동시성 제어(Concurrency Control), 직렬화(Serialization) (0) | 2023.11.30 |