33.9. 将服务配置为使用 MetalLB
作为集群管理员,当添加类型为 LoadBalancer
的服务时,您可以控制 MetalLB 如何分配 IP 地址。
33.9.1. 请求特定 IP 地址 复制链接链接已复制到粘贴板!
与其他一些负载均衡器实施一样,MetalLB 接受服务规格中的 spec.loadBalancerIP
字段。
如果请求的 IP 地址位于任何地址池中,MetalLB 会分配请求的 IP 地址。如果请求的 IP 地址不在任何范围内,MetalLB 会报告警告。
特定 IP 地址的服务 YAML 示例
如果 MetalLB 无法分配请求的 IP 地址,服务报告的 EXTERNAL-IP
会报告 <pending>
,运行 oc describe service <service_name>
会包括一个类似以下示例的事件。
当 MetalLB 无法分配请求的 IP 地址时的示例
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning AllocationFailed 3m16s metallb-controller Failed to allocate IP for "default/invalid-request": "4.3.2.1" is not allowed in config
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning AllocationFailed 3m16s metallb-controller Failed to allocate IP for "default/invalid-request": "4.3.2.1" is not allowed in config
33.9.2. 从特定池中请求 IP 地址 复制链接链接已复制到粘贴板!
要从特定范围分配 IP 地址,但您不关注特定的 IP 地址,您可以使用 metallb.universe.tf/address-pool
注解从指定地址池中请求 IP 地址。
来自特定池的 IP 地址的服务 YAML 示例
如果您为 <address_pool_name>
指定的地址池不存在,MetalLB 会尝试从允许自动分配的池中分配 IP 地址。
33.9.3. 接受任何 IP 地址 复制链接链接已复制到粘贴板!
默认情况下,地址池配置为允许自动分配。MetalLB 从这些地址池中分配 IP 地址。
若要接受任何为自动分配配置的池的 IP 地址,不需要特殊注释或配置。
接受任何 IP 地址的服务 YAML 示例
33.9.5. 使用 MetalLB 配置服务 复制链接链接已复制到粘贴板!
您可以将负载平衡服务配置为使用地址池中的外部 IP 地址。
先决条件
-
安装 OpenShift CLI (
oc
) 。 - 安装 MetalLB Operator 并启动 MetalLB。
- 至少配置一个地址池。
- 配置网络,将流量从客户端路由到集群的主机网络。
流程
创建一个
<service_name>.yaml
文件。在文件中,确保将spec.type
字段设置为LoadBalancer
。有关如何请求 MetalLB 分配给服务的外部 IP 地址的信息,请参考示例。
创建服务:
oc apply -f <service_name>.yaml
$ oc apply -f <service_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
service/<service_name> created
service/<service_name> created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
描述该服务:
oc describe service <service_name>
$ oc describe service <service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <.> 注解存在,如果您从特定池请求 IP 地址。<.> 服务类型必须指示
LoadBalancer
。<.> 如果服务被正确分配,则 load-balancer ingress 字段指示外部 IP 地址。<.> events 字段表示分配给声明外部 IP 地址的节点名称。如果出现错误,Event 字段会指示错误的原因。