calico官网网络拓扑实现:基于eNSP与VMVare

2023-12-20 07:38

本文主要是介绍calico官网网络拓扑实现:基于eNSP与VMVare,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Calico官网提供了两种网络设计模式:

  • AS per rack: 每个rack(机架)组成一个AS,每个rack的TOR交换机与核心交换机组成一个AS
  • AS per server: 每个node做为一个AS,TOR交换机组成一个transit AS

每个TOR分为四个交换机,每个node与每个交换机都有连接。通过颜色区分每一个平面。

在Kubernetes平台中,使用calico brid生成的路由条目与endpoint相关,会对路由分配网段,这样可以减少路由条目数量,但不会改变路由数量级。当集群规模过大,endpoints与对应的路由条目也会随之增加,此时就需要可以处理一定量级路由的网络设备。无论使用那种网络模式,始终都会有一个网络设备上要存放calico网络拓扑中的所有路由。所以在使用calico网络时,需要确定网络处理能力,此时使用单独node或master代替bgp反射器不是很恰当了。

实验:完成基于AS per rack的网络设计

实验完成:

  • 每一个rack分配一个AS号,node与TOR之间是ibgp,TOR之间是ebgp
  • node只与TOR建立BGP连接关系,TOR与rack上的所有node建立BGP连接
  • 所有TOR之间以node-to-node mesh方式建立BGP连接

实验目标:将Node的BGP压力转移到了TOR之上。随着rack的增加,还可以使用Spine承担TOR的压力

联通vmvare与eNSP

选择"其他设备" 并添加"Cloud"到eNSP, 并设置对应接口

完成TOR拓扑

这里AR1 AR2 为TOR Cloud的对端为vmvare adpter,连接的是多个虚拟机,因为使用交换机相连,从概念上完成了一个简易的AS per rack

配置交换机

system-view
sysname SW1
vlan batch 10 20 30interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 30interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20 30interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20 30

配置TOR及OSPF

system-view
sysname R1interface GigabitEthernet0/0/0
ip address 10.0.0.253 24
dis this
quitinterface l0
ip address 1.1.1.1 32
quit
ospf router-id 1.1.1.1
area 0
network 1.1.1.1 0.0.0.0
network 10.0.0.253 0.0.0.0
dis thissystem-view
sysname R2interface GigabitEthernet0/0/0
ip address 10.0.0.254 24
dis this
quitinterface l0
ip address 2.2.2.2 32
quit
ospf router-id 2.2.2.2
area 0
network 2.2.2.2 0.0.0.0
network 10.0.0.254 0.0.0.0
dis this

配置TOR间的EBGP

bgp 64512
router-id 10.0.0.253 
peer 10.0.0.254 as-number 63400bgp 63400
router-id 10.0.0.254
peer 10.0.0.253 as-number 64512

配置node与tor的bgp实体

bgp 64512
router-id 10.0.0.253
peer 10.0.0.5 as-number 64512
peer 10.0.0.5 reflect-client
dis ip interface briefbgp 63400
router-id 10.0.0.254
peer 10.0.0.6 as-number 63400
peer 10.0.0.6 reflect-client
dis ip interface brief

配置calico与TOR间BGP关系

配置calico bgp rr需要用到 BGPConfiguration BGPPeer Node 对应的资源清单的配置

配置全局asNumber

apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:name: default
spec:logSeverityScreen: InfonodeToNodeMeshEnabled: falseasNumber: 64512

配置bgp peer

注意bgp对等体作用域范围,也可以理解为使用

node specific: 生效与特定节点
globe: 全局配置,使用该配置时不能配置nodenodeSelector字段,这个配置将集群中所有的节点都建立bgp关系
node-to-node mesh:全互联模式

apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:name: default-64512
spec:node: master01 # 指定bgppeer生效范围,默认为全局模式peerIP: 10.0.0.253 # bgp对等体的IPasNumber: 64512
---
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:name: default-63400
spec:node: node02peerIP: 10.0.0.254asNumber: 63400

此时可以看到node与tor间形成了对应的bgp rr

[root@node02 ~]# calicoctl node status
Calico process is running.IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS |   PEER TYPE   | STATE |  SINCE   |    INFO     |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.254   | node specific | up    | 14:34:30 | Established |
+--------------+---------------+-------+----------+-------------+[root@master01 ~]# calicoctl node status
Calico process is running.IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS |   PEER TYPE   | STATE |  SINCE   |    INFO     |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.253   | node specific | up    | 01:29:08 | Established |
+--------------+---------------+-------+----------+-------------

对应的tor中也学习到相应的pod间的路由条目,而TOR只与自己建立bgp rr的node的路由进行学习,其他Node的Pod间路由,由tor之间的EBGP进行学习到的。

[R1]dis ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: PublicDestinations : 11       Routes : 11       Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface1.1.1.1/32  Direct  0    0           D   127.0.0.1       LoopBack02.2.2.2/32  OSPF    10   1           D   10.0.0.254      GigabitEthernet0/0/010.0.0.0/24  Direct  0    0           D   10.0.0.253      GigabitEthernet0/0/010.0.0.253/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/010.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/010.244.140.64/26  EBGP    255  0           D   10.0.0.6        GigabitEthernet0/0/010.244.241.64/26  IBGP    255  0          RD   10.0.0.5        GigabitEthernet0/0/0127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

对应的文件

eNSP拓扑

这篇关于calico官网网络拓扑实现:基于eNSP与VMVare的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/515246

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被