OpenYurt 是阿里巴巴开源的首个边缘计算云原生项目。
该项目主打“云边一体化”概念,依托原生 Kubernetes 强大的容器编排、调度能力,通过众多边缘计算应用场景锤炼,实现了一整套对原生 Kubernetes“零”侵入的边缘云原生方案,提供诸如边缘自治、高效运维通道、边缘单元化管理、边缘流量拓扑管理,安全容器、边缘 Serverless/FaaS、异构资源支持等能力。OpenYurt 能帮用户解决在海量边、端资源上完成大规模应用交付、运维、管控的问题,并提供中心服务下沉通道,实现和边缘计算应用的无缝对接。
OpenYurt 适用于常见的边缘计算用例,其需求包括:
- 使设备和工作负载之间的长距离网络流量最小化。
- 克服网络带宽或可靠性限制。
- 远程处理数据以减少延迟。
- 提供更好的安全模型来处理敏感数据。
OpenYurt 技术方案有如下特点:
-
对原生 Kubernetes“零”侵入,保证对原生 K8s API 的完全兼容。不改动 Kubernetes 核心组件,并不意味着 OpenYurt 是一个简单的 Kubernetes Addon。OpenYurt 通过 proxy node network traffic,对 Kubernetes 节点应用生命周期管理加了一层新的封装,提供边缘计算所需要的核心管控能力;
-
无缝转换,OpenYurt 提供了工具将原生 Kubernetes“一键式”转换成支持边缘计算能力的 Kubernetes 集群;
-
低 Overhead,OpenYurt 参考了大量边缘计算场景的实际需求,在保证功能和可靠性的基础上,本着最小化,最简化的设计理念,严格限制新增组件的资源诉求。
以上技术特点使得 OpenYurt 能够:
- 最大程度保证用户在管理边缘应用时获得和管理云端应用一致的体验;
- 兼容所有云厂商的 Kubernetes 服务,易于集成;
- 保持极低的运维成本。
OpenYurt 开源的核心能力包括:
-
边缘自治能力:YurtHub 作为节点上的临时配置中心,在网络连接中断的情况下,持续为节点上所有设备和客户业务提供数据配置服务。YurtHub 提供了对大量原生 Kubernetes API 的支持,可以在节点和边缘单元维度提供“Shadow Apiserver”的能力,在边缘计算弱网络链接场景的价值尤为突出;
-
边缘运维通道:在边缘场景,由于大多数边缘节点没有暴露在公网之上,中心管控无缝和边缘节点主动建立网络链接,所有的 Kubernetes 原生应用运维 APIs(logs/exec/metrics)会失去效力;YurtTunnel 通过在管控与边缘节点之间建立反向通道,并和节点的生命周期完整联动,承载原生运维 APIs 的流量;
-
集群转换能力:Yurtctl 作为 OpenYurt 官方命令行工具,提供原生 Kubernetes 集群支持边缘计算 infrastructure 的一键式切换。
其它更高级的功能比如边缘流量管理、单元化管理,部署、区域自治等将会逐步开源。
OpenYurt 的主要组件包括:
- YurtHub:一个节点守护程序,用作来自Kubernetes节点守护程序(Kubelet,Kubeproxy,CNI插件等)的出站流量的代理。它在边缘节点的本地存储中缓存Kubernetes节点守护程序可能访问的所有资源的状态。如果边缘节点处于脱机状态,则这些守护程序可以在节点重新启动时恢复状态。
-
Yurt控制器管理器:针对不同的边缘计算用例,它管理一些控制器,例如节点控制器和单元控制器(即将发布)。例如,
autonomy
即使缺少节点心跳,也不会从APIServer退出处于该模式的节点中的Pod。 -
Yurt隧道服务器:它
TunnelAgent
通过反向代理与在每个边缘节点中运行的守护程序连接,以在云站点控制平面和连接到Intranet(将要发布)的边缘节点之间建立安全的网络访问。