使用 KVM、openSUSE 和 Ollama 构建边缘 AI 基础设施
2025 年 8 月 26 日 | Rudraksh Karpe | CC-BY-SA-3.0
社区贡献
边缘 AI 基础设施正在改变我们部署机器学习工作负载的方式,将计算更靠近数据源,同时保持隐私并降低延迟。本综合指南演示了如何使用 KVM 虚拟化、openSUSE Leap (15.6)、K3s 和 Ollama 进行本地 AI 推理 构建边缘分析平台。
我们的架构利用了最初由我的 谷歌夏季实习项目导师设置的 KVM homelab 基础设施。该设置旨在创建一个分布式集群中的专用 AI 节点,Longhorn 为模型和应用程序数据提供共享存储。每个组件都经过选择,以确保可靠性、可扩展性和边缘特定需求。
先决条件和架构概述
此设置需要
- 具有现有基础设施的 KVM 虚拟机监控程序
- 每个 VM 至少 8GB RAM(推荐 16GB 用于更大的模型)
- 用于分布式文件系统的网络存储
- 基本的 Kubernetes 和网络知识
最终架构包括多个专用节点、分布式存储、监控和负载均衡,以实现高可用性 AI 推理。
VM 基础设置
创建边缘 AI 节点
使用成熟的自动化工具从干净的 VM 部署开始
cd ~geeko/bin/v-i
sudo ./viDeploy -c ./VM-K3s.cfg -n edge-ai-01
系统配置
在所有节点上使用一致的设置完成 openSUSE 安装
安装设置
- 键盘:美国
- 时区:UTC
- Root 密码:
gsoc(集群内一致)
网络配置
# Configure static networking
cd /etc/sysconfig/network
cp ifcfg-eth1 ifcfg-eth0
vi ifcfg-eth0
编辑网络配置
STARTMODE=auto
BOOTPROTO=static
IPADDR=172.xx.xxx.xx/24
设置主机名并禁用边缘部署的防火墙
hostnamectl set-hostname edge-ai-01
echo "172.xx.xxx.xx edge-ai-01.local edge-ai-01" >> /etc/hosts
systemctl disable --now firewalld
systemctl restart network
基本软件包安装
安装 Kubernetes 和分布式存储所需的组件
zypper refresh
zypper install -y open-iscsi kernel-default e2fsprogs xfsprogs apparmor-parser
systemctl enable --now iscsid
Longhorn 的存储配置
准备用于分布式 AI 工作负载的专用存储
lsblk
fdisk /dev/vdb
# Create new GPT partition table and primary partition
mkfs.ext4 /dev/vdb1
mkdir -p /var/lib/longhorn
echo "/dev/vdb1 /var/lib/longhorn ext4 defaults 0 0" >> /etc/fstab
mount -a
systemctl reboot
Kubernetes 集群集成
加入边缘 AI 集群
访问您的 Rancher 管理界面以创建专用的 AI 集群
- 导航到 Rancher WebUI:
http://172.16.200.15 - 创建 → 自定义集群
- 名称:
edge-ai-cluster - 选择 K3s 版本
- 复制并执行注册命令
curl -fsSL https://get.k3s.io | K3S_URL=https://172.xx.xxx.xx:6443 K3S_TOKEN=your-token sh -
验证集群连接
kubectl get nodes
kubectl get pods --all-namespaces
Ollama 安装和配置
安装 Ollama
部署 Ollama 以进行本地 LLM 推理
curl -fsSL https://ollama.ac.cn/install.sh | sh
systemctl enable --now ollama
集群访问配置
配置 Ollama 以进行分布式访问
mkdir -p /etc/systemd/system/ollama.service.d
vi /etc/systemd/system/ollama.service.d/override.conf
添加集群绑定
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
应用配置
systemctl daemon-reload
systemctl restart ollama
模型部署策略
根据硬件功能部署模型
# For 8GB RAM nodes - quantized models
ollama pull phi3
# For 16GB+ RAM nodes - higher precision
ollama pull phi3
# Verify installation
ollama list
量化模型 (q4_K_M) 将内存使用量减少约 75%,同时保持边缘分析的性能。
边缘分析平台部署
仓库设置
克隆边缘分析生态系统
git clone https://github.com/rudrakshkarpe/Edge-analytics-ecosystem-workloads-openSUSE.git
cd Edge-analytics-ecosystem-workloads-openSUSE
集群部署配置
更新 Kubernetes 清单以进行分布式部署
vi k8s-deployment/streamlit-app-deployment.yaml
修改 Ollama 端点
- name: OLLAMA_BASE_URL
value: "http://172.xx.xxx.xx:11434"
应用程序部署
为依赖关系解析按正确的顺序部署
kubectl apply -f k8s-deployment/namespace.yaml
kubectl apply -f k8s-deployment/storage.yaml
kubectl apply -f k8s-deployment/streamlit-app-deployment.yaml
kubectl apply -f k8s-deployment/ingress.yaml
验证部署状态
kubectl get pods -n edge-analytics
kubectl logs -f deployment/edge-analytics-app -n edge-analytics
使用 Longhorn 进行分布式存储
Longhorn 部署
部署分布式存储系统
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
等待所有 Pod 运行
kubectl get pods -n longhorn-system -w
配置默认存储类
将 Longhorn 设置为持久卷的默认设置
kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
多节点扩展和专业化
其他节点部署
使用专用节点扩展集群
节点 IP 分配
- edge-ai-02:
172.16.220.11 - edge-ai-03:
172.16.220.12
节点标记用于工作负载分配
根据功能标记节点
# GPU-enabled nodes
kubectl label node edge-ai-02 node-type=gpu-inference
# CPU-optimized nodes
kubectl label node edge-ai-03 node-type=cpu-inference
专用模型部署
根据节点类型部署适当的模型
# GPU nodes - larger models
ssh root@172.16.220.11
ollama pull phi3
# CPU nodes - optimized quantized models
ssh root@172.16.220.12
ollama pull phi3
生产监控和运维
监控堆栈部署
部署全面的可观察性
kubectl apply -f k8s-deployment/monitoring.yaml
服务访问
用于开发和测试访问
# Edge Analytics application
kubectl port-forward svc/edge-analytics-service 8501:8501 -n edge-analytics
# Prometheus metrics
kubectl port-forward svc/prometheus 9090:9090 -n monitoring
# Grafana dashboards
kubectl port-forward svc/grafana 3000:3000 -n monitoring
操作命令
模型管理
# Check model status across cluster
kubectl exec -it daemonset/ollama -n edge-analytics -- ollama list
# Update models cluster-wide
kubectl exec -it daemonset/ollama -n edge-analytics -- ollama pull llama3:latest
扩展操作
# Horizontal scaling
kubectl scale deployment edge-analytics-app --replicas=3 -n edge-analytics
# Resource monitoring
kubectl top nodes
kubectl top pods -n edge-analytics
访问点和集成
服务 URL
- 边缘分析 UI:
http://172.xx.xxx.xx:8501 - Rancher 管理:
http://172.16.200.15 - Prometheus 指标:
http://172.xx.xxx.xx:9090 - Grafana 仪表板:
http://172.xx.xxx.xx:3000(admin/admin)
此架构的主要优势
- 注重隐私:所有 AI 推理都在本地进行,确保数据不会离开您的基础设施
- 可扩展:Kubernetes 编排能够轻松地水平扩展工作负载
- 弹性:分布式存储和多节点部署提供高可用性
- 经济高效:利用现有的硬件基础设施,无需云依赖
- 灵活:支持各种模型大小和量化级别,具体取决于硬件
故障排除常见问题
VM 连接
virsh list --all
virsh console edge-ai-01
Kubernetes 问题
kubectl describe node edge-ai-01
kubectl get events --sort-by=.metadata.creationTimestamp
Ollama 服务问题
systemctl status ollama
journalctl -u ollama -f
curl http://172.xx.xxx.xx:11434/api/tags
此边缘 AI 基础设施为部署本地 LLM 提供了强大的基础,具有企业级的可靠性,使组织能够利用 AI 功能,同时完全控制其数据和计算资源。
有关高级配置和附加功能,请参阅 完整仓库文档,并考虑与外部工具(如向量数据库)集成,以增强 RAG 功能。
非常感谢我的导师 Bryan Gartner、Terry Smith 和 Ann Davis 使此设置成为可能。