三种容器网络方案

简介: 本文讲的是三种容器网络方案【编者的话】本文是TheNewStack容器电子书的一部分,着重介绍了容器的网络互联方案。有兴趣的同学可以关注下电子书。
本文讲的是三种容器网络方案【编者的话】本文是 TheNewStack容器电子书 的一部分,着重介绍了容器的网络互联方案。有兴趣的同学可以关注下电子书。

任何云端部署容器的关键之一是管理容器间的网络。在研究编写我们最新的电子书 《Networking, Security & Storage with Docker & Containers》 期间,我们总结了三种通过插件集成容器网络的方式。 前一篇文章中 ,我们介绍了容器网络模型(CNM)和容器网络接口(CNI),这篇文章中我们会介绍它们的起源和另一个领域: Apache Mesos 生态。

CNM与Libnetwork

Docker的可扩展性设计模型使得我们可以通过向daemon代码添加扩展库的方式来扩展系统的功能,这涉及一个代码库,类似于Docker运行时,但库仅用作补充。这个库是 libnetwork ,最初由SocketPlane团队开发作为Docker第三方项目发布,SocketPlane公司在2015年3月份被Docker收购。

本质上讲,libnetwork提供了一种支架,开发人员可以基于它编写网络驱动。libnetwork的约束规则称为容器网络模型(CNM),CNM被认为是容器的一个权利法案。权利之一是平等地访问网络中所有其它容器;分割,隔离和流量分配是通过划分网络地址来实现的。服务发现模型为容器提供了一个互相通信的方法。

libnetwork目的是实现和使用任何类型的网络技术来连接、发现容器。对任何网络覆盖方案,它没有指定一个首选方案。 Calico 就是一个独立、开源、供应商中立的Layer 3网络覆盖方案。开发人员最近将Calico的calicoctl库修改为可寻址,可以作为Docker的一个插件。

ClusterHQ 是第一批为数据库实现持久性容器系统的公司之一,产品名为 Flocker 。Flocker使用libnetwork库和Weaveworks的 Weave Net 网络覆盖方案。ClusterHQ产品副总裁 Mohit Bhatnagar 告诉我们:“我认为我们正处于一个临界点,最初那些用容器部署无状态服务的客户出现了部署有状态服务的潜在需求。而有状态服务需求的客户数量,令非常惊喜。”

Docker方案的关键架构区别在于正在扩展的部分。在Docker架构中,Docker Engine的守护程序运行在要暂存应用程序的主机服务器上,Docker Swarm重新配置了Docker Engine的网络视图,将其替换为集群中运行的服务器的混合网络视图。Swarm实际上是编排器,但插件可以在较低层扩展Docker Engine。

容器网络接口

Kubernetes 项目发布了实现网络可扩展性的 指南 。(指南认为)网络扩展应该不借助网络地址转换(NAT)就能寻址到容器的IP,并且允许以相同的方式解决自己的寻址问题。基本上,只要组件是IP可寻址的,组建就可以很好地运行在Kubernetes上。在这种背景下,理论上任何你想实现的功能不需要必须绑定到Kubernetes上,把它作为Kubernetes的扩展组件就可以了。

Google技术经理 Tim Hockin 解释到:“我们一直关注我们在Kubernetes网络上所做的,显然,核心系统没有办法处理每一个网络用例。世界上的每个网络都像雪花一样独一无二,我们没有办法全部实现到我们的系统中。我们必须把它外部化,插件化是我们的方式。”

CoreOS后来发布了自家的容器网络接口(CNI),它比CNM更基础,因为它只有两个命令:创建容器、删除容器。配置文件放在JSON中,通过json文件实例化容器内容和分配IP地址。因为这遵循Kubernetes的网络指南,Google发布的指南对CNI友好。因此,Flannel和Weave Net已经使用CNI实现各自的Kubernetes插件。

Hockin承认这些扩展把灵活新颖的网络连接带到Kubernetes环境中,但是它们也带来了损耗。“一般Kubernetes对overlay网络的观点是,如果你真的必须使用overlay,那就使用它们吧。这会给他们带来更多的复杂性、管理和沟通成本。我们发现越来越多的Kubernetes用户直接使用Layer 3路由,相比overlay方案,Layer3减少了他们的时间成本。”

在重新评估了可扩展框架当前状态后,ClusterHQ得出结论:模型的选择将取决于,或许完全取决于集成到容器的工作量。ClusterHQ工程和运营高级副总裁 Sandeepan Banerjee 解释到:“如果你的作业以前运行在VM上,VM有IP地址并且可以与项目中的其他VM通信,CNI模型和Kubernetes以及Weave是你的最佳选择。”Banerjee然后引用Kubernetes的no-NAT约定作为关键理由。他又继续讲到“如果你之前不了解这些,但是你想充分尝试Docker,包括Docker的网络库、编排框架Swarm等,你可能会发现Docker提供的解决方案很强大,它有很多优势、对overlay网络也很灵活。”

