Calico是一个纯三层的数据中心网络方案,而且方便集成OpenStack这种 IaaS云架构,能够提供高效可控的VM、容器、裸机之间的通信。

发布时间 2023-09-29 10:25:40作者: 最后一天

 

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网络原理以及多租户实现设计

  1.     软件定义网络SDN

基础概念介绍

租户(Tenant):在网络资源上完全隔离的一个用户,在业务上可以代表一个对于网络有隔离和管理需求的部门。一个租户可以对应多个网络。

网络(Network):在业务上可以代表一个部门下的一个项目组。一个网络只能挂在一个租户下面,同时可以有多个子网。

子网(Subnet):在业务上可以代表一个部门下项目组的一个开发或测试环境。同一个networksubnet之间可以默认配置成隔离或者连通。

默认版本提供:tenant隔离,tenant下的network隔离,network下的subnet全通。(network下的subnet可以由用户可选配置成隔离

模块功能概述

软件定义网络(software-definednetworking,SDN)的核心思想是采用控制和转发相分离的策略,实现网络和业务的可编程,从而实现网络资源的动态管理。用户可以通过程序动态构建各种特性的数据转发网络,以达到不同网络对各种应用的承载需求。

云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建、修改和删除网络,网络的连通性和隔离性也不可能通过手工配置来保证了。为快速响应业务的需求,HarmonyCloud提供了软件定义网络的解决方案,具有非常高的灵活性和自动化优势。

主要功能:

租户网络隔离

  • 不同租户之间的网络进行隔离,每个租户只能访问自己的网络资源,不可访问其他租户的网络资源。

  • 解决了租户与其他租户服务间的网络隔离问题,保障了租户对自身服务访问的合法权益,禁止其他租户的恶意访问。

网络的安全性

  • 谐云网络服务利用LinuxiptablesACLs特性,实现访问虚机的安全性。

网络的多粒度隔离控制

  • 根据业务需求,通过policy提供网络的多粒度隔离控制。

可以在同一tenant下配置如下6种用户自定义policytenant之间不可配置。

优先级

入口对象

作用对象

备注

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策略。