关于阿里云:OpenYurt-在龙源-CNStack-云边协同项目的应用

27次阅读

共计 3807 个字符,预计需要花费 10 分钟才能阅读完成。

作者:龙源电力:张悦超、党旗   阿里云原生: 李志信

OpenYurt 介绍

OpenYurt 是业界首个对云原生体系无侵入的智能边缘计算平台,具备全方位的“云、边、端一体化”能力,可能疾速实现海量边缘计算业务和异构算力的高效交付、运维及治理。其在云平台、云游戏、AI、IOT 畛域早已有泛滥落地用户。

OpenYurt 完满适配和解耦于原生 K8s 组件,例如 Kubelet、Kube-Proxy、CoreDNS 等。其外围能力为边缘节点的边云网络代理,由 Yurthub 组件提供,旨在保障跨云场景下的 K8s 节点失常纳管和运行,从而为边缘 IOT 设施赋予云原生能力。OpenYurt 通过生产验证,可反对上千节点以及上万 Pods 大规模集群的稳固生产能力。上面咱们将介绍其集成于 CNStack 云原生技术中台,落地于龙源电力企业的具体场景。

CNStack(云原生技术中台)介绍

CNStack(云原生技术中台)是阿里云云原生最佳实际的输入载体,它能够在多云、混合云场景下集中纳管基础设施资源,对立编排和调度工作负载,帮忙客户高效构建高性能、高可用、高牢靠和平安合规的现代化利用,晋升企业数字化转型的整体效力。CNStack 致力于帮忙企业 IT 架构重组升维,提供用最低的老本构筑业务倒退护城河,产生更大的市场利润的技术原动力,CNStack 在过来两年继续打造企业级分布式基础设施 OS,帮忙利用开发者屏蔽底层计算、网络简单拓扑,和异构差异性,并通过适应性优化 IaaS+ 服务,向以业务为核心提供更多指标为导向的组合效用输入。

案例落地架构

龙源电力领有七百多个服务器节点,散布于中国数十个省市,冀望引入高可用的云原生平台,实现“本部 - 省公司 - 场站”三级服务器的对立纳管能力。并须要在核心节点实现对边缘节点容器进行对立的调度、监控、运维能力;并针对边缘场景,对弱网络、云边断网场景的服务稳定性提出要求。

3.1 案例边缘能力整体架构

龙源场景具备规模大、节点多、业务容器数量宏大的特点,并因为节点之间物理间隔大和网络老本问题,导致边缘至核心站点的网络资源带宽小;另外,还存在核心站点断电保护时,保障边缘业务仍然失常工作的诉求。CNStack 云原生技术中台引入 OpenYurt v0.7.0 版本组件来反对这种场景。

咱们对于 OpenYurt 边缘组件的部署架构如下所示。

整个集群领有一个由多个节点组成的核心站点,负责整个集群的管控。同时,次要的业务工作负载位于数十个省市的上百个边缘节点中,如上述介绍,边缘节点至核心站点的网络带宽较小,网速大抵在 40KB/s 至 2MB/s。

如上图所示,在核心站点上,部署了 CNStack 云原生技术中台提供的 K8s 根底组件例如 CoreDNS、Kube-Controller-Manager、APIServer;以及集成的 OpenYurt 云端组件,包含负责边缘节点池资源生命周期治理和证书签发的 Yurt-Controller-Manger、负责反向运维能力反对的 Tunnel-Server 等组件。

在边缘站点上,也领有原生组件和 OpenYurt 边缘组件,其中边缘组件包含边缘 DNS 缓存服务 Local-DNS,其能够大幅缩小边缘利用查问 DNS 记录所耗费的跨站点流量,还有 Tunnel-Agent 组件。其中最重要的为 Yurthub 组件,其负责代理边缘节点内的 APIServer 申请,从而实现在云边网络临时断开的状况下,通过读本地缓存,保障代理的申请正确返回,维持根底组件和业务负载的失常工作;此外,它还负责心跳代理和容器内 APIServer 证书的重写与管制,从而保障业务直连 APIServer 申请也经由 Yurthub 转发。

通过这样的架构,咱们将 OpenYurt 在大规模边缘集群场景落地,以求满足用户诉求。

3.2 断网边缘自治能力

龙源电力须要咱们反对核心站点断网保护的场景,须要在核心侧机器停机保护的状况下,保障全副边缘机器业务失常运行。对于原生的 K8s 集群,云边网络断散会导致边缘容器被驱赶,局部边缘组件也会因为 APIServer 无奈连贯,资源同步失败而报错,甚至退出,导致业务异样和生产事变。

OpenYurt 组件解决了断网自治的问题,首先通过对节点生命周期的配置,以及 Yurt-Controller-Manager 对于边缘自治节点的容器管制,保障云边断网状况,即便节点状态为 NotReady,边缘业务容器仍然不被驱赶,且复原后丝毫不影响业务的失常运行。其次,Yurthub 通过代理边云方向目标为 APIServer 的全副申请,在连贯至云端的近程连贯不衰弱时,如核心停机,则将申请切流至本地缓存,使得边缘组件仍然能胜利获取资源。直到网络复原后,Yurthub 切流至核心站点,本地缓存得以更新,代理申请恢复正常转发。

