This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第 12 章 关于 ExternalIP
对于非云环境,OpenShift Container Platform 支持通过 ExternalIP 工具将外部 IP 地址分配给 Service spec.externalIPs 字段。这会公开分配给服务的额外虚拟 IP 地址,这些地址可能不在为集群定义的服务网络之外。使用外部 IP 功能配置的服务,和带有 type=NodePort 的服务相似,允许您将流量定向到本地节点以进行负载平衡。
您必须配置网络基础架构,以确保您定义的外部 IP 地址块路由到集群。
OpenShift Container Platform 通过添加以下功能来扩展 Kubernetes 中的 ExternalIP 功能:
- 通过可配置策略对使用外部 IP 地址的限制
- 根据请求自动将外部 IP 地址分配给服务
默认情况下,只有具有 cluster-admin 特权的用户才能创建带有 spec.externalIPs[] 设置为外部 IP 地址块中定义的 IP 地址的服务。
默认情况下禁用,使用 ExternalIP 功能可能会造成安全隐患,因为集群内到一个外部 IP 地址的流量会定向到那个服务。这可让集群用户拦截用于外部资源的敏感流量。
这个功能只在非云部署中被支持。对于云部署,使用负载均衡器服务自动部署云负载均衡器,以服务端点为目标。
您可以使用以下方法分配外部 IP 地址:
- 自动分配一个外部 IP
-
当创建了一个带有
spec.type=LoadBalancer设置的服务时,OpenShift Container Platform 会从autoAssignCIDRsCIDR 块中自动为spec.externalIPs[]分配一个 IP 地址。在本例中,OpenShift Container Platform 实现了负载均衡器服务类型的非云版本,并为服务分配 IP 地址。默认情况下,自动分配被禁用,且必须由集群管理员配置,如以下部分所述。 - 手动分配外部 IP
-
OpenShift Container Platform 在创建服务时使用分配给
spec.externalIPs[]数组的 IP 地址。您不能指定已经被其他服务使用的 IP 地址。
12.1. 配置 ExternalIP 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中使用外部 IP 地址取决于名为 cluster 的 Network.config.openshift.io CR 中的以下字段:
-
spec.externalIP.autoAssignCIDRs定义了一个负载均衡器在为服务选择外部 IP 地址时使用的 IP 地址块。OpenShift Container Platform 只支持单个 IP 地址块进行自动分配。当手工为服务分配 ExternalIPs 时,这比管理有限共享 IP 地址的端口空间更简单。如果启用了自动分配,则会为带有spec.type=LoadBalancer的服务分配一个外部 IP 地址。 -
在手动指定 IP 地址时,
spec.externalIP.policy定义了允许的 IP 地址块。OpenShift Container Platform 不会将策略规则应用到spec.externalIP.autoAssignCIDRs定义的 IP 地址块。
如果路由正确,来自配置的外部 IP 地址块的外部流量可以通过服务公开的任何 TCP 或 UDP 端口访问服务端点。
您必须确保分配的 IP 地址块在集群中的一个或多个节点上终止。
OpenShift Container Platform 支持自动和手动分配 IP 地址,并且保证每个地址都被分配到最多一个服务。这样可保证,无论由其他服务公开的端口是什么,每个服务都可以公开选择的端口。
要使用 OpenShift Container Platform 中由 autoAssignCIDRs 定义 的 IP 地址块,您必须为主机网络配置必要的 IP 地址分配和路由。
以下 YAML 描述了配置了外部 IP 的服务:
带有 spec.externalIPs[] 设置的示例服务对象