非全研究生计算机网络-k8s网络插件(CNI)性能分析

简介: 非全研究生计算机网络-k8s网络插件(CNI)性能分析

由于计算机网络课程需要,看了一些k8s网络机制,随翻译了一篇论文,说实话有点空洞。

作者:

Youngki Park School of Electronic Engineering Soongsil University Seoul,

Korea Hyunsik Yang School of Electronic Engineering Soongsil University Seoul,

Korea Younghan Kim School of Electronic Engineering Soongsil University Seoul,


摘要

轻量级云的重要性日益凸显

,微服务架构的基础设施越来越重要。 这有

导致许多研究人员提出基于容器的虚拟化

计算服务。 具体来说,对于网络,容器

网络接口技术被提议,用于连接

基于虚拟机的异构网络服务

云和容器。 为了提高云系统的网络性能,我们需要来比对CNI插件的详细设计和网络性能。 本文围绕各种CNI

技术,我们使用 OpenStack 设计了网络架构

云平台和Kubernetes容器管理

环境,随后对各种设计进行性能分析。 实验的结论对云计算系统的部署有非常有价值的指导作用。


关键词

OpenStack, Kubernetes, Container Networking Interface, CNI, Kuryr


介绍

基本上,云系统使用虚拟机来虚拟化物理资源来

提供独立的计算资源和来宾系统,来实现虚拟化网络和数据处理的灵活操作[1]。 但是,来宾操作系统正常运行需要包含

所有内核模块和用户硬件库

,所以对主机的CPU、内存、I/O

并且资源要求很高。 另一方面,

基于容器的技术只共享主机的内核

模块,它只需要用户的库和工具模块,

以及在用户空间中运行程序所需要的操作系统资源,例如来宾操作系统[2]。


根据这些优点,集装箱技术有一直在积极研究如何提供轻量服务。因此,Kubernetes管理和部署集成到OpenStack等云系统中,容器网络接口(CNI)技术建议与集装箱网络联动。基于在此基础上,Kuryr-CNI插件被开发用于链接NeutronOpenStack的网络和容器的网络。Kuryr-CNI通过OpenVswitch覆盖网络提供服务OVS, OpenStack的基本网络。然而,它不考虑数据处理性能,因为


基于这些优势,我们一直在研究容器技术如何提供轻量化服务。因此,将管理和部署容器的Kubernetes集成到OpenStack等云系统中,并提出了容器网络接口CNI (container Networking Interface)技术与容器网络对接。在此基础上,开发了Kuryr-CNI Plugin,将OpenStack的Neutron网络与容器网络连接起来。kurur - cni通过OpenStack的基础网络OVS (OpenVswitch)覆盖网络提供服务。但是,由于提供服务的网络结构或实例的增加,往往忽略了数据处理性能。本文设计了适用于云系统和容器系统集成的环境下,一种基于CNI的网络结构。我们采用Kubernetes的Flannel网络结构、OpenStack Kuryr网络的overlay网络结构和native-VALN网络结构来验证性能。


因此,本文根据数据包处理技术对基于容器的云的网络结构进行分类,并对其性能进行分析。我们对云环境下的网络架构进行了分类,并验证了每种架构的性能。对于性能评估,我们使用Kubernetes作为编排器在OpenStack环境中实现它。


相关的工作

介绍构建云环境容器系统的相关技术。首先,我们介绍容器、轻量级虚拟技术,并研究用于容器分发和管理的容器编排引擎(COE)技术。介绍了容器环境的开源网络架构。


A.容器和容器编排

云系统中的虚拟机是通过硬件虚拟化运行独立操作系统的虚拟机。它需要操作系统内核、二进制文件和执行服务应用程序所需的相关库。另一方面,与vm相比,container对硬件的依赖性更小,因为它与主机共享运行应用程序所需的内核模块,并且只需要程序二进制文件和库[3]。此外,由于服务的多样性和容器数量的增加,开发了[4]的容器编排引擎(COE),这是一个用于容器创建、删除和分发等自动化管理的平台。比较有代表性的开源软件有Kubernetes、Docker swarm、Apache mesos等。COE的主要功能包括对容器的调度、对容器和COE系统的高可用性支持、容器系统和容器的健康检查、分布式架构以及对在集群中创建的客户机连接的负载平衡。

46.png

云环境下容器支持的网络架构

Docker Swarm也可以提供实验环境,但是本文的实验环境和网络结构是基于目前业界使用最活跃的Kubernetes,并与云环境[5]集成而设计的。


B. Kubernetes的开放网络技术

在本文中,我们使用Kubernetes(也称为k8s)作为编排进行实验。Kubernetes使用插件提供了许多网络特性。在分析中,我们使用了Kuryr和kubernetes[6],它集成了云网络功能和Flannel,是最常用的网络解决方案。Flannel网络是Kubernetes环境下使用的覆盖网络,使用VxLAN或UDP进行报文传输。在不支持VxLAN的情况下,可以使用UDP进行调试,但一般不使用。Kuryr是一个OpenStack项目,它可以利用所有的neutron功能及其插件和服务。使用Kuryr, COE可以使用 neutron 特性。OpenStack neutron 管理所有网络例如:端口创建、负载均衡处理等,k8s节点根据 neutron 分配的信息在k8s-pod上创建端口后分配ip。此外,它还提供了基于虚拟交换机的VxLAN、VLAN、Flat等多种网络特性。


容器网络架构设计

在本节中,我们设计了云环境下各种容器网络结构,并对其进行了实现和评估。云环境构建为开源OpenStack环境,用于容器处理的COE使用Kubernetes配置。


基于云架构的容器

