边缘云计算架构(旧版)
备注
2024年我重建了自己的 边缘云计算架构(2024) ,将采用最新的 树莓派Raspberry Pi 5 和 树莓派Raspberry Pi 4 混合构建,作为自己日常 移动工作 的 边缘云计算构建 : 我在各地旅行时会携带这个小型的 Raspberry Pi 堆叠集群,来学习和实践技术。
所以本文的 "边缘云计算架构" 暂时不会再更新(归档),而重新开始新的边缘云实践
我陆续购买多多代 Raspberry Pi 设备,在最初构建 私有云架构 时,我采用的还是完整的 ARM架构Kubernetes 。不过,我也在思考如何能够尽可能少消耗树莓派的硬件资源来完成更多的计算。轻量级始终是ARM架构(资源有限的系统)的技术关键,类似 Akraino边缘计算 ,我逐步想要在ARM架构上构建一个轻量级的边缘计算平台。
备注
最近在部署 K3s - 轻量级Kubernetes 集群时候,偶然发现原来有人和我类似的思路,并且已经实践并分享了方案和经验,请参考 rpi4cluster.com ,方案和文档非常清晰完备。
我准备借鉴并尝试不同的应用应用迭代,构建适合自己同时能够进一步完善的解决方案。
我将树莓派组建成一个微型集群,运行 K3s - 轻量级Kubernetes 并通过 Rancher 实现一个PaaS环境。这是一个个人开发和实践环境,通过完整的CI/CD来实现个人工作室。
备注
2024年3月,重新部署 Raspberry Pi 集群,采用了树莓派官方 Raspbery Pi OS(Raspbian) 操作系统,原因是官方系统现已完美支持64位,并且由于使用广泛,可以通过社区获得较好的支持。我计划重新部署 Kubernetes 集群,构建完整的模拟Cloud Atlas集群
硬件环境
我购买过多代树莓派产品以及 Jetson Nano :
树莓派一代 - 构建边缘云计算(监控) (考虑到组装树莓派集群需要小巧,类似 Turing Pi 树莓派mini集群 ,所以我还是决定舍弃 树莓派一代 ,改为采用一台低配置 树莓派Raspberry Pi 4 来实现管理和监控)
树莓派Raspberry Pi 3 - 构建边缘云计算(管控节点)
树莓派Raspberry Pi 4 - 构建边缘云计算(计算节点)
其中一台
2G
内存配置的 树莓派Raspberry Pi 4 独立作为监控和管理服务器,提供这个 边缘云计算构建 的监控资源有限,并且要有一个 Prometheus监控 体系之外的单独监控,所以该节点运行轻量级监控以及对外通知
采用监控( Prometheus监控 结合跟多网络管理平台 )
在3台 树莓派Raspberry Pi 4 作为工作节点(
worker
)由于3个 树莓派Raspberry Pi 4 的其中一个只有
2G
内存,调度只分配监控服务 Prometheus监控 / Grafana通用可视分析平台 / Thanos 分布式时序存储 来构建集群监控
另外两台
8G
内存配置的 树莓派Raspberry Pi 4 加入 K3s - 轻量级Kubernetes 作为工作节点
Jetson Nano - 构建边缘云计算( Machine Learning )
树莓派Raspberry Pi 400 - 作为管理和操作(悲剧: 已损坏)
我将 3个 树莓派Raspberry Pi 4 和 3 个 树莓派Raspberry Pi 3 堆叠起来,构建一个mini的树莓派集群:
ARM服务器分布
主机IP |
主机名 |
cpu |
内存(G) |
磁盘(G) |
说明 |
---|---|---|---|---|---|
192.168.10.10 |
a-k3s-n-0 |
1 |
0.25 |
16 SD |
树莓派1B |
192.168.10.11 |
a-k3s-n-1 |
1 |
0.5 |
16 SD |
树莓派1B |
192.168.10.12 |
a-k3s-n-2 |
1 |
0.5 |
16 SD |
树莓派1B |
192.168.1.1 |
默认网关 |
||||
192.168.1.2 |
x-zero |
1 |
0.5 |
128 SD |
树莓派zero-w |
192.168.1.211 |
x-m-1 |
4 |
1 |
64 SD |
树莓派 B3 - k3s master |
192.168.1.211 |
etcd |
etcd服务DNS RoundRobin |
|||
192.168.1.211 |
apiserver |
apiserver服务DNS RoundRobin |
|||
192.168.1.212 |
x-m-2 |
4 |
1 |
64 SD |
树莓派 B3 - k3s master |
192.168.1.212 |
etcd |
etcd服务DNS RoundRobin |
|||
192.168.1.212 |
apiserver |
apiserver服务DNS RoundRobin |
|||
192.168.1.213 |
x-m-3 |
4 |
1 |
64 SD |
树莓派 B3 - k3s master |
192.168.1.213 |
etcd |
etcd服务DNS RoundRobin |
|||
192.168.1.213 |
apiserver |
apiserver服务DNS RoundRobin |
|||
192.168.1.221 |
x-n-1 |
4 |
8 |
1T |
树莓派 B4 - ceph ds/monitor |
192.168.1.222 |
x-n-2 |
4 |
8 |
1T |
树莓派 B4 - ceph ds/dashboard |
192.168.1.223 |
x-n-3 |
4 |
2 |
1T |
树莓派 B4 - ceph ds |
192.168.1.224 |
x-n-4 |
4 |
4 |
128 SD |
Jetson Nano - GPU |
192.168.1.253 |
x-dev |
2 |
2 |
6 |
容器 |
192.168.1.254 |
raspberrypi |
4 |
128 SD |
树莓派 B4 - rasbian系统(升级和修复) |
ARM架构的边缘计算采用了 192.168.7.x
作为网络IP段(融入到我的家庭网络),和 私有云架构 的 192.168.6.x
隔离,中间采用 3层 Cisco 网络 路由
虽然也可以在树莓派上实现 ARM硬件环境KVM虚拟化 ,但是考虑到边缘计算硬件性能有限,所以采用轻量级 Kubernetes 实现 K3s - 轻量级Kubernetes 来构建mini集群,目标是实现:
任意调度计算资源实现服务的伸缩、高可用
构建边缘计算场景: 传感器数据采集、存储、传输,以及独立的AI计算,结合 私有云计算构建 的强大算力,实现云计算的合理分布
备注
服务器主机IP段位于:
192.168.7.1 ~ 192.168.7.150
192.168.7.200 ~ 192.168.7.254
保留一段IP用于内网DHCP,提供手机等移动客户端使用:
192.168.7.151 ~ 192.168.7.199
网络互联(原构想)
模拟多机房互联:
(废弃)使用 ThinkPad X220笔记本 构建VPN中心节点,实现多机房集中到中心节点连接
(废弃)在每个集群上启动 Bird网络路由 路由Daemon来维护动态路由,并结合 Kubernetes网络架构 实现不同集群路由
网络互联
作为边缘云计算集群,ARM设备的低功耗适合构建在无需风扇散热的角落里。我在家中采用树莓派构建一个无风扇的静音集群,安装在桌子底下的树莓派设备,完全不会影响工作生活。那么,如何实现树莓派连接外部网络,以及对外提供服务访问呢: