Skip to content

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

  1. 下载 kube-ovn-speaker yaml
wget https://github.com/kubeovn/kube-ovn/blob/master/yamls/speaker.yaml
  1. 修改 yaml 中的 args 部分配置
--neighbor-address=10.32.32.1  # 建立 bgp peers 的上游路由器地址
--neighbor-as=65030            # 路由器的 AS 号 
--cluster-as=65000             # 容器网络的 AS 号
  1. 执行 yaml
kubectl apply -f speaker.yaml
  1. 给需要部署 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/Subnet 增加对应 annotation

如果需要 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-
Clone this wiki locally