容器网络方面的挑战和要求

在最近于加拿大温哥华召开的OpenStack峰会上,6000多名与会人士接受了使用容器情况方面的调查。被问及是否在生产环境中有容器时,台下一小部分听众举手示意――据我估计大概有5%。但是被问及谁在接下来几年考虑将容器迁移到生产环境时,几乎人人都举手。

这一幕生动地表明,虽然容器是一项现处于早期阶段的技术,但众多企业组织为它制定了宏伟计划。由于Docker和Kubernetes等多种选择,用户们在认真考虑自己的选择道路。容器提供了几个明显的优势:简化和加快了应用程序的部署、可移植性以及占用少量的资源,但是也存在风险。

 

一大风险就是整合。开源社区正在考虑如何将容器整合到现有的云和自动化框架当中,比如Magnum和几个OpenStack项目。另一个问题就是容器网络。用户们常常问我如何设计一套同时支持容器和虚拟机的网络解决方案。虚拟机和容器(以及部署的裸机系统)通常带来了全然不同的网络模型。

不妨后退一步,考虑一下如今的容器网络是如何工作的。容器网络基于一种简单的架构,主要是单主机解决方案。比如说,Docker网络模型基于几个简单的假定:

•它充分利用与容器相连接的本地(每个主机里面的)Linux网桥。

•每个计算节点都有集群看得见的IP地址。

•每个容器都有集群看不见的专有的IP地址。

•网络地址转换(NAT)协议用来将容器的专有IP地址绑定至计算节点的公共IP地址。

•此外,负载均衡系统可用来将服务映射至一组IP地址和端口。

•iptable用于应用程序与租户之间的网络分段和隔离。

如果运用到容器网络上,这种模型在许多方面显得不尽如人意。它限制了用容器构建的多租户云解决方案跨多个主机进行扩展的功能。高可用性方面的配置很有限。无论工作负载的移动性如何,一致的连接性和安全性也成问题。另外,iptable和NAT的结合使用限制了可扩展性和性能,这让使用容器的主要优势之一荡然无存。

那么,面向容器的网络解决方案应该提供什么呢?另外,你又该如何评估解决方案与特定应用程序的契合度?我们不妨把这分成三个问题;这些答案应该可以帮助你更深入地了解容器网络方面的独特之处。

1. 你会在基于容器的基础设施上运行哪种类型的应用程序?

这直接影响到你网络基础设施的蓝图以及如何构建网络基础设施。你的应用程序需要丰富的网络拓扑结构以及高级服务吗?它们是多租户模式,还是简单的“扁平网络”就足以胜任?

面向容器的虚拟网络解决方案让最终用户(租户)和云操作人员都可以定义并控制各自的网络要求。解决方案还必须提供跨多个物理主机的微分段(micro-segmentation)和隔离所需要的构件。

2. 性能和可扩展性方面的要求是什么?

你在思考这个问题时,要考虑基础设施上应用程序的要求。应当考虑这样的解决方案:在一种完全分布式的架构中提供隔离和网络功能,从而为你应用程序的发展和扩展铺平道路。随着部署的云越来越庞大,网络解决方案应该跨多个物理主机向外扩展,还应该在云编排框架里面紧密地整合起来。

3. 你需要将容器与虚拟机和裸机工作负载互联起来吗?

大多数应用程序需要用容器支持混合工作负载,所以要寻求同时支持两者的解决方案。一致的抽象模型(网络、子网、路由器、接口和浮动IP地址)和一套用于配置和自动化的一致的API,是完成这项工作的方法。

云用户呼吁面向任何工作负载的网络模型与功能强大的网络抽象结合起来,从而简化容器到容器的联系,并且增添先进的网络功能和微分段。

作者:布加迪

来源:51CTO

时间: 2024-07-30 07:49:54

容器网络方面的挑战和要求的相关文章

你将如何缓解容器网络带来的挑战?

基于软件容器网络对NAT的依赖以及NAT自身的局限性,网络工程师在其基础设施内部署容器时面临一些显著的挑战,但通过了解容器主机如何支持NAT模式可帮助我们避免这些问题. 首先,让我们看看主机如何创建新的网络命名空间(这在概念上类似于MPLS/VPN模型中的虚拟路由和转发实例)以及被称为虚拟以太网(vEth)的特殊网络接口.vEth接口是用于连接命名空间的一对端点,主机将vEth的一端放在默认命名空间用于与外部世界通信,另一端放在新创建的命名空间. 默认命名空间中的vEth被绑定到桥接,例如Doc

4 个你需要了解的容器网络工具

