29.7. 为服务外部 IP 配置 ingress 集群流量


您可以使用 MetalLB 实现或 IP 故障转移部署,将 ExternalIP 资源附加到服务,以便该服务可用于 OpenShift Container Platform 集群外的流量。以这种方式托管外部 IP 地址仅适用于在裸机硬件上安装的集群。

您必须确保正确配置外部网络基础架构,将流量路由到该服务。

29.7.1. 先决条件

  • 您的集群被配置为启用了 ExternalIP。如需更多信息,请参阅为服务配置 ExternalIPs

    注意

    对于 egress IP,不要使用相同的 ExternalIP。

29.7.2. 将 ExternalIP 附加到服务

您可以将 ExternalIP 资源附加到服务。如果您将集群配置为自动将资源附加到服务,您可能不需要手动将 ExternalIP 附加到该服务。

此流程中的示例使用 IP 故障转移配置手动将 ExternalIP 资源附加到集群中的服务。

流程

  1. 在 CLI 中输入以下命令来确认 ExternalIP 资源的兼容 IP 地址范围:

    $ oc get networks.config cluster -o jsonpath='{.spec.externalIP}{"\n"}'
    注意

    如果设置了 autoAssignCIDRs,且您没有在 ExternalIP 资源中为 spec.externalIPs 指定值,OpenShift Container Platform 会自动将 ExternalIP 分配给新的 Service 对象。

  2. 选择以下选项之一将 ExternalIP 资源附加到服务:

    1. 如果要创建新服务,请在 spec.externalIPs 字段中指定一个值,在 allowedCIDRs 参数中指定一个包括一个或多个有效 IP 地址的数组。

      支持 ExternalIP 资源的服务 YAML 配置文件示例

      apiVersion: v1
      kind: Service
      metadata:
        name: svc-with-externalip
      spec:
        externalIPs:
          policy:
            allowedCIDRs:
            - 192.168.123.0/28

    2. 如果您要将 ExternalIP 附加到现有服务中,请输入以下命令。将 <name> 替换为服务名称。将 <ip_address> 替换为有效的 ExternalIP 地址。您可以提供多个以逗号分开的 IP 地址。

      $ oc patch svc <name> -p \
        '{
          "spec": {
            "externalIPs": [ "<ip_address>" ]
          }
        }'

      例如:

      $ oc patch svc mysql-55-rhel7 -p '{"spec":{"externalIPs":["192.174.120.10"]}}'

      输出示例

      "mysql-55-rhel7" patched

  3. 要确认一个 ExternalIP 地址已附加到该服务,请输入以下命令。如果为新服务指定 ExternalIP,您必须首先创建该服务。

    $ oc get svc

    输出示例

    NAME               CLUSTER-IP      EXTERNAL-IP     PORT(S)    AGE
    mysql-55-rhel7     172.30.131.89   192.174.120.10  3306/TCP   13m

29.7.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.