11.2. 部署出口服务
您可以部署出口服务,以管理 LoadBalancer
服务后面的 pod 的出口流量。
以下示例将出口流量配置为具有与 LoadBalancer
服务的入口 IP 地址相同的源 IP 地址。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 -
已配置了 MetalLB
BGPPeer
资源。
流程
为服务创建一个带有所需 IP 的
IPAddressPool
CR:创建一个文件,如
ip-addr-pool.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 IP 地址池应用配置:
oc apply -f ip-addr-pool.yaml
$ oc apply -f ip-addr-pool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
Service
和EgressService
CR:创建一个文件,如
service-egress-service.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果使用
sourceIPBy: "LoadBalancerIP"
设置,您必须在BGPAdvertisement
自定义资源(CR) 中指定 load-balancer 节点。运行以下命令,为服务和出口服务应用配置:
oc apply -f service-egress-service.yaml
$ oc apply -f service-egress-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
BGPAdvertisement
CR 来公告服务:创建一个文件,如
service-bgp-advertisement.yaml
,其内容类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在本例中,
EgressService
CR 将出口流量的源 IP 地址配置为使用负载均衡器服务 IP 地址。因此,您必须指定负载均衡器节点返回流量,以便为来自 pod 的流量使用相同的返回路径。
验证
运行以下命令,验证您可以访问 MetalLB 服务后运行的 pod 的应用程序端点:
curl <external_ip_address>:<port_number>
$ curl <external_ip_address>:<port_number>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 更新外部 IP 地址和端口号,以适合您的应用程序端点。
-
如果您将
LoadBalancer
服务的入口 IP 地址分配为出口流量的源 IP 地址,请使用tcpdump
等工具分析外部客户端接收的数据包来验证此配置。