23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
2025 Openlab 스터디 일환으로 진행 예정인 "[AI 기술 개발] 04. 멀티모달 기반 AI 챗봇 기술 연구&개발" 스터디를 위해 AI 서비스 연구/개발을 위해 LLMOps 플랫폼 환경을 구성합니다.
k3s는 경량화, 간편한 설치, 저자원 환경 지원, 핵심 Kubernetes 기능 유지 등으로 엣지, IoT, 개발·테스트 환경에 매우 적합합니다.
하지만 대규모 클러스터, 고급 기능, 강력한 확장성 및 커스터마이징이 필요한 엔터프라이즈 환경에는 제한이 있을 수 있습니다.
사용 목적과 환경에 따라 k3s와 표준 Kubernetes(k8s) 중 적절히 선택하는 것이 중요합니다.
저의 경우 MiniPC 환경(AMD Ryzen 7 7840HS)을 LLMOps 를 위한 개발환경으로 구축하여 다양한 AI 서비스의 주요기능을 검증하기 위한 PoC 목적으로 활용할 계획입니다.
(하단 RoadMap 참고)
여러대의 MiniPC를 클러스터로 묶어서 구축해도 되지만, 여기서는 심플하게 오직 1개의 MiniPC 를 이용해서 구축합니다.
1. 경량화 및 단일 바이너리 구조
k3s는 약 100MB 이하의 단일 바이너리로 제공되어 설치와 관리가 매우 간편합니다. 복잡한 설치 과정 없이 한 줄 명령어로 클러스터를 구성할 수 있습니다[1][2][3].
2. 다양한 아키텍처 지원
x86_64, ARM, ARM64 등 다양한 하드웨어에서 동작하며, Raspberry Pi 같은 소형 디바이스나 IoT 환경에도 적합합니다[1][2][4].
3. 내장 데이터베이스 및 외부 연동
기본적으로 SQLite를 데이터 저장소로 사용하며, 필요에 따라 MySQL, PostgreSQL, etcd 등 외부 데이터베이스와 연동할 수 있습니다[1][2][4].
4. 필수 구성요소 내장
containerd(컨테이너 런타임), Flannel(네트워크), Traefik(인그레스 컨트롤러), CoreDNS 등 Kubernetes 운영에 필요한 주요 컴포넌트가 기본 포함되어 있습니다[1][4][5].
5. CNI, CSI, CRI 표준 지원
네트워크(CNI), 스토리지(CSI), 컨테이너 런타임(CRI) 등 Kubernetes 확장 표준을 지원하여 확장성과 호환성을 보장합니다[1].
6. 고가용성(HA) 지원
외부 데이터베이스 연동 시 다중 서버 구성이 가능해 고가용성 환경을 구축할 수 있습니다[1].
7. 간소화된 관리 및 CLI 호환
kubectl 등 표준 Kubernetes CLI 도구와 완벽하게 호환되며, 운영 및 유지보수가 쉽습니다[1][4].
장점 | 설명 |
|---|---|
경량화 및 저자원 | 표준 Kubernetes 대비 메모리·CPU 사용량이 50% 이하로, 저사양 환경 및 엣지·IoT에 최적화[4][6][2][5]. |
설치·운영 간편 | 단일 바이너리 및 한 줄 설치, 복잡한 의존성 최소화[1][3][2][5]. |
다양한 환경 지원 | x86, ARM 등 다양한 아키텍처와 OS 지원, 싱글노드·멀티노드 모두 가능[1][4][5]. |
핵심 기능 유지 | CNCF 인증 공식 배포판으로, 대부분의 Kubernetes 기능과 호환[4][1][5]. |
빠른 시작 및 재시작 | 클러스터 생성·업데이트·재시작이 빠르고 유연함[5]. |
내장 서비스 제공 | containerd, Traefik, Flannel 등 주요 서비스 기본 내장[4][5]. |
저렴한 관리 비용 | 작은 규모 환경에서 유지보수 및 업그레이드가 쉽고 비용이 적음[1][4]. |
단점 | 설명 |
|---|---|
일부 고급 기능 미지원 | 클라우드 공급자 연동, 일부 스토리지 드라이버, 알파/익스페리멘탈 기능 등은 기본 미포함[7][1][8][5]. |
분산 데이터베이스 부재 | 기본적으로 etcd 분산 저장소가 내장되어 있지 않아, 대규모/고가용성 환경에 한계[9][8]. |
확장성 제한 | 100노드 이하, 소규모 환경에 최적화되어 대규모 엔터프라이즈 환경에는 부적합[1][9][6]. |
커스터마이징 한계 | 일부 플러그인/드라이버 제거로 인한 유연성 저하, 복잡한 커스터마이징에는 제약[9][7][8]. |
보안 및 성숙도 | K8s 대비 상대적으로 짧은 개발 역사와 작은 커뮤니티, 일부 보안 도구 미포함[7]. |
k3s는 경량화된 Kubernetes 배포판으로, 단일 미니PC 환경에서 메모리와 리소스 소모를 최소화하며 손쉽게 쿠버네티스 클러스터를 구축할 수 있습니다.
AMD Ryzen 7 7840HS는 충분한 CPU 성능과 메모리 확장성(32GB 이상 권장)을 제공하여, 개발·테스트 목적의 클러스터 운영에 적합합니다.
/usr/local/bin/k3s-uninstall.shFlannel 비활성화(네트워크 플러그인 직접 지정 목적)
k3s를 설치할 때 --flannel-backend=none 옵션을 사용하는 이유는,
기본 내장된 Flannel 네트워크 플러그인을 비활성화하고 Istio와 같은 외부 CNI(예: Calico, Cilium 등) 기반 네트워크 솔루션과의 호환성을 확보하기 위함입니다.
k3s 내장된 Ingress(Trafik) 대신 Istio Ingress 를 구성하고, Service Mesh 활용하고 싶으신 분들은 아래 옵션이 필요합니다.
curl -sfL https://get.k3s.io | sh -s - --flannel-backend=nonesudo cat /etc/rancher/k3s/k3s.yamlk3s.yaml 파일을 ~/.kube/config 저장하고, ~./.zshrc 에서 KUBECONFIG 환경변수로 관리 가능합니다.
export KUBECONFIG="$HOME/.kube/configk3s 내장된 flannel 대신 Calico 설치합니다.
Calico(고성능 네트워킹 및 정책 지원)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlk3s 에서 사용할 메모리 예약을 설정 가능합니다.
sudo vim /etc/systemd/system/k3s.service
[Service]
Environment="K3S_KUBELET_ARGS=--kube-reserved=memory=512Mi --system-reserved=memory=512Mi"k3s 설치하면 기본적으로 Storage Class 로 local-path provisioner 를 설치합니다.
그래서 따로 Storage Provisioner 를 설치할 필요는 없습니다.
k get sc
local-path rancher.io/local-path Delete WaitForFirstConsumer false 36dIngress Controller 를 위해 Trefik or Nginx 를 사용할 수 있습니다.
저의 경우 Istio Ingress 를 설치하여 진행하는걸 선호합니다.
Prometheus + Grafana Stack 또한 자동으로 설치가 되어있습니다.
따라서 필요한 Node Exporter 외에 필요한 Exporter 를 설치하여 Grafana 통해 주요 메트릭 정보 확인 가능합니다.
kubectl get all -n monitoring
NAME READY STATUS RESTARTS AGE
pod/alertmanager-kube-prometheus-stack-alertmanager-0 2/2 Running 0 2d6h
pod/kube-prometheus-stack-grafana-0 3/3 Running 0 2d6h
pod/kube-prometheus-stack-kube-state-metrics-84f455cc65-fmggp 1/1 Running 0 2d6h
pod/kube-prometheus-stack-operator-855d65d7bb-pcgkc 1/1 Running 0 2d6h
pod/kube-prometheus-stack-prometheus-node-exporter-4hmq2 1/1 Running 0 2d6h
pod/prometheus-kube-prometheus-stack-prometheus-0 2/2 Running 0 2d6h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 2d6h
service/kube-prometheus-stack-alertmanager ClusterIP 10.43.32.83 <none> 9093/TCP,8080/TCP 2d6h
service/kube-prometheus-stack-grafana ClusterIP 10.43.6.27 <none> 80/TCP 2d6h
service/kube-prometheus-stack-grafana-headless ClusterIP None <none> 9094/TCP 2d6h
service/kube-prometheus-stack-kube-state-metrics ClusterIP 10.43.23.5 <none> 8080/TCP 2d6h
service/kube-prometheus-stack-operator ClusterIP 10.43.120.125 <none> 443/TCP 2d6h
service/kube-prometheus-stack-prometheus ClusterIP 10.43.38.183 <none> 9090/TCP,8080/TCP 2d6h
service/kube-prometheus-stack-prometheus-node-exporter ClusterIP 10.43.160.42 <none> 9100/TCP 2d6h
service/prometheus-operated ClusterIP None <none> 9090/TCP 2d6h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-prometheus-stack-prometheus-node-exporter 1 1 1 1 1 kubernetes.io/os=linux 2d6h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/kube-prometheus-stack-kube-state-metrics 1/1 1 1 2d6h
deployment.apps/kube-prometheus-stack-operator 1/1 1 1 2d6h
NAME DESIRED CURRENT READY AGE
replicaset.apps/kube-prometheus-stack-kube-state-metrics-84f455cc65 1 1 1 2d6h
replicaset.apps/kube-prometheus-stack-operator-855d65d7bb 1 1 1 2d6h
NAME READY AGE
statefulset.apps/alertmanager-kube-prometheus-stack-alertmanager 1/1 2d6h
statefulset.apps/kube-prometheus-stack-grafana 1/1 2d6h
statefulset.apps/prometheus-kube-prometheus-stack-prometheus 1/1 2d6h호환성 Flannel 대신 Calico 사용 권장합니다.
구분 | 예상 파드 수 | 비고 |
|---|---|---|
동시 파드 | 20~30개 | 메모리 32GB 기준 |
웹 애플리케이션 | 10~15개 | 표준 Node.js, Spring 등 |
마이크로서비스 | 8~12개 | 컨테이너별 512Mi 기준 |
데이터베이스 | 2~3개 | PostgreSQL, MySQL 등 |
현재 제가 사용중인 MiniPC 주요스펙입니다.
하드웨어 업그레이드를 했습니다.
32GB RAM 이상 권장, NVMe SSD 사용 필수 (8GB RAM -> 32GB RAM, SSD -> NVMe)
etcd(내장 DB) 백업 주기적 수행
모니터링 스택으로 리소스 사용량 상시 체크
이 구성을 통해 미니PC 한 대로도 소규모 팀, 개인 개발 및 테스트 환경에 최적화된 쿠버네티스 환경을 안정적으로 구축할 수 있습니다.
운영 자동화, CI/CD, 실시간 모니터링까지 모두 지원하므로, 현대적 개발 워크플로우를 손쉽게 실현할 수 있습니다.
k3s 클러스터 위에 AI 서비스 개발을 위한 LLMOps 주요 워크로드를 올릴 계획입니다.
LLMOps
MetalLB
Cert Manager (/w Let's Encrypt)
Istio
Milvus
n8n
Dify
Parser Server (for Multi-Modality)
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.