Calico是一个纯三层的数据中心网络方案,而且方便集成OpenStack这种 IaaS云架构,能够提供高效可控的VM、容器、裸机之间的通信。
calico架构图
BGPRoute Reflector(BIRD),大规模部署时使用,摒弃所有节点互联的mesh模式,通过一个或者多个 BGPRoute Reflector来完成集中式的路由分发;
通过将整个互联网的可扩展 IP网络原则压缩到数据中心级别,Calico在每一个计算节点利用 Linuxkernel实现了一个高效的 vRouter来负责数据转发,而每个vRouter通过 BGP协议负责把自己上运行的 workload的路由信息向整个Calico网络内传播,小规模部署可以直接互联,大规模下可通过指定的BGProute reflector来完成。这样保证最终所有的workload之间的数据流量都是通过 IP包的方式完成互联的。
BGPRoute Reflector(BIRD),大规模部署时使用,摒弃所有节点互联的mesh模式,通过一个或者多个 BGPRoute Reflector来完成集中式的路由分发;
通过将整个互联网的可扩展 IP网络原则压缩到数据中心级别,Calico在每一个计算节点利用 Linuxkernel实现了一个高效的 vRouter来负责数据转发,而每个vRouter通过 BGP协议负责把自己上运行的 workload的路由信息向整个Calico网络内传播,小规模部署可以直接互联,大规模下可通过指定的BGProute reflector来完成。这样保证最终所有的workload之间的数据流量都是通过 IP包的方式完成互联的。
k8s calico网络原理以及多租户实现设计
基础概念介绍
租户(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策略。