方案介绍
什么是云原生家庭网络?
使用声明式 YAML 部署家庭网络所需应用,如路由器、家庭影院、监控系统、离线下载工具等。
为什么家庭网络需要云原生?
所有应用都声明式部署,可以轻松叠加所需新功能和应用,换设备或者重新装机后,能够一键部署所有应用,不需要那么多繁杂的步骤。对于熟悉 k8s 的小伙伴们,这是得天独厚的优势,也是一个不错的落地实践的机会。
软路由与系统选型
折腾云原生家庭网络的本质就是在一台软路由机器上,使用云原生的方式部署家庭网络所需的各种应用。
对于软路由安装的操作系统,网上很多软路由方案使用 OpenWRT、LEDE、iKuai、RouterOS 等软路由专用系统。而我们这里使用云原生方式部署,那就需要用主流的 Linux 发行版,一方面对 k8s 适配好,另一方面,熟悉云原生的小伙伴基本都对主流 Linux 发行版比较了解,不需要学习软路由专用的那些操作系统,降低学习成本。对于硬件,一般可以选购软路由专用的工控机盒子,也可以用树莓派来 DIY。
我选择使用 Ubuntu 作为家庭网络的操作系统,因为该 Linux 发新版用户量很大,内核和软件包都可以用比较新的,对容器的支持也很好,最重要的是本人对 Ubuntu 比较熟悉。
网络方案选型
主要分为主路由和旁路由两大类方案。
主路由方案
主路由方案是软路由机器安装 Ubuntu,上联光猫,光猫开启桥接(关闭路由功能),由 Ubuntu 来做 PPPoE 拨号上网和路由,其它的家庭所需应用都使用云原生的方式部署在 Ubuntu 里,包括 DNS 缓存、DHCP 服务、防火墙以及其他应用。
旁路由方案
旁路由方案相比主路由方案,对于 Ubuntu 来说,只是没有了 PPPoE 拨号、DNS 缓存、DHCP 服务、防火墙等功能,其余的也都还是用云原生的方式部署在 Ubuntu。只是还需要有一个主路由,可以用单独的路由器机器,也可以启用光猫自带的路由功能(对于有大带宽的需求不推荐,因为通常光猫的路由转发能力较弱):
还可以直接在软路由机器里使用 EXSI 这种虚拟化操作系统,在里面虚拟两个操作系统,一个 RouterOS 或 OpenWRT 作为主路由,另一个 Ubuntu 作为旁路由,形成“双软路由”(本人一开始也是这种方案,后来不用了,因为需要引入太多的系统和配置步骤,重新装机时很麻烦,违背了云原生一键部署的初衷)。