블로그 불러오는 중...
문의 보내기
남겨주면 블로그 주인에게 바로 전달돼요.
현재 외부에 있는 홈 서버 환경을 조금 더 체계적이고 구조적으로 관리해 보고자 이 시리즈를 시작한다. 단순한 토이 프로젝트용 서버가 아니라, 고가용성(HA)을 갖춘 쿠버네티스(Kubernetes) 클러스터와 대규모 언어 모델(LLM) 서빙까지 고려한 멋진 구성을 한번 해보려 한다.
물리적인 PC 및 네트워크 장비 구성은 다음과 같다.
아래는 현재 구성되어 있는 인프라의 네트워크 토폴로지다.
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1e1e1e', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#333', 'lineColor': '#007aff', 'background': '#121212', 'clusterBkg': '#1a1d24', 'clusterBorder': '#333' }}}%%
graph TD
%% 상단 ISP 및 유니파이 장비 세팅
ISP(("🌐<br>ISP"))
USG["🖧<br>USG-Pro-4"]
SW["🖧<br>US 24 PoE 250W"]
ISP --- USG
USG --- SW
%% K8s 마스터 노드 그룹
subgraph K8S_Master ["🔹 Kubernetes Master Nodes"]
M1["🗄️<br>master-1"]
M2["🗄️<br>master-2"]
M3["🗄️<br>master-3"]
end
%% K8s 워커 노드 그룹
subgraph K8S_Worker ["🔹 Kubernetes Worker Nodes"]
W1["💻<br>worker-1"]
W2["💻<br>worker-2"]
W3["💻<br>worker-3"]
end
%% 인프라 및 기타 장비 그룹
subgraph Infra ["🔸 Infrastructure & Devices"]
BAS["🖥️<br>bastion"]
MAC["🔲<br>mac studio"]
CTRL["📟<br>controller"]
KT1["📡<br>KT router1"]
KT2["📡<br>KT router2"]
end
%% MAC 주소 기반 가상머신/기기 그룹
subgraph VMs["🔸 VMs (KVM/QEMU) & Others"]
C1["💻<br>00:e0:24:3b:02:85"]
end
%% 스위치에서 각 기기들로 연결
SW --- M1
SW --- M2
SW --- M3
SW --- W1
SW --- W2
SW --- W3
SW --- BAS
SW --- MAC
SW --- CTRL
SW --- KT1
SW --- KT2
SW --- C1
%% 색상 및 스타일 지정
classDef default fill:#222,stroke:#444,stroke-width:1px,color:#ddd;
classDef unifi fill:#2d3139,stroke:#007aff,stroke-width:2px,color:#fff;
classDef isp fill:none,stroke:none,color:#007aff,font-weight:bold;
class ISP isp;
class USG,SW unifi;
linkStyle default stroke:#007aff,stroke-width:2px;
위 환경을 바탕으로, 앞으로 하나씩 설정하고 구축해 나갈 계획들을 4개의 Phase로 나누어 정리해 보았다. 앞으로 각 Phase를 진행하며 겪는 트러블슈팅과 설정 과정들을 개별 게시글로 풀어갈 예정이다. 일부는 게시글을 쓰기 전에 검증하였고, 일부는 계획이므로 순서라던지 이런게 변경 될 수 있다.
핵심 인프라가 외부에 노출되는 것을 최소화하고, 안전한 원격 관리를 위한 기반 네트워크를 공사하는 단계.
쿠버네티스를 올리기 전, 물리 머신들과 가상 머신들의 OS 환경을 일치시키고 자동화 준비를 하는 단계.
해당 사항은, ansible 이라던지 IaC 구성을 통해 진행해 볼 예정이다.
수동 설치(
kubeadm) 대신 **Kubespray (Ansible 기반)**를 활용하여 여러 대의 노드를 한 번에 프로비저닝하고 쉽게 스케일 아웃할 수 있는 환경을 구축하는 단계.
inventory.ini를 구성하여 마스터 3대, 워커 3대(+VM 워커)의 롤(Role) 정의.all.yml, k8s-cluster.yml)에 kube-vip를 활성화. 마스터 노드 3대를 묶어줄 **단일 VIP (예: 192.168.20.10)**를 할당하여 API 서버 로드밸런싱 구현.ansible-playbook 명령어를 통해 원클릭으로 K8s 클러스터 전체 배포 및 검증.K8s 클러스터 위에 트래픽 진입점과 영구 스토리지를 구성하고, 그 기반 위에 소스코드 관리, CI/CD, 사내 위키 등 자체 데브옵스 생태계를 올리는 최종 단계.
ExternalName Service로 연결. (추후 GitLab CI 코드 리뷰 자동화나 사내 챗봇 등에 활용 예정)실제로 아는 후배와 형 덕분에, 여러 경험을 진행해 본다. 고 가용성 구성 및 여러가지의 고려를 진행한 뒤에 위 내용을 구성해 볼 생각이다.
좋은 의견이 있으면 댓글을 주시면 감사 하겠습니다.