如图1所示,我们配置了一个容器网络环境。实验架构由一个控制节点和三个计算节点组成。控制节点由OpenStack网络管理功能和COE控制器组成。而执行容器的计算节点(也称为Minion)由一个代理组成,用于与容器执行引擎(Docker engine)和控制服务器通信。

47.png

Test-beds 的云系统架构


基于容器的网络架构设计

如图2所示,控制器deamon安装在master节点,POD部署在Minion。 我们在所有具有 OpenStack 网络环境、集群网络、Kuryr 和 Flannel 网络插件的节点上设置了 Open Virtual Switch (OVS),它是一个虚拟软件交换机[7][8]。

48.png

Test-beds 的云系统架构


节点间通信的数据平面和控制平面使用VxLAN隧道、VLAN和Flannel进行配置。 容器的网络实验环境配置如图3所示,为了衡量性能,我们配置了A到C经B的数据路径。


使用 OVS 的容器网络映射到位于 Pod 命名空间中的虚拟接口和在主机节点创建的 Tap 接口。 Pod 传输数据时,根据OVS 中管理的tag-id 确定VxLAN 和VLAN。 Pod传输数据时,根据OVS管理的tag-id确定VxLAN和VLAN。 在 Flannel 网络的情况下,Pod 的命名空间接口和主机的 Tap 接口之间的结构是相同的,但 Tab 接口与 Docker 的桥接网络互通。 Docker 网桥与 flannel 网桥网络互通,并将数据发送到 flannel udp 或 vxlan 处理守护进程。

49.png


Overlay网络数据吞吐量对比


图 4 显示使用 ovs 的覆盖网络的吞吐量高于 Flannel。 在flannel网络的情况下,从OS User Space的POD传输到内核的tap接口的数据,通过flannel桥重新传输给User Space的flannel守护进程,将数据发送到主机的接口 .

50.png

覆盖网络和 Kuryr 本地 vlan 数据吞吐量

比较


由于在数据包传输中频繁调用操作系统和用户内核空间,网络开销增加。 如图5所示,在使用Native vlan(OVS-VLAN或MVAVLAN)时,没有MTU变化和VxLAN隧道带来的开销,性能得到提升。 但是,应考虑主机节点的网络限制、有限的 VLAN ID、硬件支持等。


结论

本文根据数据包加速技术对基于容器的云的网络架构进行了分类,并对其性能进行了分析。 为了分析性能,我们在 OpenStack 环境中以 kubernetes 作为协调器实现了它。 此外,基于Kuryr-OVS和flannel网络设计了网络架构,并使用了支持offload的overlay网络和VLAN。 在 Flannel 的情况下,我们确认网络开销高于 OVS native-vlan 和 vxlan,因为它频繁调用 User 和 Kernel。


因此,云环境中容器的网络架构应根据系统配置和硬件支持来考虑。 在未来的研究中,我们将在系统架构中研究和验证容器的高速网络架构(VPP、DPDK、SRIOV等)。


引用

[1] Kumar, Rakesh, et al. “Open source solution for cloud computing platform using OpenStack.” International Journal of Computer Science and Mobile Computing, vol. 3(5), pp. 89-98, May. 2014.

[2] Bernstein, David. “Containers and cloud: From lxc to docker to kubernetes.” IEEE Cloud Computing, vol. 1(3), pp. 81-89, Sept. 2014.

[3] Zheng Li, Maria Kihl, Qinghua Lu, Jens A. Andersson, “Performance Overhead Comparison between Hypervisor and Container Based Virtualization.”, 2017 IEEE 31st International Conference on Advanced Information Networking and Applications (AINA), pp. 955-962, 2017.

[4] Khan, Asif. “Key Characteristics of a Container Orchestration Platform to Enable a Modern Application.” IEEE Cloud Computing, vlo. 5(4), pp. 42-48, Oct 2017.

[5] Burns, Brendan, et al. “Borg, omega, and kubernetes.” Commun. ACM, vol. 59(5), pp. 50-57, Apr. 2016.

[6] Kuryr-kubernetes – Openstack, https://docs.openstack.org/kuryrkubernetes/latest, accessed May 2018.

[7] flannel – CoreOS, https://coreos.com/flannel/docs/latest, accessed May. 2018.

[8] Kuryr - OpeenStack, https://wiki.openstack.org/wiki/Kuryr, accessed May. 2018.


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4天前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
2月前
|
Kubernetes 网络协议 网络安全
k8s中网络连接问题
【10月更文挑战第3天】
185 7
|
2月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
858 1
|
2月前
|
缓存 监控 网络协议
计算机网络的常用的网络通信命令(Windows)
本文介绍了网络技术中常用的命令,如ping用于检测网络连通性,ipconfig查看TCP/IP配置,netstat监控网络状态,arp显示和修改ARP缓存,at安排任务执行,tracert追踪路由,以及nbtstat获取NetBIOS信息。
38 1
|
3月前
|
Kubernetes 容器 Perl
Kubernetes网络插件体系及flannel基础
文章主要介绍了Kubernetes网络插件体系,特别是flannel网络模型的工作原理、配置和测试方法。
120 3
Kubernetes网络插件体系及flannel基础
|
2月前
|
安全 区块链 数据库
|
2月前
|
网络协议 网络架构
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
52 0
|
2月前
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
151 0
|
4月前
|
Kubernetes Cloud Native 网络安全
云原生入门指南:Kubernetes和容器化技术云计算与网络安全:技术融合的新篇章
【8月更文挑战第30天】在云计算的浪潮中,云原生技术如Kubernetes已成为现代软件部署的核心。本文将引导读者理解云原生的基本概念,探索Kubernetes如何管理容器化应用,并展示如何通过实践加深理解。
|
6天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。