네트워크 구축 및 벤치마킹
이후 이더넷 스위치와 케이블을 구매하여 두 대의 라즈베리 파이로 네트워크를 확장했습니다. 두 파이 모두 wlan0과 eth0에 연결되도록 설정하고, iperf3를 사용하여 두 인터페이스 간 트래픽 벤치마킹을 수행했습니다. 한 대의 파이를 NAT 게이트웨이로 설정하는 목표는 미완료되었으나, 모뎀, 라우터, 스위치의 작동 방식에 대해 흥미로운 학습 기회가 되었습니다.
쿠버네티스 클러스터 설치
기본 네트워크 구성이 완료된 후, kubeadm을 사용하여 쿠버네티스 클러스터를 설치했습니다. 쿠버네티스 문서의 kubeadm 가이드는 매우 명확하고 따르기 쉬웠습니다. 클러스터 내 모든 통신이 wlan0 대신 스위치를 통해 eth0 IP 주소로 이루어지도록 apiserver의 advertiseUrl을 구성했습니다. 클러스터가 가동된 후, kubeconfig를 라즈베리 파이에서 노트북으로 scp하여 kubectl을 성공적으로 사용할 수 있었습니다.
자동화 및 스토리지 확장
수동으로 모든 과정을 수행한 후, Ansible 플레이북을 작성하여 모든 전제 조건을 설치하고 kubeadm으로 클러스터를 가동하는 과정을 자동화했습니다. 관련 플레이북과 스크립트는 sreeram-venkitesh/homelab에서 확인할 수 있습니다. 기본 클러스터가 실행된 후, 플레이북을 사용하여 여러 번 클러스터를 해체하고 재구축하며 안정화했습니다. 또한, 워커 노드 라즈베리 파이에 2TB SSD 드라이브를 마운트하고 local-path-provisioner를 설치하여 SSD 내 서브디렉토리를 PVC(Persistent Volume Claim) 볼륨으로 활용할 수 있도록 구성했습니다. 이 기능 또한 Ansible 플레이북에 추가되었습니다.
사용 기술
-
Raspberry Pi 4
-
Ubuntu Server 24.04
-
Nginx
-
iperf3
-
DigitalOcean Droplet
-
Kubernetes
-
kubeadm
-
Ansible
-
local-path-provisioner
-
SSD