데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      멀티모달 AI 챗봇 스터디를 위한 K3S 기반 LLMOps 환경 구축

      sysmoon 25.06.26
      411 2 0
      DEVOTEE 요약
      본 블로그는 2025 Openlab의 멀티모달 기반 AI 챗봇 기술 연구를 위한 스터디 중 하나로, MiniPC(AMD Ryzen 7 7840HS)를 이용해 경량화된 Kubernetes 배포판(k3s) 환경을 구성하는 과정을 다룹니다. k3s는 설치 및 관리가 간편하며 저자원 환경에 적합하지만, 대규모 클러스터나 고급 기능 활용에는 한계가 있으므로, 간단하게 MiniPC 한 대에서 LLMOps와 다양한 AI 서비스의 개발·테스트 환경을 구축합니다. 주요 구성 요소로는 Istio, Calico, Prometheus+Grafana, 그리고 LLMOps 워크로드 등이 있으며, 소규모 팀 또는 개인 개발 환경에 최적화된 솔루션을 제공합니다.
      DEVOTEE 추천 블로그

      소개

      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 를 이용해서 구축합니다.


      K3S 주요 기능

      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].


      K3S 장점

      장점

      설명

      경량화 및 저자원

      표준 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].


      K3S 단점

      단점

      설명

      일부 고급 기능 미지원

      클라우드 공급자 연동, 일부 스토리지 드라이버, 알파/익스페리멘탈 기능 등은 기본 미포함[7][1][8][5].

      분산 데이터베이스 부재

      기본적으로 etcd 분산 저장소가 내장되어 있지 않아, 대규모/고가용성 환경에 한계[9][8].

      확장성 제한

      100노드 이하, 소규모 환경에 최적화되어 대규모 엔터프라이즈 환경에는 부적합[1][9][6].

      커스터마이징 한계

      일부 플러그인/드라이버 제거로 인한 유연성 저하, 복잡한 커스터마이징에는 제약[9][7][8].

      보안 및 성숙도

      K8s 대비 상대적으로 짧은 개발 역사와 작은 커뮤니티, 일부 보안 도구 미포함[7].


      AMD Ryzen 7 7840HS 미니PC에서 k3s 기반 쿠버네티스 환경 구축

      1. 개요 및 추천 이유

      • k3s는 경량화된 Kubernetes 배포판으로, 단일 미니PC 환경에서 메모리와 리소스 소모를 최소화하며 손쉽게 쿠버네티스 클러스터를 구축할 수 있습니다.

      • AMD Ryzen 7 7840HS는 충분한 CPU 성능과 메모리 확장성(32GB 이상 권장)을 제공하여, 개발·테스트 목적의 클러스터 운영에 적합합니다.

      2. k3s 설치 및 초기 구성

      2.1 기존 클러스터 제거 (필요시)

      /usr/local/bin/k3s-uninstall.sh

      2.2 k3s 서버(마스터) 설치

      • Flannel 비활성화(네트워크 플러그인 직접 지정 목적)

      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=none

      2.3 kubeconfig 확인

      sudo cat /etc/rancher/k3s/k3s.yaml

      k3s.yaml 파일을 ~/.kube/config 저장하고, ~./.zshrc 에서 KUBECONFIG 환경변수로 관리 가능합니다.

      export KUBECONFIG="$HOME/.kube/config

      3. 네트워크 플러그인(CNI) 설치

      k3s 내장된 flannel 대신 Calico 설치합니다.

      • Calico(고성능 네트워킹 및 정책 지원)

      kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

      4. 하드웨어 및 리소스 최적화

      4.1 메모리 예약

      k3s 에서 사용할 메모리 예약을 설정 가능합니다.

      sudo vim /etc/systemd/system/k3s.service
      
      [Service]
      Environment="K3S_KUBELET_ARGS=--kube-reserved=memory=512Mi --system-reserved=memory=512Mi"

      4.2 스토리지

      k3s 설치하면 기본적으로 Storage Class 로 local-path provisioner 를 설치합니다.

      그래서 따로 Storage Provisioner 를 설치할 필요는 없습니다.

      k get sc
      local-path   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  36d

      5. 개발 환경 구성

      5.1 Ingress Controller

      Ingress Controller 를 위해 Trefik or Nginx 를 사용할 수 있습니다.

      저의 경우 Istio Ingress 를 설치하여 진행하는걸 선호합니다.

      5.3 모니터링 스택 (Prometheus + Grafana)

      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

      6 네트워크 성능 최적화

      호환성 Flannel 대신 Calico 사용 권장합니다.

      7. 예상 성능 (Ryzen 7 7840HS, 32GB RAM 기준)

      구분

      예상 파드 수

      비고

      동시 파드

      20~30개

      메모리 32GB 기준

      웹 애플리케이션

      10~15개

      표준 Node.js, Spring 등

      마이크로서비스

      8~12개

      컨테이너별 512Mi 기준

      데이터베이스

      2~3개

      PostgreSQL, MySQL 등

      8. 운영상 주의사항

      현재 제가 사용중인 MiniPC 주요스펙입니다.

      하드웨어 업그레이드를 했습니다.

      • 32GB RAM 이상 권장, NVMe SSD 사용 필수 (8GB RAM -> 32GB RAM, SSD -> NVMe)

      • etcd(내장 DB) 백업 주기적 수행

      • 모니터링 스택으로 리소스 사용량 상시 체크

      9. 결론

      이 구성을 통해 미니PC 한 대로도 소규모 팀, 개인 개발 및 테스트 환경에 최적화된 쿠버네티스 환경을 안정적으로 구축할 수 있습니다.

      운영 자동화, CI/CD, 실시간 모니터링까지 모두 지원하므로, 현대적 개발 워크플로우를 손쉽게 실현할 수 있습니다.


      로드맵

      k3s 클러스터 위에 AI 서비스 개발을 위한 LLMOps 주요 워크로드를 올릴 계획입니다.


      LLMOps

      • MetalLB

      • Cert Manager (/w Let's Encrypt)

      • Istio

      • Milvus

      • n8n

      • Dify

      • Parser Server (for Multi-Modality)

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      sysmoon 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기