如何优雅的使用Calico 路由反射模式

589 字
3 分钟
如何优雅的使用Calico 路由反射模式

1 原理#

[!info] 同一集群内的客户机只需要与该集群的 RR 直接交换路由信息,因此客户机只需要与 RR 之间建立 IBGP 连接,不需要与其他客户机建立 IBGP 连接,从而减少了 IBGP 连接数量。并采用独有的 Cluster_List 属性和 Originator_ID 属性防止路由环路。RR 向 IBGP 邻居发布路由规则如下:

  • 从非客户机学到的路由,发布给所有客户机。
  • 从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
  • 从 EBGP 对等体学到的路由,发布给所有的非客户机和客户机。

2 配置 Calico#

2.1 关闭 node-to-node BGP 网络#

[!info] 为保证 IBGP 对等体之间的连通性,需要在 IBGP 对等体之间建立全连接关系。假设在一个 AS 内部有 n 台设备,那么建立的 IBGP 连接数就为 n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和 CPU 资源的消耗都很大。Calico 默认是 Full-mesh 全互联模式,需要关闭

cat > gpconfiguration.yaml << EOF
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
name: default
spec:
logSeverityScreen: Warning
nodeToNodeMeshEnabled: False
asNumber: 63456
EOF
calicoctl apply -f gpconfiguration.yaml

2.1.1 查看#

Terminal window
calicoctl get bgpconfig
NAME LOGSEVERITY MESHENABLED ASNUMBER
default Warning false 64512
Terminal window
calicoctl node status
Calico process is running.
IPv4 BGP status
No IPv4 peers found.
IPv6 BGP status
No IPv6 peers found.

2.2 路由反射器配置#

# 节点添加标签
kubectl label node my-node route-reflector=true
# 搜索带`route-reflector=true`标签的节点为路由反射节点
cat > peer-with-route-reflectors.yaml << EOF
kind: BGPPeer
apiVersion: projectcalico.org/v3
metadata:
name: peer-with-route-reflectors
spec:
nodeSelector: all()
peerSelector: route-reflector == 'true'
EOF
calicoctl apply -f peer-with-route-reflectors.yaml

2.3 查看 ippool#

Tip

CrossSubnet表示跨子网才使用ipip,否则使用 bgp

Terminal window
calicoctl get ippool -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR
default-ipv4-ippool 192.168.0.0/16 true CrossSubnet Never false false all()

3 查看节点状态#

Terminal window
calicoctl node status
Calico process is running.
IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.2 | node specific | up | 10:40:46 | Established |
| 10.0.0.3 | node specific | up | 10:40:48 | Established |

4 测试#

测试,随便找个 pod ping 不同节点的 pod

5 问题#

[!question] calico 查看节点信息一直 start 状态

检测此 ip 的 179 端口能否访问,如果访问不了检查 ip 能不能通信,如果不能就是这节点网络问题,如果可以检查 calico 组件状态与节点配置

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

如何优雅的使用Calico 路由反射模式
https://ccops.cc/posts/66bf3d82/
作者
蹦蹦站长
发布于
2022-06-27
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
蹦蹦站长
一个养兔子的运维
公告
感谢你的来访!希望在这里能找到对你有用的内容!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
81
分类
6
标签
45
总字数
88,456
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录