边缘计算中kubernetes网络能大一统吗?

首发:边缘计算社区
作者:边缘计算产业联盟

边缘计算集群更靠近终端设备,能提供低延时、高带宽、高可靠、本地安全隐私保护等特性,且集群服务器以linux系统为主,但海量服务器的存在增加了运维难度。
谈边缘计算网络,就得先说说容器以及容器编排系统。对于单机来说,容器技术能有效地将单个操作系统的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。容器实际上是结合了namespace 和 cgroup 的一般内核进程,注意,容器就是个进程\[1,2\]。Docker 是一个开源的应用容器引擎,在工业界和学术界引起了极大关注。Docker 使用客户端-服务器(C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。其架构如下图所示\[8\]:

image.png

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

后来,为了实现一个集群(多台服务器)中所有容器中的应用相互协调、共同工作,Apache Mesos、Google Kubernetes 以及 Docker Swarm 等容器编排工具应运而生。那么让集群中所有容器中的应用相互协调工作的基础是什么呢?这便是边缘计算网络要解决的问题。
Kubernetes在17年就已占据77%市场份额\[3\],而后也逐年上升。因此,主要来看看kubernetes。Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。其架构组件较多,不一一赘述,读者可自行查阅。这里着重提一下Pod。Pod是kubernetes中可以被创建、销毁、调度的最小单元,其中包含pause容器,以及一个或一组应用容器。如下图所示,一台主机节点可以创建多个Pod,每个Pod中能容纳多个容器,但都会在最初创建pause容器,其他容器与pause容器共享net、ipc、pid等资源。网络模型也是基于docker的网络模型创建和使用的。

image.png

Docker原生的跨主机网络模型有overlay,macvlan。macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。macvlan本质上是一种网卡虚拟化技术。macvlan 的最大优点是性能极好,相比其他实现,macvlan 不需要创建 Linux bridge,而是直接通过以太 interface 连接到物理网络\[4\]。但macvlan大大增加了路由的复杂度,为了避免对主机路由的干扰,常常使用overlay网络模型\[5\]。
Kubernetes可以看做是一个大型的docker容器编排系统,他的CNI(Container NetworkInterface)也遵循docker的原生网络模型。目前kubernetes CNI有非常多的选择,如:Flannel、Calico、Canal、Weave、Kube-router\[7\]和Antrea。

  Flannel: 最成熟、最简单的选择

  Calico: 性能好、灵活性最强,目前的企业级主流

  Canal: 将Flannel提供的网络层与Calico的网络策略功能集成在一起。

  Weave: 独有的功能,是对整个网络的简单加密,会增加网络开销

  Kube-router: kube-router采用lvs实现svc网络,采用bgp实现pod网络。

 Antrea支持多种网络模型(Overlayand non-overlay modes),可以使用VXLAN、Geneve、GRE或STT作为封装协议\[6\]。

2019年计算机网络方向顶级会议NSDI中一篇paper(Slim)吸引了笔者注意。它的motivation是原始overlay网络每个包在跨主机间通信的过程中,会遍历两次系统内核网络栈(如Figure 2),而Slim的做法是利用SlimRouter和SlimSocket来改造通信过程,让每个包在跨主机通信时仅仅遍历一次网络栈(如Figure 4)。从而提升吞吐,降低CPU占用。

image.png

笔者亲测了借助Slim在跨主机docker里的服务间通信,能让TCP的bandwidth提升到主机间通信的极限,并且可以在Antrea这种CNI中直接使用。猜想一下,overlay模式下的其他CNI可能也可以借助Slim的思想或方法使TCP的bandwidth提升到主机间通信的极限。
以小见大,延伸到整个kubernetes网络世界,笔者认为,虽然因历史原因,已经有很多CNI共存于市场,但如果某种CNI能在不同网络模型下都将性能提升到极致,并且更加方便用户直接使用的同时留出接口,提供二次开发的可能,那么有可能如同kubernetes一样良性循环,有望实现大一统。

作者:曹培睿,上海交通大学。
参考文献:

\[1\]https://www.cnblogs.com/shuig...
\[2\]https://coolshell.cn/articles...
\[3\]https://www.kubernetes.org.cn...
\[4\]https://blog.csdn.net/wfs1994...
\[5\] Zhuo D, Zhang K, Zhu Y, et al. Slim: OSKernel Support for a Low-Overhead Container Overlay Network\[C\]. networkedsystems design and implementation, 2019: 331-344.
\[6\]https://github.com/vmware-tan...
\[7\]https://www.jianshu.com/p/d93...
\[8\]https://www.runoob.com/docker...

推荐阅读

清华大学崔勇:基于边缘计算的沉浸式VR(附PPT全文)
边缘计算与算力网络
晨山资本王志飏:万物智联时代,智能企业的创新路径”

本文转载自边缘计算社区微信公众号原文链接点这里
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!
边缘计算社区:促进边缘计算领域知识传播,中立,客观,如果您对边缘计算、5G、物联网、云原生等领域感兴趣请关注微信公众号,也欢迎关注边缘计算社区极术专栏,定期更新。
2 阅读 247
推荐阅读
0 条评论
关注数
100
内容数
56
关于边缘计算的一切。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息