容器网络:专为开发人员设计的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日

本文作者:周南翻译

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
103 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
3月前
|
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地址、网络接口列表及测试容器启动验证修复效果。
|
4月前
|
网络协议 Docker 容器
使用网络--容器互联
使用网络--容器互联
102 18
|
9月前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
4月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
141 0
|
6月前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
379 30
|
10月前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
293 61
|
9月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
907 7
|
9月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
316 3
|
11月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
536 1