【阅读原文】戳:OpenYurt v1.6正式发布 | 提供节点级别的流量复用能力
北京时间1月8日发布了OpenYurt v1.6版本。OpenYurt作为边缘云原生领域的开源项目,致力于解决分散计算资源及业务管理难的问题。OpenYurt采用云边端一体化的架构,基于Kubernetes项目,采用非侵入的方式提供了边缘自治、跨地域通信、多地域资源与应用管理、设备管理等核心能力。本次发布的v1.6版本主要特性包括:节点级别的流量复用能力、增强的边缘自治能力等。
节点级别的流量复用能力
在OpenYurt集群中,管控组件部署在云端,边缘节点通常通过公网与云端的管控组件交互,list/watch相关的资源(比如Kubelet、Flannel、Kube-proxy以及CoreDNS等组件,在每一个边缘节点上都需要部署一个副本,并且这些组件会list/watch集群中的services、endpointslices等资源)。随着集群的规模以及资源的增大,给云边通信流量带来比较大的压力,同时需要花费更多的流量成本。为了缓解这个问题,我们在YurtHub中提供了流量复用模块,该模块针对特定的资源,主动从Kube-apiserver获取这些资源并缓存这些资源。当客户端经过YurtHub请求这些资源时,YurtHub不再将请求代理到Kube-apiserver,而是从缓存里获取数据返回给客户端,从而达到流量服用的目的。该能力在大规模Pods以及Services部署场景,可降低50%左右的云边通信流量。
下图展示了各个模块之间的请求转发流程:
1)MultiPlexer Cache请求Kube-apiserver list/watch需要复用的资源,并缓存到内存中;
2)客户端请求YurtHub Server获取相关资源;
3)YurtHub判断资源是否为复用的资源:
如果是复用资源,则从本地MultiPlexer Cache中获取数据,从而减少云边通行流量;
如果不是复用资源,则从Kube-apiserver获取数据。
增强的边缘自治能力
OpenYurt已经提供了强大的边缘自治功能,确保边缘节点上的应用程序即使在云边缘网络断开连接时也能继续运行。但是,当前的边缘自治功能仍有几个方面可以改进:
• 一旦节点使用自治的Annotation,云控制器就不会自动驱逐 Pod,无论断开连接是由于云边缘网络问题还是节点故障导致的,但用户希望在节点故障期间能自动驱逐Pod。
• 自治能力需要先关闭Kube-Controller-Manager组件中的NodeLifeCycle控制器,无法直接在托管 Kubernetes 环境中使用。
在v1.6版本中,我们对自治的能力进做了进一步的增强。这些增强包括:
• 新增节点自治的Annotation (node.openyurt.io/autonomy-duration),允许用户指定节点的自治时长。如果未收到心跳报告的时间小于这个指定的时长,系统会认为是网络断开导致的,不会驱逐该Pod。如果超过这个时长,系统会认为是节点故障,会执行Pod驱逐。
• Kube-Controller-Manager中不再关闭NodeLifeCycle控制器,Yurt-Manager中新增一个Endpoints/EndpointSlices的WebHook,用来保证在自治期间,Pod不会从Services的后端摘除。其中Webhook的工作流程如下图所示:
1)Pod NotReady触发endpoints/endpointslices controller更新对应的资源,设置相关的地址为NotReady;
2)Kube-apiserver调用webhook;
3)Webhook依据Pod对应的节点是否配置了自治,来修改对应地址的状态:
- 如果设置了自治,则对应的地址状态调整为Ready;
- 如果没有设置自治,则不做修改。
4)Webhook返回调整后的资源;
5)Kube-apiserver将资源写入etcd。
其它更新
你可以通过Github release[1]页面,来查看更多地改动以及它们的作者与提交记录。
社区参与
目前OpenYurt v1.6版本的所有能力也已经上线到ACK Edge[2]产品中,欢迎有需求的同学咨询和试用。
同时,社区的v1.7版本正在开发推进中,主要聚焦在节点池维度的流量复用以及采用OpenYurt在本地部署Kubernetes集群等能力上。非常欢迎你通过Github[3]/钉钉(搜索群ID:12640034121)等方式加入我们来参与OpenYurt开源社区。也欢迎在我们的社区周会[4]上分享你的声音,或通过加入社区 Slack channel[5]参与讨论。
相关链接:
[1] Github release
https://github.com/openyurtio/openyurt/releases
[2] ACK Edge
https://help.aliyun.com/zh/ack/ack-edge/product-overview/ack-edge-overview
[3] Github issue
https://github.com/openyurtio/openyurt/issues
[4] 社区周会
[5] Slack channel
https://openyurt.slack.com/unsupported-geo
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。
获取关于我们的更多信息~