5机器家庭实验室集群指南 | AI生成和翻译

首页 2026.07

问题: 如何将 4 台笔记本电脑 + 1 台 RTX 4070 工作站改造成家庭实验室,用于 Kubernetes 集群、分布式 Docker 构建、编译农场和机器学习工作负载的实验?

回答:

把这 5 台机器当作一个集群来对待,而不是 5 台独立的电脑。有效的架构如下:

lzw@192.168.x.x (RTX 4070, 62GB)  → 控制平面 + GPU 节点 + 构建服务器
laptop-1..4                        → 工作节点 / 混沌测试目标
MacBook Air M2                     → 你的终端,永远不作为服务器

第 0 层:先搭扁平 SSH 网络

所有其他功能都建立在免密码 SSH 之上。只需做一次:

# 在 Air 上(你的控制台)
ssh-keygen -t ed25519 -f ~/.ssh/homelab
for h in node1 node2 node3 node4 gpu; do
  ssh-copy-id -i ~/.ssh/homelab.pub lzw@$h
done

~/.ssh/config 文件:

Host gpu
  HostName <IP_ADDRESS>
  User lzw
Host node*
  User lzw
  IdentityFile ~/.ssh/homelab

强烈建议在所有 5 台机器上安装 Tailscale——你将获得一个稳定的网状网络(即使某台笔记本被带到咖啡馆也能工作),MagicDNS 名称(从任何地方都可以 ssh gpu),并且还能让 AMD 云主机就像在本地局域网中一样可达。免费套餐支持 100 台设备。

老旧笔记本:安装 Ubuntu Server(不带桌面——节省约 1GB 内存),设置 systemctl set-default multi-user.target,并在 /etc/systemd/logind.conf 中设置 HandleLidSwitch=ignore,这样合上盖子也不会让节点休眠。笔记本其实是很棒的家庭实验室节点:自带 UPS(电池)、功耗低。

第 1 层:Kubernetes —— 使用 k3s,而不是 kubeadm

对于学习和实验,k3s 是正确选择:单个二进制文件,约 512MB 内存占用,真正的 CNCF 认证 Kubernetes。

# 在 4070 主机上(控制平面)
curl -sfL https://get.k3s.io | sh -
sudo cat /var/lib/rancher/k3s/server/node-token   # 复制此令牌

# 在每台笔记本上
curl -sfL https://get.k3s.io | K3S_URL=https://gpu:6443 \
  K3S_TOKEN=<SECRET> sh -

# 在 Air 上
scp gpu:/etc/rancher/k3s/k3s.yaml ~/.kube/config
sed -i '' 's/127.0.0.1/gpu/' ~/.kube/config
kubectl get nodes   # 5 节点集群

然后通过 NVIDIA 设备插件使 GPU 在集群中可调度:

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/main/deployments/static/nvidia-device-plugin.yml

现在 Pod 可以请求 nvidia.com/gpu: 1 并落在 4070 节点上。这正是生产级 ML 平台调度 GPU 任务的方式——你在家庭规模下学习真实的东西。

真正能让你学到东西的实验:

第 2 层:分布式 Docker 构建

Docker Buildx 可以通过 SSH 将构建任务分发到多台机器上:

docker buildx create --name farm \
  --node gpu   ssh://lzw@gpu \
  --node node1 ssh://lzw@node1 --append \
  --node node2 ssh://lzw@node2 --append

# 跨构建农场进行多架构构建
docker buildx build --builder farm \
  --platform linux/amd64,linux/arm64 -t myimage .

同时在 4070 主机上运行一个本地镜像仓库,避免镜像往返 Docker Hub:

docker run -d -p 5000:5000 --restart=always --name registry registry:2
# 推送:docker tag myimage gpu:5000/myimage && docker push gpu:5000/myimage

通过每个节点上的 /etc/rancher/k3s/registries.yaml 让 k3s 指向该仓库。你的构建→推送→部署循环将从几分钟缩短到几秒。

第 3 层:编译农场

对于大型 C/C++ 构建(Linux 内核、LLVM——与你的内核内部笔记相关):

# 在所有 Linux 节点上安装 distcc
sudo apt install distcc
# 在工作节点上:distccd --daemon --allow 192.168.x.0/24

# 在负责构建的机器上
export DISTCC_HOSTS="gpu/16 node1/8 node2/8 node3/8"
make -j40 CC="distcc gcc"

原本在一台笔记本上需要 25 分钟的内核编译,使用编译农场后大约 6 分钟就能完成。在 distcc 前面加上 ccache 可以实现近乎即时的重编译。对于 Rust,可以使用相同拓扑的 sccache 进行分布式编译。

第 4 层:ML 特定用途

实际操作顺序

第 1 周:SSH 网状网络 + Tailscale + 笔记本上安装 Ubuntu Server。第 2 周:k3s 集群 + GPU 设备插件 + 本地镜像仓库。第 3 周:在集群中部署 vLLM,故意制造故障。之后根据需要添加 Ray 和 distcc。总新增成本:¥0 —— 这只是对你已有硬件的纯利用,而 k8s/分布式系统技能可以直接迁移到任何 AI 基础设施岗位或你未来创业的服务栈中。

一条警告:不要过度工程化。这个集群的存在是为了教你认识故障模式,并为你提供一个构建/服务的基础平台——如果你发现自己把晚上的时间花在美化 Helm Chart 而不是做实验上,那就属于你自己规则中的“税”类目了。


AI生成和翻译,但整理分享仍需精力。如果觉得有帮助,欢迎 捐助支持。 微信:@lzwjavaWeChat QR · X: @lzwjava · 打个招呼 👋

返回 捐助