容器网络:专为开发人员设计的SDN系统

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:
越来越多的人关注新型容器网络软件,来运行可扩展的云应用。就像我们看到的,网络可以通过很多方式连接到容器,尽管最终选择哪个容器还不确定,但是他们提供很多选项来满足不同的基础设施。

容器网络和传统的SDN有什么区别?

SDN系统还处于发展阶段。它经常被创建为物理网络的逻辑版本,通过抽象的端口、网络或子网,又连接到逻辑网络交换机,并且连接到虚拟机上。作为服务项目的OpenStack网络Neutron和其它SDN软件,都支持这一概念。这对那些使用虚拟机的人来说有很多优势,因为他们的工作负载可以镜像到物理服务器上。虽然虚拟机更容易和配置物理机来对比,但他们和现在基于容器的计算相比,相对来说更稳定。随着微服务系统的发展,很多容器都可以被动态配置并迅速删除,所以用户需要一种可以容纳这种情况的网络系统。

关于容器网络的基础知识以及其局限性

从根本上来说,一个和网络相关的容器,反过来,可能也会桥接到网络接口。这也是默认情况下Docker网络系统做的事情,但在实际使用时又显得差强人意。它的局限性在有多个主机的时候会更为严重,因为不同主机上的容器之间不能通话,或者它可以用于容器管理或Kubernetes这种业务流程系统。Docker推出了一个叫libnetwork的新的多主机容器网络架构,可以解决这些问题。

Kubernetes

Kubernetes允许网络在pod中实现服务器部署,是应用程序和容器共享资源的集合。每个pod都被分配一个IP地址,和传统系统不一样,传统系统是每个服务器或虚拟机被分配一个IP地址。Pod不是一个容器,而是容器的集合。相反,容器和端口的协调可以确保应用程序之间相互通信。

这就回到了如何设计并部署应用程序的问题上。APP在容器中部署,反过来在pod中运行,这些APP具有高可用性,并能随时处理故障。相反,在传统的虚拟环境中,还要时刻关注虚拟机,以免出现故障。这就体现了在应用程序负载设计和基础设施运营方面的差异性。

新型SDN系统

传统的SDN架构已经逐步发展成为支持容器部署。像OpenStack或者vSphere这种orchestration架构系统最初是用于虚拟机的,但是现在已经用于运行容器。举个例子来说,Kuryr项目可以把Docker网络映射到OpenStack Neutron网络。VMware的NSX还支持容器部署。当然,这些为了适应容器网络的调整需要保护现有基础设施中的投资。

但是,新的SDN架构是这种情况外的兼容容器的架构。这些新系统对APP开发人员最有用处,因为它不用顾虑低层网络基础设施,而是创建了一个简单视图网络。开发人员关心连通性,但是不太关心传统概念,比如2层网络。3层IP地址对他们来说就足够了,新的SDN系统就专门提供这些。他们可以简化配置,加快部署。

案例

下面是一些新的开源网络系统的例子:

• Calico:Calico是一个第3层虚拟化网络服务,它使用内置的Linux网络和BPG协议并基于IP tables做转发,在数据中心中共享路由,不依赖任何硬件,只在网络中进行。这个系统可以运行多种平台,比如OpenStack、Docker和Kubernetes。
• Contiv:Contiv是把应用程序与基础设施的业务决策联系起来的一个项目。可用于Docker网络和存储容量的插件。
• CoreOS Flannel:Flannel是针对容器网络设计的覆盖SDN系统。它使不同主机上的容器就像在同一主机上一样相互通信。
• Weaveworks Weave Net:Weaveworks Weave Net是一个针对容器设计的覆盖SDN,可用于多个平台,并可跨主机工作。它提供自动发现服务,避免端口映射。使构建多个容器组成的应用程序变得更简单。

这些系统之间如何关联?

其实,想知道这些系统之间是如何联系的很难,但所幸的是,开发人员在设计的时候把很多都合并了。像Docker这种基本的容器系统都有一个默认的实现机制,运行在盒子外面,电池是内置的,但是插件可能会用于改变功能,电池可更换。这就类似于OpenStack的Neutron,也是利用插件。

网络是所有容器结合在一起的粘合剂,但是早期很难运用。这些新的SDN系统还有待提高,但真的值得探索。开发和生产团队可以利用它们来简化新的基于容器的应用程序的网络基础设施。根据不同的系统,它可以简化安全性、多数据中心部署等工作。

我建议企业检查新的开源项目,它可以简化并提高开发和运营团队的工作效率。虽然不容易拆封,但是值得一提的是,它常常有专业的公司在背后做指导。


原文发布时间为:2016年01月22日

本文作者:周南翻译

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
17天前
|
Ubuntu Windows
【Ubuntu/Arm】Ubuntu 系统如何链接有线网络(非虚拟机)?
【Ubuntu/Arm】Ubuntu 系统如何链接有线网络(非虚拟机)?
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
38 0
|
1月前
|
消息中间件 网络协议 C++
C/C++网络编程基础知识超详细讲解第三部分(系统性学习day13)
C/C++网络编程基础知识超详细讲解第三部分(系统性学习day13)
|
28天前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
26 0
|
28天前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
8天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
24 6
|
9天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
12天前
|
机器学习/深度学习 人工智能 运维
构建未来:AI驱动的自适应网络安全防御系统
【4月更文挑战第7天】 在数字时代的浪潮中,网络安全已成为维系信息完整性、保障用户隐私和确保商业连续性的关键。传统的安全防御策略,受限于其静态性质和对新型威胁的响应迟缓,已难以满足日益增长的安全需求。本文将探讨如何利用人工智能(AI)技术打造一个自适应的网络安全防御系统,该系统能够实时分析网络流量,自动识别并响应未知威胁,从而提供更为强大和灵活的保护机制。通过深入剖析AI算法的核心原理及其在网络安全中的应用,我们将展望一个由AI赋能的、更加智能和安全的网络环境。
25 0
|
23天前
|
存储 Unix Linux
深入理解 Linux 系统下的关键网络接口和函数,gethostent,getaddrinfo,getnameinfo
深入理解 Linux 系统下的关键网络接口和函数,gethostent,getaddrinfo,getnameinfo
14 0
|
28天前
|
移动开发 安全 小程序
mpaas常见问题之小程序容器,跑起来后一直提示 "网络不给力, 请稍后再试"如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
19 0