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创建网络是一个非常复杂的过程,用户一键创建网络的背后,后台却进行了一系列的操作。谐云网络服务首先要创建NetworkSubnet等资源在创建pod时候指定所需网络资源以及networkpolicy策略。



模块功能点实现介绍

HarmonyCloud软件定义网络解决方案的目标是实现“网络即服务(Networkas a Service)”,在设计上遵循了基于SDN实现网络虚拟化的原则,以开源的calico网络解决方案为基础进行定制优化。

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

k8s calico网络原理以及多租户实现设计_第1张图片

calico架构图

如图, Calico的核心组件包括:FelixetcdBIRDBIRD

FelixCalicoagent,跑在kubernetesnode节点上,主要负责配置路由及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包的方式完成互联的。

k8s calico网络原理以及多租户实现设计_第2张图片

Calico节点组网可以直接利用数据中心的网络结构(支持L2或者 L3),不需要额外的NAT,隧道或者VXLANoverlay network

k8s calico网络原理以及多租户实现设计_第3张图片

如上图所示,这样保证这个方案的简单可控,而且没有封包解包,节约CPU计算资源的同时,提高了整个网络的性能。实验测试calico网络性能非常接近物理机的性能。

此外,Calico基于iptables还提供了丰富而灵活的网络Policy,保证通过各个节点上的ACLs来提供Workload的多租户隔离、安全组以及其他可达性限制等功能。

你可能感兴趣的:(kubernetes,calico)