diff --git a/v1.14.x/advance/ovn-eip-fip-snat/index.html b/v1.14.x/advance/ovn-eip-fip-snat/index.html index ad302c827..2a8048e2d 100644 --- a/v1.14.x/advance/ovn-eip-fip-snat/index.html +++ b/v1.14.x/advance/ovn-eip-fip-snat/index.html @@ -575,7 +575,7 @@ # kubectl get odnat eip-dnat NAME EIP PROTOCOL V4EIP V4IP INTERNALPORT EXTERNALPORT IPNAME READY eip-dnat eip-dnat tcp 10.5.49.4 192.168.0.4 22 22 test-dnat-vip true -
Kube-OVN 支持将 Pods、Subnets、Services 和 EIPs 的 IP 地址通过 BGP 协议向外部进行路由广播,从而使得外部可以直接访问到集群内的 IP 地址。 如果需要使用该功能,需要在特定节点安装 kube-ovn-speaker
并对需要对外暴露的 Pod 或 Subnet 增加对应的 annotation。
如果要在 EIP 上使用 BGP,需要使用特殊参数创建 VPC NAT Gateway,有关更多信息,请参阅发布 EIPs。
kube-ovn-speaker
内使用 GoBGP 对外发布路由信息,并将访问暴露地址的下一跳路由指向自身。
由于部署 kube-ovn-speaker
的节点需要承担回程流量,因此需要选择特定节点进行部署:
kubectl label nodes speaker-node-1 ovn.kubernetes.io/bgp=true
+ BGP 支持¶
Kube-OVN 支持将 Pods、Subnets、Services 和 EIPs 的 IP 地址通过 BGP 协议向外部进行路由广播,从而使得外部可以直接访问到集群内的 IP 地址。 如果需要使用该功能,需要在特定节点安装 kube-ovn-speaker
并对需要对外暴露的 Pod 或 Subnet 增加对应的 annotation。
如果要在 EIP 上使用 BGP,需要使用特殊参数创建 VPC NAT Gateway,有关更多信息,请参阅发布 EIPs。
安装 kube-ovn-speaker¶
kube-ovn-speaker
内使用 GoBGP 对外发布路由信息,并将访问暴露地址的下一跳路由指向自身。
由于部署 kube-ovn-speaker
的节点需要承担回程流量,因此需要选择特定节点进行部署:
kubectl label nodes speaker-node-1 ovn.kubernetes.io/bgp=true
kubectl label nodes speaker-node-2 ovn.kubernetes.io/bgp=true
当存在多个 kube-ovn-speaker 实例时,每个实例都会对外发布路由,上游路由器需要支持多路径 ECMP。
下载对应 yaml:
wget https://raw.githubusercontent.com/kubeovn/kube-ovn/release-1.13/yamls/speaker.yaml
修改 yaml 内相应配置:
如果你只有一个交换机:
- --neighbor-address=10.32.32.254
@@ -22,7 +22,7 @@
kubectl annotate subnet ovn-default ovn.kubernetes.io/bgp=true
删除 annotation 取消发布:
kubectl annotate pod sample ovn.kubernetes.io/bgp-
kubectl annotate subnet ovn-default ovn.kubernetes.io/bgp-
-
查看发布策略以了解如何通过设置注解来控制 BGP 对外发布策略。
发布 ClusterIP
类型 Service 路由¶
要将 Service 的 ClusterIP 公布给外部,需要将 kube-ovn-speaker
选项 --announce-cluster-ip
设置为 true
。 有关更多详细信息,请参阅 BGP 高级选项。
增加 annotation 对外发布:
kubectl annotate service sample ovn.kubernetes.io/bgp=true
+
查看发布策略以了解如何通过设置注解来控制 BGP 对外发布策略。
发布 ClusterIP
类型 Service 路由¶
要将 Service 的 ClusterIP 公布给外部,需要将 kube-ovn-speaker
选项 --announce-cluster-ip
设置为 true
。 有关更多详细信息,请参阅 BGP 高级选项。
增加 annotation 对外发布:
kubectl annotate service sample ovn.kubernetes.io/bgp=true
删除 annotation 取消发布:
kubectl annotate service sample ovn.kubernetes.io/bgp-
发布 EIPs¶
EIPs 可以由它们所在的 VPC NAT Gateway 对外发布。当在 VpcNatGateway
上启用 BGP 时,会向其注入一个新的 BGP Sidecar。
为了启用 VPC NAT Gateway 的 BGP 功能,搜选需要创建一个 BGP Speaker Sidecar 所使用的 NetworkAttachmentDefinition
。这个 NAD 将会和一个在默认 VPC 下的 Subnet 关联。这样 Sidecar 内的控制器可以和 Kubernetes API 通信并自动同步 EIPs 信息。 如果你使用了用户自定义 VPC 下 CoreDNS 的功能则可以复用同一个 NAD。
创建 NetworkAttachmentDefinition
和 Subnet
并将 provider
设置为 {nadName}.{nadNamespace}.ovn
:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
@@ -88,7 +88,7 @@
# show announced routes to one peer
gobgp neighbor 10.32.32.254 adj-out
-
评论