家用住宅主机Linux K3s轻量集群部署AI服务
为什么用家用主机跑K3s加AI服务
很多人在考虑AI服务时第一时间想到云服务器,但云上GPU实例价格不菲。
如果你手头有一台闲置的普通家用电脑,装上Linux系统(推荐Ubuntu 22.04),再搭建轻量级Kubernetes——K3s,就能低成本运行推理类AI服务。
K3s相比完整K8s,内存占用低、安装简单,非常适合单机环境。
本文面向零基础用户,完成从系统准备到部署AI模型的全流程,并附高频问题解答和避坑点。
第一步:环境准备——硬件、系统与依赖
硬件最低要求
- CPU:至少2核,推荐4核以上(若使用纯CPU推理)
- 内存:至少4GB,推荐8GB或更多(AI模型加载需要)
- 磁盘:至少20GB空闲空间,用于Docker镜像和模型文件
- 网络:具备外网访问(安装过程中需拉取K3s和容器镜像)
系统准备
- 安装Ubuntu 22.04 LTS(其他Linux发行版步骤类似,注意包管理差异)
- 确保curl、wget、git已安装:
sudo apt update && sudo apt install -y curl wget git - 关闭防火墙或放行K3s所需端口(6443、10250等),简单起见可在内网环境关闭:
sudo ufw disable - 为Docker做铺垫(K3s使用containerd内建,但后期可能仍需docker-cli):
sudo apt install -y docker.io(可选)
第二步:安装K3s并初始化集群
K3s官方提供一键安装脚本,非常简洁。
在主节点(也就是你的家用主机)执行:
curl -sfL https://get.k3s.io | sh -
等待执行完毕,检查服务状态:
sudo systemctl status k3s
若显示active (running),说明K3s server已启动。
此时kubectl已自动配置好,用以下命令验证:
sudo kubectl get nodes
应该看到名为“k3s-xx”的节点处于Ready状态。
注意:单节点集群时,默认允许在Master上调度Pod,无需额外配置。
若你有多台闲置主机,可以在worker节点上执行同样的安装命令但加上server地址和token(在master上执行sudo cat /var/lib/rancher/k3s/server/node-token获取)。
本文以单节点为例。
第三步:在K3s上部署轻量AI推理服务(以Ollama为例)
Ollama是一个支持在本地运行多种开源大模型的工具,打包成容器后与K3s完美配合。
创建Ollama的Deployment和服务
编写一个名为ollama.yaml的文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama
labels:
app: ollama
spec:
replicas: 1
selector:
matchLabels:
app: ollama
template:
metadata:
labels:
app: ollama
spec:
containers:
- name: ollama
image: ollama/ollama:latest
ports:
- containerPort: 11434
volumeMounts:
- mountPath: /root/.ollama
name: ollama-data
volumes:
- name: ollama-data
hostPath:
path: /mnt/ollama-data # 修改为你的主机目录,需提前创建
type: DirectoryOrCreate
---
apiVersion: v1
kind: Service
metadata:
name: ollama
labels:
app: ollama
spec:
selector:
app: ollama
ports:
- port: 11434
targetPort: 11434
type: ClusterIP
如果想让外部访问,可将type改为NodePort并指定nodePort。家用环境建议保持ClusterIP,通过端口转发或内网代理访问。
部署:
sudo kubectl apply -f ollama.yaml
等待Pod running:
sudo kubectl get pods
当状态为Running后,测试服务是否正常:
sudo kubectl port-forward pod/ollama-xxx 11434:11434 &
curl http://localhost:11434
返回“Ollama is running”即表示部署成功。
拉取模型并调用
在Pod内部执行:
sudo kubectl exec -it deployment/ollama -- ollama pull llama3.2:1b
(可根据机器配置选择更小的模型如tinyllama)
拉取完成后,通过API调用:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:1b",
"prompt": "你好"
}'
你将看到模型生成的文字回复。
第四步:常见问题与避坑指南
内存不足导致Pod被OOMKill
AI模型推理时内存占用高,若你只部署了一个Ollama,建议至少8GB内存。
临时增加swap可以缓解:sudo fallocate -l 4G /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile。
但长期建议升级物理内存。
K3s安装后kubectl权限问题
K3s默认使用非root用户时需加sudo。
如果你不想每次输sudo,可以将kubeconfig复制到用户目录:
mkdir -p $HOME/.kube && sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
并修改server地址(127.0.0.1保持即可)。
部署AI服务后访问慢
家用主机CPU推理速度远低于GPU,建议选择1B~3B参数量的模型,并且设置并发数为1。
也可以考虑在BIOS中开启虚拟化,然后使用NVIDIA GPU?
但家用主板多数不支持GPU直通或没有独显,一般以CPU推理为主。
第五步:效果验证与日常维护
验证集群健康
sudo kubectl cluster-info
sudo kubectl top nodes
(需先安装metrics-server,可参考K3s官方插件)
验证AI服务可用性
使用Python或curl循环测试API响应时间,确保服务稳定。
日志查看
sudo kubectl logs -f deployment/ollama
如果遇到模型加载失败,检查拉取模型的磁盘空间及网络。
高频问题解答
Q:单节点K3s能支持生产环境吗?
A:本文适用家庭实验和轻量个人服务,不建议用于高可用生产。
Q:可以部署vLLM或Text Generation Inference吗?
A:可以,但vLLM对GPU依赖较强,纯CPU建议Ollama或llama.cpp。部署方法类似,只需修改镜像和端口。
Q:K3s与其他K8s兼容吗?
A:K3s是CNCF认证的,使用标准Kubernetes API,多数应用可以直接部署。
如果你遇到其他报错,重点检查网络连接、磁盘空间和端口冲突。
建议先按本文步骤完整执行,再根据实际硬件调整资源配置。