查看原文
其他

全美最大炸鸡餐厅告诉你,Kubernetes如何帮你吃更多的鸡?

Chick-fil-A 团队 K8S技术社区 2019-12-19


Kubernetes含金量最高CKA首个包过培训班文末报名啦!

在这篇文章中,我们将分享如何在餐馆的Edge为运行中的Kubernetes构建裸机集群以及为什么要这样做。

1为什么在餐馆中用K8s?


  • 为什么像Chick-fil-A这样的餐饮公司想在Edge部署Kubernetes? 目标是什么? 答案是:

    低延迟、独立于互联网的应用程序可以可靠地运行业务
    这些应用程序的高可用性
    该平台可实现快速创新,并允许尽快将业务功能交付到生产中
    横向扩展(基础架构和应用程序开发团队)

2压力


Chick-fil-A是一家非常成功的公司,很大程度上归功于其出色的食品和客户服务。


好生意为业务带来了许多挑战。Chick-fil-A每周六天的销售额超过竞争对手七天的销售额(周日休息)。Chick-fil-A的许多餐馆的客流量是最初设定的三倍多。这些都是好事,但随之而来的是与规模相关的极其困难的挑战。


在Chick-fil-A,这些问题的解决方案是技术解决方案。

3下一代工作负载


Chick-fil-A解决这些问题的方法之一是投资一个更“聪明”的餐馆。

目标:为业主/运营者及其团队简化餐馆体验,优化美味好吃的食物,并快速且个性化地提供,同时提高现有餐厅的容纳能力。

假设:通过制造更智能的厨房设备,可以收集更多数据。通过将数据应用到餐馆,可以构建更智能的系统。通过构建更智能的系统,可以更好地扩展业务。

举一个简单的例子,想象一下预测模型——该模型试图预测每一分钟该做多少华夫饼(或用你最喜欢的Chick-fil-A产品)。预测由云中运行的分析流程创建,该流程使用来自许多餐馆的交易级销售数据。这种预测并不难做到,但不幸的是,它不足以推动食物生产。Chick-fil-A餐馆的销售很容易飙升,并且受到当地事件(交通、体育、天气等)的严重影响。

但是,如果能实时收集销售点系统的点击数据以了解当前的需求,添加来自炸炉的当前库存的数据,然后微调餐厅内的初始预测,就能够更准确地了解应该在特定时刻做什么食物。然后,该数据可用于向负责烹饪薯条(举个例子)的餐厅团队成员提供更智能的显示,或者可能用于将来推动烹饪自动化。

这样的目标促使餐馆开发了物联网(IOT)平台。为了成功扩展业务,我们需要能够收集数据和使用数据来推动餐厅的自动化。

Chick-fil-A想要拥有一个开放式生态系统,而不是选择来自许多不同供应商的解决方案(这些解决方案是孤立的和断开的,因此难以集成)。这种方法支持Chick-fil-A内部开发人员和外部合作伙伴为Edge开发连接的“东西”或应用程序,并利用该平台来满足安全性、身份和连接等常见需求。

另一方面,IOT / Edge团队拥有部署在边缘的整个应用程序基础的一小部分,并且实际上成了餐厅内计算平台的运行时平台团队。

4架构概述


以下是Chick-fil-A为了实现这些目标而开发的架构。




控制平面


今天,Chick-fil-A在云中运行更高阶的控制平面和核心物联网服务。这包括以下服务:

    授权服务器——设备身份管理
    数据摄取/路由——收集数据并将其发送到需要的位置
    操作时间序列数据——日志、监控、警报、跟踪
    部署管理——使用GitOps为我们的应用团队进行自助部署。我们计划尽快分享我们的工作和代码。

这些服务也在Kubernetes中运行,因此Chick-fil-A在所有团队的部署中都有一个共同的范式。


边缘


“边缘计算”是将计算资源放在行动点附近以获得更高级别的可用性和更少的延迟的想法。

Chick-fil-A将边缘计算环境视为“微私有云”。通过这种方式为开发人员提供一系列有用的服务和位置,以在基础设施上部署他们的应用程序。

