首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >边缘计算中kubernetes网络能大一统吗?

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

作者头像
边缘计算
发布2020-06-06 16:47:53
8270
发布2020-06-06 16:47:53
举报
文章被收录于专栏:边缘计算边缘计算

边缘计算集群更靠近终端设备,能提供低延时、高带宽、高可靠、本地安全隐私保护等特性,且集群服务器以linux系统为主,但海量服务器的存在增加了运维难度。

谈边缘计算网络,就得先说说容器以及容器编排系统。对于单机来说,容器技术能有效地将单个操作系统的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。容器实际上是结合了namespace 和 cgroup 的一般内核进程,注意,容器就是个进程[1,2]。Docker 是一个开源的应用容器引擎,在工业界和学术界引起了极大关注。Docker 使用客户端-服务器(C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。其架构如下图所示[8]:

  • 镜像(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的网络模型创建和使用的。

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占用。

笔者亲测了借助Slim在跨主机docker里的服务间通信,能让TCP的bandwidth提升到主机间通信的极限,并且可以在Antrea这种CNI中直接使用。猜想一下,overlay模式下的其他CNI可能也可以借助Slim的思想或方法使TCP的bandwidth提升到主机间通信的极限。

以小见大,延伸到整个kubernetes网络世界,笔者认为,虽然因历史原因,已经有很多CNI共存于市场,但如果某种CNI能在不同网络模型下都将性能提升到极致,并且更加方便用户直接使用的同时留出接口,提供二次开发的可能,那么有可能如同kubernetes一样良性循环,有望实现大一统。

作者:曹培睿,上海交通大学。

参考文献:

[1]https://www.cnblogs.com/shuiguizi/p/10922049.html

[2]https://coolshell.cn/articles/17010.html

[3]https://www.kubernetes.org.cn/3241.html

[4]https://blog.csdn.net/wfs1994/article/details/80659232

[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-tanzu/antrea

[7]https://www.jianshu.com/p/d9330360fc8c

[8]https://www.runoob.com/docker/docker-architecture.html

感谢阅读,欢迎扩散传播!感谢!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 边缘计算社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档