2.11. 将 Load Balancers 分配给特定的子网


您可以通过分配负载均衡器来有效地管理应用程序流量。网络管理员可以分配负载均衡器来自定义部署,这些部署可以确保最佳流量分布、应用程序高可用性、不间断的服务和网络分段。

您可以通过显式定义虚拟私有云(VPC)子网,并在 install-config.yaml 文件的 platform.aws.vpc.subnets 部分中直接为其分配特定的角色,从而控制 OpenShift Load Balancers (包括 Ingress Controller 的网络放置)。此方法提供对将哪些子网用于资源(如 Ingress Controller 和其他集群组件)的粒度控制。

执行以下步骤将 API 和入口负载均衡器分配给特定的子网。

先决条件

在开始前,请确定您有:

  • 现有的 AWS 虚拟私有云 (VPC)。
  • 预先配置的 AWS 子网供 OpenShift 集群使用,请考虑以下事项:

    • 您有一个其子网 ID 列表(例如 subnet-0123456789abcdef0)。这些 ID 将在 install-config.yaml 文件中使用。
    • 使用至少跨越两个可用区(AZ)的子网来实现负载均衡器和其他关键组件(如 control plane)的高可用性。
    • 您在这些子网中有足够的可用 IP 地址用于所有分配的角色。
    • 这些子网的 AWS 配置(包括网络 ACL 和安全组)必须允许分配给它们的所有角色所需的流量。对于托管入口控制器的子网,这通常包括来自所需源的 TCP 端口 80 和 443。
  • 有目标 OpenShift 版本的 OpenShift 安装程序二进制文件。
  • 您有一个 install-config.yaml 文件。

流程

  1. 准备 install-config.yaml 文件:

    如果您还没有这样做,请使用 OpenShift 安装程序生成安装配置文件:

    $ openshift-install create install-config --dir=<your_installation_directory>
    Copy to Clipboard Toggle word wrap

    此命令在指定目录中创建 install-config.yaml 文件。

  2. 定义子网并分配角色:

    使用文本编辑器打开位于 <your_installation_directory> 中的 install-config.yaml 文件。您将在 platform.aws.vpc.subnets 字段中定义您的 VPC 子网及其指定角色。

    对于您要使用集群的每个 AWS 子网,您将创建一个条目,指定其 idroles 列表。每个角色都是带有 type 键的对象。要为默认 Ingress Controller 指定子网,请为它分配一个带有 type: IngressControllerLB 的角色。

    apiVersion: v1
    baseDomain: example.com 
    1
    
    metadata:
      name: my-cluster # Example cluster name
    platform:
      aws:
        region: us-east-1 
    2
    
        vpc: 
    3
    
          subnets: 
    4
    
          - id: subnet-0fcf8e0392f0910d5 # Public Subnet in AZ us-east-1a 
    5
    
            roles:
            - type: IngressControllerLB 
    6
    
            - type: BootstrapNode
          - id: subnet-0xxxxxxxxxxxxxxza # Public Subnet in another AZ for HA
            roles:
            - type: IngressControllerLB
          - id: subnet-0fcf8e0392f0910d4 # Private Subnet in AZ us-east-1a
            roles:
            - type: ClusterNode 
    7
    
          - id: subnet-0yyyyyyyyyyyyyyzb # Private Subnet in another AZ for HA
            roles:
            - type: ClusterNode
          # Add other subnet IDs and their roles as needed for your cluster architecture
    pullSecret: '...' 
    8
    
    sshKey: '...' 
    9
    Copy to Clipboard Toggle word wrap
    1
    您的基域。
    2
    您的 AWS 区域。
    3
    platform.aws 下的 vpc 对象包含子网列表。
    4
    OpenShift 将要使用的所有子网对象的列表。每个对象定义一个子网 id 及其角色。
    5
    使用您的 AWS 子网 ID 替换。
    6
    type: IngressControllerLB 角色专门用于为默认 Ingress Controller 的 LoadBalancer 指定这个子网。在私有/内部集群中,带有 IngressControllerLB 角色的子网必须是私有。
    7
    type: ClusterNode 角色为 control plane 和计算节点指定这个子网。这些通常是专用子网。
    8
    您的 pull secret。
    9
    您的 SSH 密钥。

    subnets 列表中 control plane 负载均衡器的条目遵循类似的模式:

    # ... (within platform.aws.vpc.subnets list)
          - id: subnet-0fcf8e0392f0910d6 # Public Subnet for External API LB
            roles:
            - type: ControlPlaneExternalLB
          - id: subnet-0fcf8e0392f0910d7 # Private Subnet for Internal API LB
            roles:
            - type: ControlPlaneInternalLB
    # ...
    Copy to Clipboard Toggle word wrap

    对于默认公共 Ingress Controller,在 install-config.yaml 文件中分配了 IngressControllerLB 角色的任何子网都必须是公共子网。例如,必须在 AWS 中有一个路由表条目,用于将出站流量定向到互联网网关(IGW)。

    确保您在 AZ 中列出所有必要的子网、公共和私有子网,并根据集群架构分配适当的角色。

    子网 ID 在现有 VPC 中定义子网,并可选择性地指定它们的预期角色。如果在任何子网上没有指定角色,则会自动决定子网角色。在这种情况下,VPC 不得包含没有 kubernetes.io/cluster/<cluster-id> 标签的任何其他非集群子网。

    如果为子网指定角色,每个子网必须至少有一个分配的角色,并且 ClusterNodeBootstrapNodeIngressControllerLBControlPlaneExternalLBControlPlaneInternalLB 角色必须至少分配给一个子网。但是,如果集群范围是内部的,则不需要 ControlPlaneExternalLB

  3. 继续集群安装:

    将更改保存到 install-config.yaml 文件后,创建集群:

    $ openshift-install create cluster --dir=<your_installation_directory>
    Copy to Clipboard Toggle word wrap

    安装程序现在使用 install-config.yaml 文件的 platform.aws.vpc.subnets 部分中的子网定义和显式角色分配来置备集群资源,包括将 Ingress Controller 的 LoadBalancer 放置到您使用 IngressControllerLB 角色指定的子网中。

注意

platform.aws.vpc.subnets 中的角色分配机制,如 IngressControllerLB,ClusterNode,ControlPlaneExternalLB,ControlPlaneInternalLB,BootstrapNode 是 OpenShift 安装程序标识适合不同集群服务和组件的类型。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat