Ocado Technology 团队创造了 Kubermesh ,一个“基于裸机、自我托管、自我恢复、自我配置、采用部分网状网络的 Kubernetes 集群”。Kubermesh 本质上可以被视为一个粘合节点,它将多个技术结合在一起,从而构成了一个容器平台。这个平台由一个使用 OSPF3 路由协议的部分网状网络和一个用 iPXE 启动、自我安装的 Kubernetes 部署组成。该 Kubernetes 部署运行在由 Openstack 管理着的裸机服务器上。
Ocado Technology 在博客上写道,这一项目萌芽于他们团队在白板上进行头脑风暴时提出的一个问题,“如果我们能将我们Customer Fulfilment Center 的数据中心分成更小的节点,会怎样呢?” 他们提到的 Customer Fulfilment Center (CFC) 是一个高度自动化的仓库,在这个仓库储存,挑选,并分发食品杂货送往 Ocado 的客户们。Ocade 的私有 Ocado Smart Platform CFC 包括了数千个在网格上徘徊的机器人以及把机器人递来的货物按客户订单即时打包的工人。
Kubermesh 部署了一个作为铺垫的局部网格网络,该网络在 IPv6 网络上使用了 OSPF3 路由协议(利用本地链路地址自动配置功能),该路由协议由 Quagga Software Routing Suite 提供。由于目前没有标准供应商支持 IPv4 over IPv6 的网络,他们为 Kubernetes 部署了一个自定义的覆盖虚拟网络。这个覆盖虚拟网络和 CoreOS 的 Flannel 结合起来使用以支持 IP 地址分配。通过 IPv6 上的 iPXE-booting,Kubermesh 可以为网格添加节点,并利用 boot.cfg 来配置节点的基础软件。随后,kubermesh 使用 Kubernetes 孵化器项目 bootkube 来启动一个自托管的 Kubernetes 集群。一旦集群启动,bootkube 会作为一个临时的 Kubernetes 集群控制面板(API 服务器、调度器、控制器管理器),这个临时控制面板会运行足够长的时间,以便 Kubernetes 集群引导一个自托管的控制面板来替代临时控制面板。
据 Ocado Technology Network 表示,使用网格网络,开发者甚至可以移除数据中心、网络、以及仓库周围运行着的各种机器,只留下计算节点和光纤。这些可以自动配置的元素保证了系统的灵活性,这种灵活性可以允许新添加的节点简单的连接到网络。并且,在几分钟时间内,新节点就可以被整合到集群中。Kubernetes 自身将会管理容器的协调,并在个别节点发生失效事件时进行重新调度。
Kubernetes 最初是作为 Code for Life 项目的容器管理系统被引入 Ocado Technology 的。Code for Life 项目是一个非盈利的初创项目,该项目发行免费且开源的游戏,设计这些游戏主要是为了帮助老师讲授计算机课程和帮助小朋友们接触编程。 Rapid Router 作为一款面向小学设计的游戏,在全球已经拥有超过 90,000 名用户,而这一数字还在增加。考虑到 Code for Life 庞大的用户群,为了让游戏流畅运行,容器管理系统的开发必须以能持续处理和管理大型数据集为目标。
Code for Life 的网站和 Rapid Router 已经托管在了支持 Kubernetes 的 Googld Cloud Platform 上。这意味着,当需要一个容器管理系统在云端的虚拟机上运行大量学生编写的代码时,Kubernetes 毫无疑问是最佳的选择。Ocado 的 IT 团队领导 Mike Bryant 曾参与了 Code for Life 这一容器管理系统的开发过程。在开发过程中,Mike Bryant 意识到该系统也有可能被用在云平台之外,比如用于流水线化 Ocado Technology 的数据系统。
我们最大的食品杂货 CFC 在伊利斯(Erith),占地 563000 平方英尺,并且需要 400 这样的节点,它们随机分布在仓库周围,连接在一起形成网络。这样一来,部署在节点上的 app 可以策略性的分布在其它经常与之通信的 app 附近,这样可以得到最快的速度和最佳的性能。一个节点可以是我们仓库内的任何计算设备,包括从专一的服务器或 Intel NUC ,到捡货通道的工作站或用来在头顶显示屏上显示工程相关信息的 PC。
如果 Kubermesh 的原型系统得到了验证,该系统就有可能从根本上完全消除数据中心以及网络路由存在的必要性,大大缩减了当前 OSP 系统的规模,节省了花费在维修保养上的时间,并且降低了成本和能量消耗。同时他们还提议,Kubermesh 节点可以自主的运行仓库中的所有其他元素,从显示屏幕到捡货站(假设所有对应的应用可以在容器内成功运行)。
关于 Kubermesh 项目的其他详细信息可以在 Ocado Technology 官方博客的《使用Kubernetes 和容器创建分布式数据中心结构》这篇博文中找到,Apache 2.0 授权的原型源码可以在 Kubermesh GitHub 的代码仓库中找到。
查看英文原文: Ocado Technology Releases “Kubermesh”, a Prototype Self-Provisioning Mesh Network Kubernetes Cluster
感谢薛命灯对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论