应对 Docker 网络功能难题的挑战与思考
尽管围绕容器技术出现的炒作新闻随处可见,但这项应用程序打包技术方案也确实一直在不断演变,特别是在网络功能层面。
在过去一年当中,Docker容器方案中的网络功能已经迎来了一系列长足进步。与此同时, Docker还建立起一套插入架构 ,允许开发者 将更多先进网络管理工具引入进来 以实现容器控制。
而在另一方面,多家初创企业亦开始着手打造定制化容器管理平台,而以思科与VMware为代表的各传统厂商也开始将容器控制能力添加到自有网络管理工具当中。因此,早期出现的各类容器网络难题已经开始得到解决,不过必须承认、我们距离理想的最终目标仍有很长的道路要走。
基础性挑战
容器网络方面的问题似乎永远存在而无法得到根除。托管在同一物理服务器之上的各容器系统会彼此交互并进行数据共享。不过Docker开发人员最初并没有提供必要的此类能力,即将一套容器由一台主机迁移到另一台,或者是将某套容器与运行在另一主机之上的其它容器相对接。
“最大的挑战主要出现在跨容器通信层面,”技术分析师兼博主Keith Townsend指出。“从一套容器到另一套,大多数网络专业人士都会在实现过程中遭遇职业生涯中最严重的阻碍。”
作为同名开源容器项目的开发方,Docker公司中的各位工程技术人员已经意识到了这个问题,并开始着手加以解决。
内置电池,支持更换
正是由于网络难题的存在,Docker公司于2015年3月收购了初创企业SocketPlane,后者的主要业务就是将软件定义网络功能以原生 方式添加到Docker当中。今年6月,Docker公司宣布将SocketPlane技术整合至其开源项目当中。新的网络功能采用基础Linux桥接机 制与VXLAN(即虚拟可扩展LAN),允许容器与处于同一Swarm当中的其它容器进行通信——顺带一提,所谓Swarm是指Docker专用的容器集 群描述名称。跨主机容器网络问题就此得到解决。
与此同时,Docker还放出了libnetwork,其旗下另一开源项目的代号。该项目允许第三方网络管理工具以“插入”方式替代Docker当中内置的网络功能。以VMware NSX、思科ACI等为代表的多款虚拟网络产品已经成为首批受支持方案。
“其建立起一套 抽象层 ,”Docker公司产品高级副总裁Scott Johnston表示。“这是一套 3层网络覆盖体系 ,允许 容器与之进行对接 。”
Docker目前拥有 两种网络管理方式 。其一为原生方式,即 开箱即用 且受到Docker支持的现成功能——归功于收购SocketPlane,Docker已经拥有了自己的一套跨主机容器连接机制。如果用户需要 更多先进网络功能 ,例如以编程化方式建立起网络、设置网络政策、安装防火墙、添加负载均衡方案或者其它虚拟应用,那么则可以选择多种 网络管理产品 。Docker公司将其方案形容为“内置电池,支持更换”。Johnston指出,他希望能够在未来实现类似的 容器存储插入实现模式 。
技术是最容易解决的问题
Docker公司产品高级副总裁Scott Johnston指出,在容器网络方面技术是最容易解决的问题。
Johnston表示,其实这些技术能力方面的问题是最容易解决的部分。 让开发人员在容器当中构建应用程序并推动IT部门加以使用才是更大的挑战所在 。
容器化应用程序与传统企业应用相比拥有着截然不同的特性。在过去,IT部门的目标在于提供不会出错的弹性系统,但现在他们的首要任务变成了想办法提供容量与敏捷性能够即时调整的高灵活度网络体系。
“从网络的角度来看,应用程序交付与性能水平关系到网络基础设施在支持此类新型应用以及用例时的实际表现,”思科公司云基础设施服务CTO Ken Owens解释道。“网络工程师的角色负责思考可编程网络、软件定义网络以及网络功能虚拟化等技术成果能够在这方面起到哪些积极作用。”
这些工具允许网络资源配置得以自动化完成——而不再像过去那样以手动方式进行——这很可能会在不久的将来成为真正的市场吸引力,并促使采取此类应用范例的企业客户在进行利弊权衡之后下决心起用上述新机制。