这是否让Chick-fil-A为世界上最大的“云提供商”?你可以自行判断。


  • 严肃地说,这种方法给了Chick-fil-A一种独特的规模。Chick-fil-A将拥有超过2000个集群,每个集群有几十个容器,而不是数个拥有几十到几十万个容器的大型K8集群。而且随着我们每年开设许多新餐厅,这个数字还会显著增长。

    Chick-fil-A的边缘工作负载包括:

    平台服务,例如身份验证令牌服务、发布/订阅消息传递(MQTT)、日志收集/泄漏(FluentBit)、监控(Prometheus)等;
    与餐馆中的“事物”互动的应用程序;
    满足HTTP请求的简单微服务;
    机器学习模型,利用MQTT的实时事件综合云开发的预测,在边缘做出决策并推动自动化。

    Chick-fil-A的物理边缘环境从多个餐厅内的交换机(和两个路由器)获得连接,因此在高可用的LAN上操作。

    今天,几乎所有在Edge收集的数据都是暂态的,只需要在被泄露到云之前的短时间内存在。这可能在未来会发生变化,但它使Chick-fil-A的早期部署非常简单并更易于管理。

    由于Chick-fil-A拥有一个高度可用的Kubernetes集群,并且所有节点都复制了数据,因此该团队可以确保保留所有收集到的数据,直到互联网再次可用于数据泄露为止。他们还可以根据业务需求在Edge动态地聚合、压缩或删除数据。

    鉴于所有这些,Chick-fil-A仍然首先使用云来提供服务。Edge是高可用性、低延迟、餐馆内应用程序必不可少的后备部署目标。


5跟随巨人的脚步


Chick-fil-A在商品硬件上运行其Egde基础设施,花费是1000美元/餐馆。他们希望保持低成本和水平可扩展的硬件投资。


借助这样的架构,Chick-fil-A可以根据需要通过添加其他设备来添加额外的计算容量。未来该餐厅还会扩大其硬件空间,但现有硬件足以满足目前的工作负载有。与此同时,谷歌也开始在商品硬件上扩展工作负载!

Chick-fil-A的Edge基础设施方法正在鼓励那些使用稀缺资源(物理空间、预算或其他方面)的人进行创造性思考!


6其他的一切


Chick-fil-A还有连接层和物联网。许多设备都是完全供电(没有电池),但仍然受到芯片组/处理能力的限制。Wi-Fi是连接的默认方法。他们尚未致力于低功耗协议,但对LoRa和WiFi Halo(802.11ah)项目感兴趣。

对于物联网/物理设备,该团队还为开发人员提供了一个SDK,用于执行入网流程(所有都是基于OAuth)和访问Edge环境中的服务,如MQTT。

7edge容器


为什么要在Edge运行容器?出于同样的原因,你可以在云中(或其他任何地方)运行它们。

因为,依赖管理变得更容易;测试更容易;开发人员体验更轻松、更好;团队可以更快、更自主地移动,尤其是在应用合理的抽象点(例如k8s命名空间)和资源限制(CPU / RAM)时。

另一个关键设计目标是关键应用程序的可靠性,这意味着架构中没有单点故障。可以通过多种方式实现此类目标,但团队决定在Edge上拥有多于1个的物理主机,对其拥有的工作负载类型和团队技能组合而言,基于容器的编排层是最佳方法。

这种策略被称为“Redundant Restaurant Compute”,它真正说明了该方法背后的目标。后来,该团队称之为“Edge Computing”。

能够有效地协调服务并快速一致地保留所需数量的副本,这些能力是Kubernetes对Chick-fil-A的吸引力所在。


8为何要选择Kubernetes?


起初,Chick-fil-A计划使用Docker Swarm进行容器编排,但是在2018年初转向Kubernetes,因为该团队认为Kubernetes的核心功能和周围的生态系统(迄今为止)最强。团队也正在利用围绕Kubernetes的一些项目,如Istio和OpenFaaS。

Chick-fil-A团队坚信,创意本身并没有价值,代码本身没有任何价值。


唯一有价值的是在生产中运行的代码。只有这样,你才能为用户创造价值,才有机会影响你的业务。


因此,在Chick-fil-A,人们希望优化以获取好的想法,将它们转换为代码,并尽可能快地使代码在生产中运行。

研究表明,使用最新、最好的技术(如Kubernetes)与团队或组织的成功无关。一点关系也没有。真正重要的是将想法转化为代码并快速将代码投入生产的能力。

如果你可以通过VMWare、单个计算机、其他集群工具或编排层,或者只使用云实现此目标并满足你的要求,我们不会试图说服你切换到Kubernetes并跟随我们的脚步。最简单的解决方案通常是最佳解决方案。

在Chick-fil-A,人们认为实现这些目标的最佳方式是接受容器化,并与Kubernetes合作。在一天结束时,它可以帮助你“吃更多的鸡”。

9后续


Chick-fil-A接下来的步骤是什么?

在接下来的18-24个月内,该团队希望将餐厅中智能/连接设备的数量增加到10万个以上,并将其在全球范围内推出的Kubernetes完善到Edge。从边缘控制餐厅的“大脑应用”的用例数量继续增长,Chick-fil-A期待提供服务,并与社区分享更多知识。

Chick-fil-A还密切关注刚刚宣布的Google GKE On-Prem服务,因为它可能会帮助其在未来建立和管理集群。


“到目前为止我们所做的是沉没成本,如果我们能够将资源重新集中在差异化而非基础设施上,那我们肯定会这样做。”——Chick-fil-A  IOT/Edge技术团队




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存