在龙源场景引入 OpenYurt 组件,保障了在云边断网甚至核心站点停机保护的场景下,边缘节点的业务利用仍然能失常运行。这一能力在生产中失去了重复验证。

3.3 可编程的资源访问控制

YurtHub 组件内置的可编程的数据过滤框架,能够帮忙用户对云端申请的返回数据进行无感知,按需的革新,从而满足云边协同场景下的特定业务需要。如服务拓扑的路由抉择,云端拜访链路的自适应等。

InClusterConfig

Openyurt 的组件 Yurthub 将通过 kubelet 为所有 pods 注入指向代理端点的 InClusterConfig,整个过程对于业务无感。基于这一配置注入,须要通过容器外部鉴权配置拜访 APIServer 的业务容器,都能够在边缘侧间接部署,失常运行,无需进行改变。拜访 APIServer 的所有申请都将通过 Yurthub 代理,从而可能应用缓存和断网自治能力,达到加强零碎稳定性和资源耗费的目标。

流量拓扑规定

服务拓扑(Service Topology)能够让一个服务依据集群的节点拓扑进行流量路由。例如,一个 Service 能够指定流量被优先路由到和客户端 pod 雷同的节点或者节点池上。例如,咱们能够为 Service 减少注解:openyurt.io/topologyKeys=openyurt.io/nodepool,这时站在一个边缘节点池内,一个业务利用的客户端视角,向这个 Service 发动的网络申请都将被路由至位于雷同节点池的指标端点。其次要解决了两个问题:其一为就近准则,升高响应时延;其二为边缘节点池之间网络不互通的场景下,能够保障全副业务利用都能面向这个 Service 名进行开发,从而保障在边缘节点池内部署后,无需对业务程序进行革新,即可自适应的将流量路由至可达的端点。

3.4 反向运维能力

在龙源场景咱们实际了基于 OpenYurt  Tunnel 组件的反向运维能力。当边缘站点和云端站点处于不同 VPC 内,边缘机器 IP 在云端不可见的状况下,咱们能够通过 Tunnel 组件提供的长链接,实现由云端至边缘申请转发。咱们在龙源场景验证和测试阶段应用了大量 kubectl 提供的运维命令如 logs、exec 等,都基于这一连贯实现,进步了测试验证的效率。

上述边缘集群监控、日志采集计划,就是基于 Tunnel 反向运维能力实现,保障在云端不可见的边缘节点资源,仍然能够通过这一通道进行采集。

Tunnel 长链接为云边单向可见的场景提供了云边反向申请的底层数据通路保障,咱们也能够基于这一能力,延长更多的利用场景,例如边缘机器端口云端代理,多站点内容散发等。

3.5 边云网络优化套件

边云网络优化套件是 OpenYurt 我的项目 v1.2 版本的新性能,其外围组件是 Pool-Coordinator,它会为节点池维度的资源提供边缘侧缓存,从而升高因为这些资源的大量 list/watch 申请造成的云边网络带宽问题。

在部署阶段,开发者能够通过装置 Chart 包的形式,将 Pool-Coordinator 组件装置至集群,该过程利用了 OpenYurt 生态的 YurtAppDaemon 资源,将这一组件以节点池粒度部署至所有的边缘节点池,每个节点池一个实例。待 Pool-Coordinator 实例启动,会由选主机制选出的 Leader YurtHub 将 Pool-Scope (节点池内共享)资源,例如 endpoints/endpointslice 拉取至边缘,进而同步至 Pool-Coordinator 组件,缓存起来,以供节点池内全副节点应用。

随着社区最新版本 v1.2 版本的公布,Pool-Coordinator 在后续将持续着重于稳定性建设和生态组件建设,包含可观测能力、网络抖动的鲁棒性优化、断网自治能力、Pool-Coordinator 容器运维能力等。Pool-Coordinator 组件也将会工业生产中的大规模落地实际,并像其余 OpenYurt 生态组件一样在生产过程中迭代和优化,晋升零碎稳定性。

总结

时至今日,基于 OpenYurt 组件的 CNStack 云原生技术中台在龙源电力曾经生产交付近一年工夫。而近期龙源电力独创的云边协同服务资源调度平台在全国范畴正式上线,为企业数字化转型筑牢根底,最终斩获云原生技术实际联盟“2022 最佳云原生行业实际奖”。咱们置信在一直的生产实践验证中,OpenYurt 携手用户,将会走的更扎实,走的更持重!

如果您对于 OpenYurt 有任何疑难,欢送应用钉钉扫描二维码或者搜寻群号(钉钉群号:12640034121)退出钉钉交换群。

点击此处,立刻理解 OpenYurt 我的项目

正文完
 0