Home 서버로 Kubernetes Cluster 환경을 구축하기로 마음먹었습니다. 오늘의 포스팅은 시작하는 만큼 동기, 목표에 대해서만 아주 간략하게 서술하며 가볍게 시작하려합니다.
동기
누군가의 지원 없이 쿠버네티스를 학습하는 것은 꽤나 어렵습니다. 제 기준에서 그 첫번째 이유는 비용이었습니다. 졸업 후 용돈을 받기엔 눈치도 보이고, 모아둔 주식을 팔아 연명하는 와중이라 EKS나 스펙 좋은 PC를 구입하는 등의 지출이 고민되었죠. 이에 따라 k3s를 사용하여 단일 노드 환경에서 가벼운 쿠버네티스 클러스터를 구축해 실습을 진행하고는 했습니다. 하지만, 리소스 부족으로 Pod를 몇 개만 띄워도 금방 사용할 수 없는 상태가 되어버렸습니다. 그러던 중 제가 활동하고 있는 "클라우드 클럽" 동아리에서 HomeLab TF가 있다는 것을 알게 되었습니다.
위 스크린샷은 TF장님의 글을 캡쳐한 화면인데 이 문장이 꽤나 와닿았습니다. 홈서버로 쿠버네티스를 구축하는 과정을 제로부터 시작한다면 얻을 수 있을 인사이트에 대해 충분히 공감이 갔습니다. 또한, TF구성원 분들의 꽤나 깊이있는 과정을 눈팅하는 과정에서 HomeLab을 구축해보고자 마음먹었습니다.
목표
먼저 제가 하고자 하는 작업들을 정의해야 그에 따른 계획을 세울 수 있을 것 같습니다. 저는 다음과 같은 작업들을 HomeLab에서 진행하고자 합니다.
1. CI/CD 구성(GitLab, Jenkins, ArgoCD)
2. 모니터링(Prometheus, Grafana 등)
3. 서비스메쉬(Istio)
4. Application 서버 구동을 위한 Pod
5. 이것저것
위 작업들을 위해 필요한 최소사양에 대해 정리해보니 다음과 같았습니다.
0. 마스터 노드
마스터 노드에는 기본적으로 CPU 2코어, RAM 2GB의 최소 사양이 요구됩니다. 또한 HA를 보장하기 위해서는 3개의 마스터 노드를 구성해주어야 합니다. 하지만, 현재 갖고 있는 하드웨어 리소스의 적절한 분배를 위해 CPU 2코어 RAM 6~8GB의 단일 마스터 노드로 운영하겠습니다. HA는 추후 리소스가 확보되었을 때 추가하는 것으로 하고, 일단은 필수 클러스터 관리 기능만 구동되도록 조정하는 것으로 계획하겠습니다.
1. CI/CD 구성(GitLab, Jenkins, ArgoCD, Harbor)
GitLab은 그냥 설치하려면 CPU 4코어, RAM 4GB의 최소 사양이 요구된다고 합니다. 제 상황에서는 오버스펙입니다. 이에 따라 초기에는 GitLab Runner만 활용해 간소화하겠습니다.
Jenkins는 CPU 1코어, RAM 1GB의 최소 사양이 요구됩니다. 이에 따라 최소한의 파이프라인만 구축하고, 빌드 빈도와 구성 요소를 최적화하겠습니다.
ArgoCD는 비교적 경량이므로 CPU 1코어, RAM 1GB로 설치할 수 있습니다.
Harbor는 2CPU, RAM 4GB의 최소 사양이 요구된다고 합니다. 만약 과하다 싶으면 그냥 Docker hub로 진행할 예정입니다.
2. 모니터링(Prometheus, Grafana)
Prometheus는 CPU 1~2코어, RAM 2GB 정도로 기본 설정을 적용하여 시작하고, 데이터 보존 주기를 짧게 설정해 리소스를 절약하겠습니다. 다만, ELK 스택 또한 구동시키고 싶었기 때문에 이 부분은 차차 개선시켜 보겠습니다.
3. 서비스 메쉬(Istio)
Istio는 사이드카 패턴으로 Envoy를 각 Pod에 주입하기 때문에 메모리 및 사용량에 대해 가변적입니다. 사이드카 프록시는 초당 1000개의 요청당 약0.5 vCPU를 사용한다고 하는데 이게 어느 정도인지 가늠이 잘 안됩니다. Istio에 대해 깊은 이해가 없다보니 후에 실제 측정을 해봐야 할 것 같습니다. Istio 사이드카 컨테이너를 필요한 애플리케이션 Pod에만 추가하도록 설정하거나 하는 방법으로 리소스를 줄이거나 Ambient 모드 등을 통해 리소스를 줄이는 방법을 검토할 수 있을 것 같습니다.
4. Application 서버 구동을 위한 Pod
일단은 신경쓰지 않겠습니다. 상황에 따라 제가 진행 중인 사이드 프로젝트의 이미지를 띄울 수도, 혹은 테스트만을 위한 가벼운 이미지를 활용할 수도 있습니다.
서비스 | CPU | RAM |
GitLab (GitLab Runner) | 2코어 | 4GB |
Jenkins | 1코어 | 1GB |
ArgoCD | 1코어 | 1GB |
Harbor | 2코어 | 4GB |
Prometheus | 2코어 | 4GB |
Grafana | 1코어 | 2GB |
Istio | 2코어(?) | 4GB(?) |
이렇게 찾은 자료로 아주 대충 정리를 해보아도 CPU 12코어와 RAM 20GB가 필요합니다.(계산이 맞나 이게..?) 저는 이 모든 것을 염두해 두되 가장 가난하고 열악하게 구축하려고 합니다.(취업하고 추가 PC 구입 후 워커노드 늘리겠다는 마인드..) 이제 제 가용 자원에 대해서 정리해보겠습니다.
가용자원
곧 죽기 전 노트북
저에게는 험하게 다루다가 죽어버려도 상관없는 오래된 노트북이 하나 있습니다.
https://prod.danawa.com/info/?pcode=4837348
[다나와] 한성컴퓨터 XH57 BossMonster Hero456GT (SSD 120GB)
최저가 0원
prod.danawa.com
- CPU 2코어(4 논리 프로세서), RAM 8GB / 펜티엄 골드 G4560
- RAM 8GB
지금은 무려 단종된 상품이네요. 7~8년된 제품이기 때문에 사실 잘 굴러갈지 모르겠습니다. 해당 노트북은 추가 워커 노드로 활용하여 CI/CD, 모니터링 등 일부 작업을 오프로드할 예정입니다.
미니PC
https://ko.aliexpress.com/item/1005005234838380.html
인텔 N100 미니 Pc Ddr5 16gb - T8 N5095 N100 8gb 16gb 256gb 512gb Ddr4 Ddr5 Wifi5 - Aliexpress
Smarter Shopping, Better Living! Aliexpress.com
ko.aliexpress.com
- CPU 4코어(N5095)
- RAM 16GB
해당 링크에 있는 제품과 같은 제품이며 16GB 512GB 스펙으로 구입했습니다. (참고로 저는 당근 거래를 통해 구입했기 때문에 알리의 배송기간이나 구입절차에 대해서는 알지 못합니다.) 다른 미니PC를 구매하기 전까지는 2코어 8GB RAM VM 2개를 할당하여 하나는 마스터 노드, 하나는 워커 노드로 활용할 계획입니다. 우선은 이 구성으로 초기 환경을 구축해보겠습니다.
이런 열악한 스펙 속에서 취업 후 필요할 때 워커 노드를 추가하여 확장할 행복회로를 돌리며, TF와 구글링을 통해 여러 레퍼런스를 찾아보았습니다. 꽤나 다양한 사례가 있었습니다. 미니 PC 3대를 사용하거나, 미니 PC와 노트북을 혼합해 구성하는 사례도 있었고, 안쓰는 노트북 여러 대로 구성하거나, 라즈베리파이로 구성하는 분들도 있었습니다. 그러다가 클라우드 클럽 홈서버 TF장님이 “괜찮은 사양의 PC 하나가 있으면 Proxmox로 구성해 보는 것이 어떻겠는가”라는 조언을 해주신 게 떠올랐습니다.(아마 그랬던 것 같음......) 이에 따라 Proxmox에 대한 이해를 시작으로 다음 포스팅을 시작하려 합니다.
'HomeLab' 카테고리의 다른 글
[HomeLab] - 클러스터 관리환경 세팅 (0) | 2024.12.10 |
---|---|
[HomeLab] - k8s세팅 (1) | 2024.11.18 |
[HomeLab] - VM 생성 (1) | 2024.11.16 |
[HomeLab] - 라우터 추가 (0) | 2024.11.12 |
[HomeLab] - Proxmox 설정 (1) | 2024.11.06 |