Calico官網提供了兩種網絡設計模式:
AS per rack
: 每個rack(機架)組成一個AS,每個rack的TOR交換機與核心交換機組成一個ASAS 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 30
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 30
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20 30
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20 30
配置TOR及OSPF
system-view
sysname R1
interface GigabitEthernet0/0/0
ip address 10.0.0.253 24
dis this
quit
interface 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 this
system-view
sysname R2
interface GigabitEthernet0/0/0
ip address 10.0.0.254 24
dis this
quit
interface 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 63400
bgp 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 brief
bgp 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: Info
nodeToNodeMeshEnabled: false
asNumber: 64512
配置bgp peer
注意bgp對等體作用域范圍,也可以理解為使用
node specific
: 生效與特定節點
globe
: 全局配置,使用該配置時不能配置node
和nodeSelector
字段,這個配置將集群中所有的節點都建立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對等體的IP
asNumber: 64512
---
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: default-63400
spec:
node: node02
peerIP: 10.0.0.254
asNumber: 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: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 Direct 0 0 D 127.0.0.1 LoopBack0
2.2.2.2/32 OSPF 10 1 D 10.0.0.254 GigabitEthernet0/0/0
10.0.0.0/24 Direct 0 0 D 10.0.0.253 GigabitEthernet0/0/0
10.0.0.253/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.0.0.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.244.140.64/26 EBGP 255 0 D 10.0.0.6 GigabitEthernet0/0/0
10.244.241.64/26 IBGP 255 0 RD 10.0.0.5 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.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