Skip to content

分层、访问与交付

如果只放一张大图,这套 Homelab 看起来会很完整,但不容易读。对我来说,更有帮助的方式是拆开来看:先看分层,再看本地、轻量集群、云端、访问链路和交付链路分别在解决什么。

先看整体分层

这三层不是性能分层,而是职责分层:

  • 本地核心层:保留家庭网络、局域网体验、私有数据和强本地依赖的基础服务
  • 轻量集群层:承接低风险服务和持续的 k3s / GitOps 实验
  • 云端协同层:承担公网入口、镜像分发、持续交付和更适合外放的负载

本地核心层在解决什么

本地核心层的重点不是“再堆更多服务”,而是把最需要贴近家庭网络和私有数据的部分留住:

  • Synology 提供更稳的本地存储基座
  • RouteOSMosDNS + Mihomo 直接影响日常网络体验
  • PostgreSQLFRPC 这类基础能力留在本地更容易和家庭网络联动
  • N200 这类低功耗机器承担的是长期常驻和稳定运行

这层越克制,整套 Homelab 越容易长期维护。

轻量 k3s 层放哪些服务

两台 RK3566 4GB 组成的轻量 k3s 更像一个“真实但不过度承诺”的实验层:

  • OpenWebUIHome Assistant 代表日常可用服务
  • Traefik 让我继续练入口和路由
  • Vault 让 Secret 管理思路还能保留下来
  • Argo CD / GitOps 继续在这层验证,但我不要求它承载全部关键路径

我更希望这层能让我持续练习,而不是为了“全都 K8s 化”把基础稳定性也押进去。

云端节点怎么分工

这三台云端节点的角色是分开的:

  • Aliyun 上海:位置合适,专门给本地环境补一条适合国内网络的 FRPS 入口
  • Oracle AMD:偏外部服务与运维协同,适合跑 Docker、反向代理、镜像中继、探针和辅助平台
  • Oracle ARM:偏云上的 Kubernetes 实验场,是 GitOps、状态服务和后续 CD 的主阵地

云端层不是要“复制一套本地”,而是接住那些本来就更适合放在公网侧的职责。

访问链路怎么互相补位

这里我不把访问方式当成单选题,而是按用途组合:

  • Cloudflare Tunnel:适合域名接入和隐藏本地真实暴露面
  • FRP:更偏国内网络场景下的高速补位
  • IPv6:在合适条件下直接提供公网可达能力
  • Tailscale:把本地和云端连成运维上更顺手的私网

这几条路同时存在,复杂度会上升,但换来的是整套系统不会因为单一入口不稳定就完全失去弹性。

交付链路怎么演进

早期我更想验证,本地能不能跑起完整的平台链路:

后来我更关心,在现实网络和成本约束下,交付链路怎么更适合云端协同:

这不是简单的工具替换,而是职责边界的变化:以前更像是在本地证明“我能把整条链路搭起来”,现在更像是在验证“在真实的成本和网络条件下,哪一段应该继续留本地,哪一段应该交给云端”。

这部分我单独拆成了一页 CI/CD 演进,会更完整地讲先前的本地一体化模式、现在的云端协同模式,以及它们分别体现了我哪些搭建能力。