基础概念介绍
租户(Tenant):在网络资源上完全隔离的一个用户,在业务上可以代表一个对于网络有隔离和管理需求的部门。一个租户可以对应多个网络。
网络(Network):在业务上可以代表一个部门下的一个项目组。一个网络只能挂在一个租户下面,同时可以有多个子网。
子网(Subnet):在业务上可以代表一个部门下项目组的一个开发或测试环境。同一个network的subnet之间可以默认配置成隔离或者连通。
默认版本提供:tenant隔离,tenant下的network隔离,network下的subnet全通。(network下的subnet可以由用户可选配置成隔离)
模块功能概述
软件定义网络(software-definednetworking,SDN)的核心思想是采用控制和转发相分离的策略,实现网络和业务的可编程,从而实现网络资源的动态管理。用户可以通过程序动态构建各种特性的数据转发网络,以达到不同网络对各种应用的承载需求。
云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建、修改和删除网络,网络的连通性和隔离性也不可能通过手工配置来保证了。为快速响应业务的需求,HarmonyCloud提供了软件定义网络的解决方案,具有非常高的灵活性和自动化优势。
主要功能:
租户网络隔离
不同租户之间的网络进行隔离,每个租户只能访问自己的网络资源,不可访问其他租户的网络资源。
解决了租户与其他租户服务间的网络隔离问题,保障了租户对自身服务访问的合法权益,禁止其他租户的恶意访问。
网络的安全性
谐云网络服务利用Linuxiptables、ACLs特性,实现访问虚机的安全性。
网络的多粒度隔离控制
根据业务需求,通过policy提供网络的多粒度隔离控制。
可以在同一tenant下配置如下6种用户自定义policy,tenant之间不可配置。
优先级 |
入口对象 |
作用对象 |
备注 |
11 |
network1 |
network2 |
network2->network1 |
12 |
network1 |
network2-subnet1 |
network2-subnet1->network1 |
21 |
network1-subnet1 |
network2 |
network2->network1-subnet1 |
22 |
network1-subnet1 |
network2-subnet1 |
network2-subnet1->network1-subnet1 |
31 |
network1-subnet1(name:app) |
network2 |
network2->network1-subnet1(name:app) |
32 |
network1-subnet1(name:app) |
network2-subnet1 |
network2-subnet1->network1-subnet1(name:app) |
为Kubernetes提供网络服务
用户创建Pod过程中,只需简单配置便可以为Pod提供网络服务,而无需关心底层实现细节。
如网络服务工作流程图所示,为Pod创建网络是一个非常复杂的过程,用户一键创建网络的背后,后台却进行了一系列的操作。谐云网络服务首先要创建Network、Subnet等资源,在创建pod时候指定所需网络资源以及networkpolicy策略。
模块功能点实现介绍
HarmonyCloud软件定义网络解决方案的目标是实现“网络即服务(Networkas a Service)”,在设计上遵循了基于SDN实现网络虚拟化的原则,以开源的calico网络解决方案为基础进行定制优化。
Calico是一个纯三层的数据中心网络方案,而且方便集成OpenStack这种 IaaS云架构,能够提供高效可控的VM、容器、裸机之间的通信。
如图, Calico的核心组件包括:Felix、etcd、BIRD、BIRD。
Felix,即Calicoagent,跑在kubernetes的node节点上,主要负责配置路由及ACLs等信息来确保endpoint的连通状态;
etcd,分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性,可以与kubernetes共用;
BGPClient(BIRD), 主要负责把 Felix写入 kernel的路由信息分发到当前 Calico网络,确保 workload间的通信的有效性;
BGPRoute Reflector(BIRD), 大规模部署时使用,摒弃所有节点互联的mesh模式,通过一个或者多个 BGPRoute Reflector 来完成集中式的路由分发;
通过将整个互联网的可扩展 IP网络原则压缩到数据中心级别,Calico在每一个计算节点利用 Linuxkernel 实现了一个高效的 vRouter来负责数据转发,而每个vRouter通过 BGP协议负责把自己上运行的 workload的路由信息向整个Calico网络内传播,小规模部署可以直接互联,大规模下可通过指定的BGProute reflector 来完成。这样保证最终所有的workload之间的数据流量都是通过 IP包的方式完成互联的。
Calico节点组网可以直接利用数据中心的网络结构(支持L2或者 L3),不需要额外的NAT,隧道或者VXLANoverlay network。
如上图所示,这样保证这个方案的简单可控,而且没有封包解包,节约CPU计算资源的同时,提高了整个网络的性能。实验测试calico网络性能非常接近物理机的性能。
此外,Calico基于iptables还提供了丰富而灵活的网络Policy,保证通过各个节点上的ACLs来提供Workload的多租户隔离、安全组以及其他可达性限制等功能。