-
Notifications
You must be signed in to change notification settings - Fork 449
BGP 支持
oilbeater edited this page Jun 27, 2022
·
8 revisions
Wiki 下的中文文档将不在维护,请访问我们最新的中文文档网站,获取最新的文档更新。
v1.6 之后,Kube-OVN 支持将 Pod/Subnet IP 以 BGP 的路由协议向外进行广播。为了启用 BGP 相关功能需要安装 kube-ovn-speaker
并给需要对外广播 IP 的 Pod/Subnet 增加相应的 annotation。
- 下载
kube-ovn-speaker
yaml
wget https://github.com/kubeovn/kube-ovn/blob/master/yamls/speaker.yaml
- 修改 yaml 中的 args 部分配置
--neighbor-address=10.32.32.1 # 建立 bgp peers 的上游路由器地址
--neighbor-as=65030 # 路由器的 AS 号
--cluster-as=65000 # 容器网络的 AS 号
- 执行 yaml
kubectl apply -f speaker.yaml
- 给需要部署 BGP speaker 的节点增加 label,该节点将会成为 underlay 到 overlay 的网关节点,并对外通过 BGP 发送路由信息
kubectl label nodes speaker-node-1 ovn.kubernetes.io/bgp=true
kubectl label nodes speaker-node-2 ovn.kubernetes.io/bgp=true
注意:当多个节点被打 label 时,上层路由器或交换机需要支持多路径路由来完成 ECMP
如果需要 Pod IP 直接暴露,需要将所在子网的 natOutgoing
设置为 false
, gatewayType
设置为 distributed
# 开启 BGP
kubectl annotate pod sample ovn.kubernetes.io/bgp=true
kubectl annotate subnet ovn-default ovn.kubernetes.io/bgp=true
# 禁用 BGP
kubectl annotate pod sample ovn.kubernetes.io/bgp-
kubectl annotate subnet ovn-default ovn.kubernetes.io/bgp-