有如此之多的各种新的云计算技术.工具和技术需要我们跟进,到底从哪里开始学习是一个艰难的决定.这一系列下一代云计算技术的文章旨在让你快速了解新兴和快速变化领域的重大项目和产品,比如软件定义网络(SDN).容器,以及其交叉领域:容器网络. 对于企业容器部署,容器和网络之间的关系仍然是一个挑战.容器需要网络功能来连接分布式应用程序.根据一篇最新的企业网络星球的文章,一部分的挑战是"以隔离的方式部署容器,在提供隔离自己容器内数据的所需功能的同时,保持有效的连接性". 流行的容器平台 Docke

在Docker中使用Open vSwitch创建跨主机的容器网络

本文讲的是在Docker中使用Open vSwitch创建跨主机的容器网络,[编者的话]本文介绍了如何使用Open vSwitch为Docker 1.9.0及以后版本提供网络支持.操作前请先确认你已经按照INSTALL.md 编译,或者通过包管理器安装了Open vSwitch.关于如何安装Docker,请参考www.docker.com上提供的介绍. Docker从1.9.0版本之后提供了跨主机的网络支持.通过将Docker和Open vSwitch整合,则可以利用Open vSwitch v

容器网络Calico进阶实践 | 褚向阳

各位晚上好,我是数人云的褚向阳,接下来要跟大家分享的主题是<容器网络Calico进阶实践>. 距离上次聊 Calico 已经过去快半年的时间了,数人云也一直在努力将容器网络方案应用到企业客户的环境中,Calico v2.0 也马上就要发布了,这次跟大家一起感受下新版. 需要说明下,本人跟 Calico 没有任何直接关系,也只是个"吃瓜群众",做为使用者,想跟大家聊聊心得而已. 这次分享的内容主要包括: 简单总结下作为使用者我看到的 Calico 的变化,包括组件,文档和 c

Linux内核为高级容器网络提供关键技术

本文讲的是Linux内核为高级容器网络提供关键技术[编者的话]本文介绍了一个为容器提供网络解决方案的实验性开源项目Cilium,该项目利用Linux的BPF技术在应用层完成容器的网络策略. [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述.架构.日志和监控,部署.自动驾驶.服务发现.网络方案等核心机制分析,进阶篇--Kubernetes调度工作原理.资源管理及源码分析等. 实验性开源项目Cilium使用现有的Linux内核特性为容器提供更快更有力的网络. 容

容器网络概述

本文讲的是容器网络概述[编者的话]本文介绍容器网络,对容器网络的实践. 我在博客中经常讨论关于容器的事情,是因为我在工作中一直在关注着它们. 对于这些新奇容器的东西,最难理解的实际是关于容器的网络问题. 虽然有很多不同的方式来解决容器网络互连问题,并且介绍这方面的文档也很多,但是有些用起来很糟糕.我对这些非常的困惑,因此我试图在这篇博客当中用非专业术语的方式来理清这个问题.(我不喜欢夸夸其谈,但是我对于容器网络文档当前状态真的很沮丧.) 到底容器网络是什么呢? 当我们在容器中运行程序时,你将有两

有容云:容器网络那些事儿

本文讲的是有容云:容器网络那些事儿[编者注]本文根据7月31日有容云<Docker Live时代线下沙龙-北京站>嘉宾分享内容整理而成,分享嘉宾杜东明,有容云高级技术顾问,十年IT经验,IT行业的全栈工程师.涉足领域包括存储.网络.备份/容灾.服务器/终端虚拟化.Docker等.拥有丰富的一线客户经验,曾帮助工行.建行.光大.国寿.泰康等诸多金融客户设计其虚拟化基础架. 我相信,真正拿容器工作或者是去运维一个容器环境,真正在容器上面做生产的时候大家都会遇到的一个话题就是容器网络,所以我今天给大

三种容器网络方案

本文讲的是三种容器网络方案[编者的话]本文是TheNewStack容器电子书的一部分,着重介绍了容器的网络互联方案.有兴趣的同学可以关注下电子书. 任何云端部署容器的关键之一是管理容器间的网络.在研究编写我们最新的电子书<Networking, Security & Storage with Docker & Containers>期间,我们总结了三种通过插件集成容器网络的方式.前一篇文章中,我们介绍了容器网络模型(CNM)和容器网络接口(CNI),这篇文章中我们会介绍它们的起

理解Docker容器网络之Linux Network Namespace

更多深度文章,请关注:https://yq.aliyun.com/cloud 由于2016年年中调换工作的原因,对容器网络的研究中断过一段时间.随着当前项目对Kubernetes应用的深入,我感觉之前对于容器网络的粗浅理解已经不够了,容器网络成了摆在前面的"一道坎".继续深入理解K8s网络.容器网络已经势在必行.而这篇文章就算是一个重新开始,也是对之前浅表理解的一个补充. 我还是先从Docker容器网络入手,虽然Docker与Kubernetes采用了不同的网络模型:K8s是Conta