回答前,先假设问题中的“网络扁平化”,是指容器网络和容器平台之外的网络融为一体,不仅可以直接路由互通,还可以完全利用到外部网络已有的各类网络服务能力、SDN能力。要实现以上目的,在设计容器网络时,需要考虑整个容器网络具备和容器平台以外,例如IaaS的VM有相同的网络层级、I...
显示全部回答前,先假设问题中的“网络扁平化”,是指容器网络和容器平台之外的网络融为一体,不仅可以直接路由互通,还可以完全利用到外部网络已有的各类网络服务能力、SDN能力。
要实现以上目的,在设计容器网络时,需要考虑整个容器网络具备和容器平台以外,例如IaaS的VM有相同的网络层级、IP地址规划、子网划分规则,IP地址分配、根据容器的生灭动态配置防火墙策略、路由策略等。具体的做法变化比较多样,基本上都需要修改已有容器平台的容器网络接口实现,即CNI或CNM的实现。
文章中举了一个例子,对接了IAAS的Neutron+SDN进行统一网络管理,工作原理是:
- 当容器平台需要为新的租户分配网络资源时,通知Neutron,由Neutron对接的SDN控制器按照预先定义的规则为容器平台分配所需的子网和网络地址空间
- 开发网络驱动,实现CNI接口。当容器平台创建新的容器实例时,网络驱动调用Neutron接口创建port,为容器实例在子网中分配MAC和IP,并把IP绑定到容器网卡(类似nova-compute的工作),然后通知Neutron容器IP配置成功
- 容器平台记录容器的IP地址,作为进行服务注册、服务发现、监控服务的基础
- Neutron和SDN联动,完成为容器实例设置相关的路由策略、防火墙策略等
收起