在家庭实验室中能容纳多少生产?
Source: Dev.to
原始发布于 2026年3月7日。
介绍
我的名字是 Patrick,我是一名高级 HPC DevOps 和 AWS 云工程师。我的日常工作围绕构建和运营基础设施平台,使开发者和研究人员能够运行复杂的工作负载。
在实践中,这意味着构建为 CI 环境、GPU 流水线和自动化工作流提供动力的 Kubernetes 平台。这些系统集成了以下技术:
- Kubernetes
- Argo CD
- Harbor 注册表
- Apache Airflow
- 使用 Karpenter 的自动伸缩计算基础设施
- 基于 Grafana 生态系统的可观测性平台
所有这些工作的共同主题是 自动化。我的个人工程范式可以用一句话概括:
要么自动化,要么什么都不是。
如果一个系统不能自动重建、可靠复现,并且在无需持续人工干预的情况下运行,那么它就算未完成。这一理念并非源自理论,而是源自挫败感。
大多数家庭实验室的问题
许多工程师把家庭实验室当作游乐场:一个实验可以快速进行、配置可以手动调节、问题可以通过一次性修复解决的地方。我在职业生涯早期也犯了同样的错误。
我的第一个个人基础设施项目之一是基于 Docker Swarm 的小型家庭云。它运行 OwnCloud 进行文件存储,运行 OpenVPN 提供远程访问。理论上,它应该通过让我掌控自己的数据来让生活更轻松。实际上,我花在修复系统上的时间比使用它的时间还多。每次出现故障,我都得重新弄清系统是如何配置的。容器被手动更改,配置文件出现分歧,环境逐渐偏离任何可复现的状态。不是我拥有基础设施,而是基础设施拥有了我。这段经历从根本上改变了我今天对系统的处理方式。
基础设施应自给自足
在生产环境中,我们 不 接受脆弱的系统。基础设施必须是:
- 可复现的
- 自动化的
- 可观测的
- 可审计的
- 可扩展的
当出现故障时,目标 不是 手动修复;目标是 自动重建。同样的原则也应适用于个人基础设施。如果我的整个家庭实验室明天消失,恢复应该很简单:
- 购买一台新机器
- 安装 Docker
- 运行引导脚本
从此系统应自行重建:
- Kubernetes 集群自动启动。
- Argo CD 自动安装。
- Argo CD 随后调和自身配置并部署平台中的所有应用。
- 所有配置都存放在 Git 仓库中。
无需手动配置。
没有隐藏状态。
没有神秘基础设施。
只有代码。
为什么选择 Kubernetes?
我的热情在于构建能够在正确设计后自行运行的系统。能够实现这一理念的技术自然令我着迷。以下是我最喜欢的一些:
- Kubernetes
- Argo CD 与 GitOps 工作流
- 基础设施即代码(IaC)
- 基于 Grafana 生态系统的可观测性平台
这些工具让复杂的分布式系统能够以可预测的方式运行。基础设施工程中最令人满足的时刻之一,就是看到系统自行配置。例如,先部署一个原生的 Argo CD 实例,然后再应用一个管理 Argo CD 本身的 Argo CD 应用。几分钟内,平台就开始自行变更配置并自动部署新服务。
可观测性为这种体验增添了另一层维度。仪表盘、日志、指标和追踪把分布式系统转化为可理解的对象。突然之间,整个平台变得可见且可度量——你可以看到系统在“呼吸”。
本项目的目标
本博客记录了一项实验:
在家庭实验室中能容纳多少生产级别的基础设施?
环境被有意限制。整个平台运行在单台机器上:
- 配备 Apple M4 芯片和 16 GB 内存的 Mac Mini
该项目不依赖云基础设施,Kubernetes 集群使用 kind(Kubernetes in Docker)在本地运行。在本地运行基础设施会带来有趣的约束。大型生产系统通常依赖独立的控制平面、分布式存储、高级网络以及托管的云服务——这些奢侈品在最小化的家庭实验室环境中根本不存在。该项目尝试挑战这些限制。
目标是实现尽可能多的生产级实践,包括:
- GitOps 工作流
- Kubernetes 平台自动化
- CI/CD 基础设施
- 可观测性栈
- Ingress 与服务暴露
- 基础设施可复现性
每当某些内容在家庭实验室中无法实际实现时,我会说明在真实生产环境中通常会如何解决同样的问题。
您可以从本博客期待的内容
许多技术博客文章只展示孤立的配置片段并声称方案可行,但往往省略了系统实际是如何构建、如何运行以及如何复现的细节。这种文档风格令人沮丧;它让读者产生更多疑问而非答案,并且给人一种只需几行代码就能搭建复杂系统的错误印象。
我非常不喜欢这种风格。相反,本项目将公开 全部 复现系统所需的内容:
- 完整的 Git 仓库
- Helm values
- Kubernetes manifests
- Helper scripts
- Cluster bootstrap code
读者应当能够自行重新构建整个平台。我们的目标不仅是展示一个可运行的系统,还要记录架构决策、权衡以及限制背后的思考过程。
问题
你能在单台机器上装入多少 Kubernetes?
个人家庭实验室能接近真实生产平台到什么程度?
在系统真正开始自行运行之前,我们能把自动化推进到何种程度?
本博客旨在探索答案。