关于容器云的三种网络设计

简介: 【2月更文挑战第9天】容器网络设计:隧道、路由、VLAN。

Docker一直以来的理念都是“以简单为美”,从Docker对Linux网络协议栈的操作可以看到,Docker一开始并没有考虑到多主机互联的网络解决方案。之后Docker收购了一家网络解决方案公司Socketplane,将原有的网络部分抽离,独立成Docker的网络库,即libnetwork。libnetwork实现了5种驱动,通过插件的形式允许用户根据自己的需求来实现网络驱动,但libnetwork组件只是将Docker平台中的网络子系统模块化为一个独立库的简单尝试,离成熟和完善还有一段距离。


随着容器技术在企业生产系统的逐步落地,用户对于容器云的网络特性要求也越来越高,跨主机容器间的网络互通已经成为最基本的要求。跨主机的容器网络解决方案不外乎三大类。


1、隧道方案

比如Flannel的VXLAN,特点是对底层的网络没有过高的要求,一般来说只要是三层可达即可——只要是在一个三层可达网络里,就能构建出一个基于隧道的容器网络。不过问题也很明显,一个得到大家共识的是随着节点规模的增长,复杂度会提升,而且出现网络问题后跟踪起来也比较麻烦。在大规模集群情况下,这是需要考虑的。


2、路由方案

路由技术从三层实现跨主机容器互通,没有NAT,效率比较高,与目前的网络能够融合在一起,每一个容器都可以像虚拟机一样分配一个业务的IP。但路由网络也有问题,路由网络对现有网络设备影响比较大,路由器的路由表应该有空间限制,一般是两三万条,而容器的大部分应用场景是运行微服务,数量集很大。如果几万个新的容器IP冲击到路由表中,会导致下层的物理设备无法承受;而且每一个容器都分配一个业务IP,业务IP会很快消耗完。


3、VLAN方案

所有容器和物理机在同一个VLAN中。基于主机的端口冲突和网络资源竞争比较麻烦,相对来说Calico的是纯三层的SDN实现,它基于BPG协议和Linux自己的路由转发机制,不依赖特殊硬件,没有使用NAT或Tunnel等技术。


它能够方便地部署在物理服务器、虚拟机(如OpenStack)或者容器环境下,同时它自带的基于Iptables的ACL管理组件非常灵活,能够满足比较复杂的企业安全隔离需求。关于容器应用的网络隔离还有多种解决方案,基本上就是把不同的应用容器放置在不同的VLAN/VXLAN中,通过让不同的VLAN/VXLAN不能互访而实现隔离。


可以尝试用Docker自带的Overlay来简单地解决,首先创建不同的网络,然后在启动不同应用的容器时,使用--net参数指定容器所在的对应的VXLAN即可。结果是同一个网络中的容器是互通的,不同网络中的容器是隔离的。目前应用OVS/Linux-bridge+VLAN方案的企业比较多,但长远看来Calico方案前景不错。

相关文章
|
6月前
|
存储 Kubernetes Cloud Native
CKA考试的容器网络10个重点题目
作为云计算领域的重要认证机构,Cloud Native Computing Foundation(CNCF)推出了许多认证考试,其中 Certified Kubernetes Administrator(CKA)认证是 Kubernetes 相关最具权威的认证之一,对于想要成为容器化云计算方面专家的 IT 从业者来说,CKA 是非常有价值的。 在进行 CKA 考试时,需要掌握 Kubernetes 的核心概念和操作,能够有效管理 Kubernetes 集群,并且能够识别和解决集群中的故障。而在 Kubernetes 中,容器是必不可少的核心组件。本文将向您介绍 CKA 考试中关于容器的 10
|
6月前
|
域名解析 网络协议 Linux
Docker网络及容器间通信详解
本实验通过docker DNS server和joined 容器两种方法实现Docker容器间的通信。Docker容器间通信可用于监控其他容器的网络流量、不同容器中程序如web server和app server的高效通信等场景。通过实验进一步熟悉Docker的架构和基本操作,了解Docker容器间通信的方式。
|
6月前
|
运维 安全 Docker
Docker 网络模型:多角度分析容器网络的原理与应用
Docker 网络模型:多角度分析容器网络的原理与应用
54 0
|
4月前
|
存储 监控 数据安全/隐私保护
Docker网络模式:深度理解与容器网络配置
Docker 的网络模式是容器化应用中一个关键而复杂的方面。本文将深入讨论 Docker 的网络模式,包括基本概念、常用网络模式以及高级网络配置,并通过更为丰富和实际的示例代码,帮助读者全面掌握如何理解和配置容器网络。
|
24天前
|
移动开发 安全 小程序
mpaas常见问题之小程序容器,跑起来后一直提示 "网络不给力, 请稍后再试"如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
19 0
|
7月前
|
网络协议 应用服务中间件 nginx
容器的自定义网络
本实验介绍了如何在容器中创建和使用自定义网络
234 0
|
3月前
|
网络协议 Unix Linux
docker网络模式详解及容器间网络通信
docker网络模式详解及容器间网络通信
125 0
|
4月前
|
存储 Cloud Native 数据安全/隐私保护
[云原生] Docker 入门指南:镜像、容器、卷和网络解析
[云原生] Docker 入门指南:镜像、容器、卷和网络解析
|
4月前
|
Kubernetes Linux Docker
容器网络简介
容器网络简介
|
6月前
|
Cloud Native 前端开发 Go
《CNI 揭秘:打造高性能的容器网络》
《CNI 揭秘:打造高性能的容器网络》
83 0