乐趣区

关于阿里云:OpenYurt-v070-版本解读无侵入的跨网络域解决方案-Raven

作者:陈锦赐、何淋波

北京工夫 5 月 27 号,OpenYurt 公布 v0.7.0 版本。

新版本中重点公布 Raven 解决方案,该计划在对原生的容器网络计划无侵入的状态下,优雅的解决跨公网的云边,边边的 Pod 间通信问题,不便的满足了云边协同场景下对容器网络的诉求。同时在 OpenYurt v0.7.0 中,也实现对 EdgeX Foundry 的 LTS 版本(Jakarta)的反对,以及 K8s 版本 v1.22 的反对。

无侵入的单集群跨边缘容器网络买通计划 Raven

在 OpenYurt 集群中提供包含跨公网边 - 边、边 - 云之间的单集群容器网络联通能力,其次要技术原理是通过 公网加密隧道 让不同的边缘节点上的容器网络互相买通,从而实现跨边的业务流量或者管控流量的通信。并且兼容以后支流的容器网络解决方案(如 flannel,calico 等),即 NodePool 内的通信仍应用原生容器网络计划。

我的项目背景

在边缘计算中,边 - 边和边 - 云通信是常见的网络通信场景。对于 OpenYurt 我的项目,咱们曾经引入了 YurtTunnel 来应答边云合作中的运维和监控的网络问题。它提供了对边缘节点执行 kubectl exec/logs 并从边缘节点获取监控指标的性能。然而 YurtTunnel 解决的问题只是边云通信的一个子集,在 v0.7.0 版本以前还没有边 - 边、边 - 云容器网络通信的解决方案。

即在某些状况下,OpenYurt 集群中不同物理区域的 Pod 可能须要应用 Pod IP、Service IP 或 Service name 与其余 Pod 通信,尽管这些 Pod 位于单个 K8s 集群中,但它们处于不同物理区域(网络域)中无奈间接通信。

设计理念及架构

Raven 我的项目从需要探讨,到方案设计,以及最初的落地实现等都是基于开源社区成员的协同下实现的,整体设计理念次要有:

  • 无侵入:对原生的 K8s CNI 网络无侵入,仅劫持跨边流量进行转发
  • 与支流的容器网络计划 (如 flannel, calico) 可无缝协同运行
  • 高安全性:确保跨公网通信的数据安全

同时 Raven 解决方案的架构如下图:

  1. Raven Controller Manager:规范的 Kubernetes 控制器,以 Deployment 的形式部署在局部云上节点中,负责监控边缘节点状态,为每一个边缘节点池选取一个跨边流量的进口作为 gateway node,并可能在以后 gateway node 失活的状况下实现 gateway node 的切换。所有的跨边流量都将由各个边缘节点池的 gateway node 实现转发。
  2. Raven Agent:以 DaemonSet 的形式部署,运行在集群的每一个节点,它依据每个节点的角色(gateway or non-gateway)在节点上配置路由信息或 VPN 隧道信息。

上述两个组件通过一个 Gateway CRD 来替换配置路由和建设 VPN 隧道的必要信息,如图 2 所示:

更多细节能够参看我的项目代码仓库:

  1. Raven Controller Manager:https://github.com/openyurtio…
  2. Raven Agent:https://github.com/openyurtio…

特点与劣势

  1. 无侵入:对原生的 K8s CNI 网络无侵入,即对在同一边缘节点池的流量不进行劫持,复用集群自身的 CNI 能力
  2. 安全可靠:应用成熟稳固的 IPsec 技术对跨边流量进行加密
  3. 欠缺的兼容性:与支流的容器网络计划(如 flannel,calico)可无缝协同运行
  4. 高性能:Raven 在跨边流量的解决上会尽量利用边缘自身的网络能力,尽可能地创立边 - 边的 VPN 隧道,不会把所有的跨边流量都通过云上核心端转发

反对 EdgeX Foundry LTS 版本

EdgeX Foundry Jakarta 是第一个 LTS 版本,被宽泛认为是一个产品版本。在 OpenYurt v0.7.0 中曾经实现了 EdgeX Foundry Jakarta 版本的反对工作。因为 EdgeX Jakarta 版本切换到 API v2,因而 OpenYurt 优化了与 EdgeX 的适配逻辑,同时 CRD 也有局部优化。具体能够参照 [#30]

反对 Kubernetes v1.22 版本

OpenYurt 为适配 Kubernetes v1.22,次要工作包含: v1beta1.CSR 被资源移除以及 CSR.signerName 校验更新后,OpenYurt 中有申请证书的各组件做了对应适配。同时 Service Topology 个性适配 v1.EndpointSlice 资源的申请,以及云边隧道 YurtTunnel 针对 StreamingProxyRedirects featuregate 被移除的适配。具体参照 [#809]

反对 IPv6 网络

IPv6 网络首先须要 CNI 容器网络反对,在 OpenYurt 中次要 Yurthub 和 YurtTunnel 中波及到网络配置,证书申请等相干解决实现相干适配。具体参考 [#842]

将来打算

OpenYurt v0.7.0 版本重点推出了跨网络域的解决方案 Raven,同时也推出了 EdgeX Foundry LTS 版本反对,K8s v.122 反对,IPv6 网络等多方向的能力。再次感激来自 VMware,Intel,电信天翼云,深服气,新华智云,浙大,京东,美团,字节,阿里云等数十位同学的鼎力奉献。

目前 OpenYurt v0.8.0 版本开发正在稳步推动,同时为更好的反对社区倒退,OpenYurt 社区成立了 ControlPlane, DataPlane,IoT 等 SIG 来协同社区 15+ 个我的项目。同时也欢送有趣味的同学来参加共建,独特摸索一个稳固,牢靠的无侵入云原生边缘计算平台的事实标准。

OpenYurt v0.8.0 版本的 roadmap 请关注:https://github.com/openyurtio…

参考链接:

OpenYurt Release v0.7.0

https://github.com/openyurtio…

OpenYurt v0.7.0 CHANGELOG

https://github.com/openyurtio…

OpenYurt v0.8.0 RoadMap

https://github.com/openyurtio…

Gateway CRD

https://github.com/openyurtio…

https://github.com/openyurtio…

[#30]:

https://github.com/openyurtio…

[#809]:

https://github.com/openyurtio…

[#842]:

https://github.com/openyurtio…

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

戳此处,立刻理解 OpenYurt 我的项目!

退出移动版