Mesosphere和它的插件

Mesosphere已经发布了或许是最复杂的Mesos商业实现 DC/OS ,并且发布了编排系统 Marathon 与Kubernetes直接竞争。

作为一个调度平台,扩展Mesos功能的工作早就开始了。实现了Hadoop大数据任务调度、Jenkins的任务管理和Docker容器部署等,这些功能已经在各自的平台内实现。但在2016年夏天,Mesosphere开始有了不同的观点,开始准备利用CNI扩展容器连接的新方案。在撰写本文时,Mesosphere已经发布了一份文件,在DC/OS路线图实施阐明其支持SNI的意图。

Mesosphere创始人兼首席架构师 Ben Hindman 讲到:“我们现在的世界中有足够多的供应商、接口和网络存储的实现方案。我认为插件的实现方式非常重要。现在尚不明确是否由Docker定义的插件将成为通用插件。我认为你今天在行业中所看到的,并不一定是未来的样子。”

目前DC/OS使用开源的负载均衡服务发现系统 Minuteman 实现容器互连。它截取两台主机上容器的网络包,然后重写包,添加目的地的IP地址。这种跨云网络通信的实现方式将DC/OS与其它实现方式区别开来。同样,DC/OS提供了设置虚拟可扩展局域网(VXLAN)的功能,建立的VXLAN中的路由规则。Mesosphere并没有重新发明轮子,实际上,它让用户基于性能或其它因素自己选择overlay方案。

Hindman告诉我们,他认为Flannel,Weave和其它overlay网络系统在解决容器网络问题上,比VXLAN方案更有价值。事实上,这种替代方案将出现,他说到,“作为一个行业(容器网络解决方案),我们发现一个事实:我们正在尝试不同的解决方案来实现我们的想法。我认为我们可能会解决一些问题,overlay方案也会继续存在。但是我相信还会有其它方案,没有使用现存的SDN技术,就可以连接容器。”

Integration Towards the Future

今天,在IT和数据中心预算中,容器化通常不是一个单独的订单项。当签署支票的人不明白他们的钱的花在什么地方时,就需要详细的解释来让他们弄明白这些概念。有些人可能过多的解释淡化了容器集成的主题。事实上,集成的方案把一些基本的思想提升到共同讨论的层面。大家都理解到基本需求是让新旧系统共存,让它们通过接口通信。尽管这些方法在几年内可能看起来很复杂或不切实际,但为了达到一个良好的解决方案而迸发出来的灵感将使这一切都值得追求。

原文连接:THREE APPROACHES TO CONTAINER NETWORKING(翻译:adolphlwq)

=========================================
译者介绍

adolphlwq,博客地址:QuanTalk

原文发布时间为:2016-10-14

本文作者:adolphlwq

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:三种容器网络方案

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
362 0
|
8月前
|
存储 网络协议 数据库
脑控网络设计方案
本内容详细描述了一个虚构的“脑控通信网络”系统架构及通信流程,涵盖核心网络组成、用户开户流程、心灵感应终端注册、跨网络通信机制,以及脑控网与互联网、移动网的数据交互方式。内容包含模拟的通信协议设计、数据包标识、网络路由机制等技术细节,整体基于作者原创的设定,用于探讨未来通信的可能性。
328 74
|
数据采集 数据安全/隐私保护
脑控网络设计方案续写
本文补充说明了普通设备通过脑控终端热点接入互联网的数据传输流程,涵盖连接认证、数据包标识、核心网绑定与编号生成、数据转发及断开连接的完整过程,详述了设备间通信、验证、路由与逻辑删除机制,完善了脑控网络与普通互联网交互的技术闭环。
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
11月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1735 39
|
10月前
|
存储 Linux 容器
【Container App】在容器中抓取网络包的方法
本文介绍在Azure Container App中安装tcpdump抓取网络包,并通过Storage Account上传抓包文件的方法。内容包括使用curl和nc测试外部接口连通性、长Ping端口、安装tcpdump、抓取网络包、以及通过crul命令上传文件至Azure Storage。适用于需要分析网络请求和排查网络问题的场景。
304 0
|
Web App开发 监控 网络协议
网络分析与监控:阿里云拨测方案解密
阿里云网络拨测业务提供了全球、多种协议、多种网络态势的用户网络性能和用户体验监控场景的全面可观测方案。该文章从拨测场景下,介绍了用户如何快速的构建一套全球用户视角的服务可用性大盘,为客户的业务保驾护航。
1707 182
|
网络协议 Docker 容器
使用网络--容器互联
使用网络--容器互联
237 18
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
376 22
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
714 6