K3s轻量集群住宅机器部署AI中转网关

用K3s在家庭服务器上搭建轻量集群并部署AI中转网关

如果你有一台闲置的住宅机器(比如旧台式机或NUC),想用它运行AI中转网关(负责统一管理OpenAI兼容接口的密钥、分流和计费),K3s是理想的选择。
K3s是Rancher推出的轻量级Kubernetes发行版,安装包不到100MB,启动仅需512MB内存,非常适合家庭服务器的资源限制。
本文从零开始,带你在Ubuntu/Debian上部署K3s集群,并用Helm安装一个开源AI中转网关(以new-api为例)。
全程只需几条命令,耐心看完都能成功。

为什么要用K3s部署AI中转网关

传统的AI中转网关(如One API、New API)通常用Docker Compose单机运行,但一旦需要多节点高可用、动态扩缩容或与其他微服务协同,K3s的集群管理优势就体现出来了。
K3s简化了Kubernetes的证书和网络组件,无需etcd(默认使用SQLite),非常适合单机或少量节点的场景。
在住宅机器上,用K3s部署AI中转网关可以让你:

  • 直接使用kubectl管理所有服务
  • 轻松升级、备份和迁移
  • 结合Ingress暴露服务,无需手动绑定端口

准备工作清单

  • 一台可以联网的住宅机器(本文假设IP为192.168.1.100,系统为Ubuntu 22.04
  • 用户有sudo权限,且内核版本不低于4.x
  • 确保已禁用swap(sudo swapoff -a并在/etc/fstab注释swap行)
  • 建议安装curlwgetgit等基础工具(sudo apt update && sudo apt install -y curl wget git
  • 如果需要外网访问,需在路由器上做端口转发或使用内网穿透(如frp),本文不展开。

四步搭建K3s集群(单节点为例)

第一步:安装K3s

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh -

加上--disable traefik是避免默认安装的Traefik与后面AI网关的Ingress冲突。
如果不需要也不影响。
安装成功后,K3s会自动启动,并设置kubectl配置文件。

第二步:检查集群状态

sudo k3s kubectl get node

看到状态为Ready即表示正常。
为后续操作方便,可将kubeconfig复制到当前用户:

mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
export KUBECONFIG=~/.kube/config

第三步:安装Helm(管理Kubernetes包)

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

第四步:安装Nginx Ingress Controller(用于外部访问)
我们不用K3s自带的Traefik,安装社区标准的nginx-ingress:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
kubectl create namespace ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --set controller.hostNetwork=true

hostNetwork=true直接使用宿主机网络,方便家庭网络环境。
稍后等待Pod运行:

kubectl -n ingress-nginx wait --for=condition=ready pod --all --timeout=120s

用Helm部署AI中转网关(以new-api为例)

这里采用new-api开源项目,它支持多API密钥池、中继和统计。
我们通过Helm简化部署。

第一步:添加Helm仓库(假设new-api已有官方Helm chart,若无可用values直接创建Deployment) 为通用起见,我们手动创建Deployment文件。
创建一个目录new-api,编写如下内容:

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: new-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: new-api
  template:
    metadata:
      labels:
        app: new-api
    spec:
      containers:
      - name: new-api
        image: calciumion/new-api:latest
        ports:
        - containerPort: 3000
        env:
        - name: SQLITE_PATH
          value: /data/new-api.db
        volumeMounts:
        - mountPath: /data
          name: data
      volumes:
      - name: data
        hostPath:
          path: /var/lib/new-api
          type: DirectoryOrCreate

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: new-api-svc
spec:
  type: ClusterIP
  ports:
  - port: 3000
    targetPort: 3000
  selector:
    app: new-api

ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: new-api-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: ""  # 留空则会匹配所有Host,也可填写域名如ai.yourhome.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: new-api-svc
            port:
              number: 3000

第二步:应用资源

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml

第三步:等待Pod运行并暴露端口

kubectl get pod -w

服务运行后,Ingress已将3000端口映射到宿主机80端口(因为nginx-ingress的hostNetwork)。
现在你可以通过http://192.168.1.100访问AI中转网关的Web界面。

常见部署问题与避坑

  1. 端口冲突:宿主机80端口可能被其他服务占用。解决方法:修改Ingress中nginx-ingress的controller端口,使用大于1024的端口,例如:--set controller.service.nodePorts.http=30080
  2. K3s权限问题:如果kubectl报错“Forbidden”,重新复制kubeconfig或直接使用sudo k3s kubectl
  3. AI中转网关数据库持久化:上面使用hostPath存储SQLite,容易丢失。建议挂载PVC或外挂NAS目录。
  4. 内网穿透:如需公网访问,参考frp或Cloudflare Tunnel,注意修改Ingress的域名。

验证服务是否正常

通过浏览器访问http://192.168.1.100,看到new-api登录页面即成功。
登录后添加一个AI API密钥(如OpenAI key),然后调用测试:

curl http://192.168.1.100/v1/chat/completions \
  -H "Authorization: Bearer 你的new-api密钥" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "hello"}]}'

返回正常JSON说明网关转发成功。

常见问题解答

Q1:K3s推荐配置多低?
A:单节点可运行在1核1GB的云服务器或家庭设备上,建议最低2核2GB以获得稳定性能。

Q2:AI中转网关有哪些推荐?
A:除new-api外,One API、GoProxy等也支持Kubernetes部署,可根据功能选择。

Q3:如何升级AI中转网关版本?
A:修改deployment.yaml中的镜像tag,执行kubectl apply -f deployment.yaml,K3s会自动滚动更新。

Q4:住宅机器电费和网络稳定性怎么办?
A:建议使用低功耗设备(如树莓派4B或J4125软路由),并配置UPS和定时重启脚本。若服务重要,可租用泽御云等正规IDC提供的云服务器(持有增值电信业务经营许可证,B1-20261342)作为生产环境。

分享到:
上一篇
Traefik反向代理统一容器多站点入口教程
下一篇
K8s DRA异构GPU调度多模型推理集群搭建指南
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意