K8S FOR IOT的大胆猜想

前言

全都是梦话

为何需要K8S

最近一直在思考物联网下C端设备HA问题,传统物联网IOT设备存在以下几个痛点:

  • 固件版本更新困难
  • 部署过程复杂
  • 假如固件有问题,往往需要运维人员到现场取回板子,维修时间长,维护过程复杂
  • 固件基本没有自愈能力
  • 无法合理利用IOT板子的有限的资源
  • ….

上述问题,仅仅是我现在能想到的,传统物联网下想要解决这些问题,公司可能会花很多的精力和财力,才能逐渐完善。
其实每个IOT设备都是一个Micro PC,现在的IOT设备,硬件配置已经很好了,而且OS也很稳定。
现在将我们的思想转变下:

  • 我们在做传统的Server Side Application(以下简称SSA)是怎么升级的?
  • 我们在做传统的SSA怎么保证HA,升级0宕机的?
  • 我们在做传统的SSA怎么保证合理利用服务器资源?
  • 我们在做传统的SSA怎么保证快速扩容,快速部署?

借鉴下当下比较火热的几个概念或者技术:

  • 滚动升级(解决升级宕机问题)
  • LXC, runsc, gvisor(资源隔离,合理利用)
  • 容器(快速部署,扩容)

是不是联想到了容器和容器编排技术(物联网设备往往是成百上千的)?

架构是怎么样的?

alt
每个IOT都是一个Node Server,这样就可以轻松的使用k8s的各种特性。集群部署,高可用,滚动升级,自愈机制。

弊端痛点

  • IOT板子网络稳定性要求较高(如果不稳定会引起k8s调度问题,但不影响本地程序的运行)
  • 升级更新镜像,可能需要大量的服务器带宽(如果通过k8s namespace对指定命名空间进行升级就不会出现问题)
  • 网络固定IP(可以通过内网穿透做)

结尾

已经在Raspberry PI3实现了一个最小化的k8s集群,路还很漫长,慢慢来