在家庭实验室中能容纳多少生产?

发布: (2026年3月7日 GMT+8 19:09)
8 分钟阅读
原文: Dev.to

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 提供远程访问。理论上,它应该通过让我掌控自己的数据来让生活更轻松。实际上,我花在修复系统上的时间比使用它的时间还多。每次出现故障,我都得重新弄清系统是如何配置的。容器被手动更改,配置文件出现分歧,环境逐渐偏离任何可复现的状态。不是我拥有基础设施,而是基础设施拥有了我。这段经历从根本上改变了我今天对系统的处理方式。

基础设施应自给自足

在生产环境中,我们 接受脆弱的系统。基础设施必须是:

  • 可复现的
  • 自动化的
  • 可观测的
  • 可审计的
  • 可扩展的

当出现故障时,目标 不是 手动修复;目标是 自动重建。同样的原则也应适用于个人基础设施。如果我的整个家庭实验室明天消失,恢复应该很简单:

  1. 购买一台新机器
  2. 安装 Docker
  3. 运行引导脚本

从此系统应自行重建:

  • 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?

个人家庭实验室能接近真实生产平台到什么程度?

在系统真正开始自行运行之前,我们能把自动化推进到何种程度?

本博客旨在探索答案。

0 浏览
Back to Blog

相关文章

阅读更多 »

Hello World,认识 Pebbles

引言:AI无处不在,我对自己了解的少以及事物发展之快感到不知所措。与其试图追赶,我决定去构建……