IBM Cloud Docs
配置 VPC 子网

配置 VPC 子网

虚拟私有云

通过向 Red Hat® OpenShift® on IBM Cloud® VPC 集群添加子网,更改可用的可移植公共或私有 IP 地址池。

本页内容仅针对 VPC 群集。 有关经典集群的信息,请参阅 为经典集群配置子网和 IP 地址

Red Hat OpenShift on IBM Cloud 中的 VPC 联网概述

了解 Red Hat OpenShift on IBM Cloud 集群中 VPC 网络的基本概念。

子网

首次创建 VPC 群集之前,必须在要部署工作者节点的每个区域中 创建一个 VPC 子网。 VPC 子网是一个指定的私有 IP 地址范围(CIDR 块),可将一组工作节点和 pod 配置为连接到同一条物理线路上。

创建集群时,只能为每个专区指定一个现有 VPC 子网。 在集群中添加的每个工作程序节点都将使用该专区中 VPC 子网中的专用 IP 地址进行部署。 供应工作程序节点后,工作程序节点 IP 地址会在 reboot 操作后持续使用,但会在 replaceupdate 操作后更改。

请勿在集群创建期间或在专区中添加工作程序节点时删除附加到集群的子网。 如果删除集群使用的 VPC 子网,那么使用子网中的 IP 地址的任何负载均衡器都可能迂到问题,并且您可能无法创建新的负载均衡器。

我的 VPC 子网需要多少 IP 地址?

当您 创建 VPC 子网时,请确保为集群创建具有足够 IP 地址的子网,例如 256。 以后不能更改 VPC 子网的 IP 地址数。

请记住以下 IP 地址预留。

  • 缺省情况下,5 IP 地址是来自每个子网的 由 VPC 保留
  • 1 虚拟专用端点(VPE)网关 需要来自集群具有工作程序节点的每个专区中的一个子网的 IP 地址。
  • 集群中的每个工作程序节点都需要 1 IP 地址。
  • 每次更新或更换工作程序节点时,都需要 1 IP 地址。 这些 IP 地址最终将被回收并可供复用。
  • 每次创建公共或专用负载均衡器时,都会使用 2 IP 地址。 如果您具有多专区集群,那么这些 2 IP 地址将跨专区分布,因此子网可能未保留 IP 地址。
  • 为集群设置的其他网络资源 (例如 VPNaaS 或 LBaaS 自动缩放) 可能需要其他 IP 地址或具有其他 服务限制。 例如,LBaaS 自动缩放可能会扩展至每个负载均衡器 16 个 IP 地址。

我可以将哪些 IP 范围用于 VPC 子网?

VPC 子网的缺省 IP 地址范围为 10.0.0.0- 10.255.255.255。 有关每个 VPC 区域的 IP 地址范围列表,请参阅 VPC 默认地址前缀

如果需要使用定制范围子网创建集群,请参阅 定制地址前缀 指南。 但是,如果对工作程序节点使用定制范围子网,那么必须确保工作程序节点子网的 IP 范围与集群的 pod 子网不重叠。

  • 如果在集群创建期间在 --pod-subnet 选项中指定了您自己的 pod 子网,那么会为此 pod 分配此范围内的 IP 地址。
  • 如果在集群创建期间未指定定制 pod 子网,那么集群将使用缺省 pod 子网。 在 VPC 中创建的第一个集群中,缺省 pod 子网为 172.17.0.0/18。 在该 VPC 中创建的第二个集群中,缺省 pod 子网为 172.17.64.0/18。 在每个后续集群中,pod 子网范围是下一个可用的非重叠 /18 子网。

如何为经典基础架构访问创建子网?

如果在创建 VPC 时启用经典访问,那么 经典访问缺省地址前缀 会自动确定您创建的任何子网的 IP 范围。 但是,经典访问 VPC 子网的缺省 IP 范围与 Red Hat OpenShift on IBM Cloud 控制平面的子网冲突。 相反,您必须 在不使用自动缺省地址前缀的情况下创建 VPC,然后在集群的这些范围内创建您自己的地址前缀和子网

能否为集群中的 pod 和服务指定子网?

如果计划通过 IBM Cloud Direct Link 或 VPN 服务将集群连接到本地网络,那么可以通过指定用于为 pod 提供专用 IP 地址的定制子网 CIDR 以及用于为服务提供专用 IP 地址的定制子网 CIDR 来避免子网冲突。

要在集群创建期间指定定制 pod 和服务子网,请使用 ibmcloud oc cluster create CLI 命令中的 --pod-subnet--service-subnet 选项。

要查看集群使用的 pod 和服务子网,请在 ibmcloud oc cluster get 的输出中查找 Pod SubnetService Subnet 字段。

Pod

缺省范围

在 VPC 中创建的第一个集群中,缺省 pod 子网为 172.17.0.0/18。 在该 VPC 中创建的第二个集群中,缺省 pod 子网为 172.17.64.0/18。 在每个后续集群中,pod 子网范围是下一个可用的非重叠 /18 子网。

大小要求

指定自定义子网时,请考虑计划创建的群集规模以及将来可能添加的工作节点数量。 子网的 CIDR 必须至少为 /23,这样才能为集群中最多四个工作节点提供足够的 pod IP。 对于较大的集群,请使用 /22 为 8 个工作程序节点提供足够的 pod IP 地址,使用 /21 为 16 个工作程序节点提供足够的 pod IP 地址,以此类推。

对于 VPC 集群,可以通过在 --pod-subnet 选项中包含子网大小来指定子网大小。 例如: --pod-subnet 0.0.0.0/X,其中 X 是必需的 pod 子网大小。 然后,将自动选择 pod 子网。 自动分配 pod 子网时,分配将从 172.17.0.0 开始,最大子网限制为 13,最小子网大小限制为 23

工作节点有全局限制。 一个区域内所有集群的工作节点不能超过 500 个。

范围需求

Pod 和服务子网不能相互重叠,pod 子网不能与工作程序节点的 VPC 子网重叠。 您选择的子网必须在下列其中一个范围内。

  • 172.17.0.0 - 172.17.255.255

  • 172.21.0.0 - 172.31.255.255

  • 192.168.0.0 - 192.168.254.255

  • 198.18.0.0 - 198.19.255.255

服务

缺省范围
部署到群集的所有服务默认都会分配一个 172.21.0.0/16 范围内的私有 IP 地址。
大小要求
指定定制子网时,必须以 CIDR 格式指定大小至少为 /24 的子网,这允许集群中最多 255 个服务或更大的服务。
范围需求
Pod 和服务子网不能相互重叠。 您选择的子网必须在下列其中一个范围内。
  • 172.17.0.0 - 172.17.255.255

  • 172.21.0.0 - 172.31.255.255

  • 192.168.0.0 - 192.168.254.255

  • 198.18.0.0 - 198.19.255.255

公共网关

公共网关使子网和连接到子网的所有工作程序节点能够建立到因特网的出站连接。 如果同时为集群启用了公共和私有云服务端点,那么必须在部署了工作程序节点的 VPC 子网上启用 公共网关 以访问缺省 Red Hat OpenShift 组件,而无需连接到 VPC 的专用网络。

创建 VPC 集群并在集群创建期间同时启用公共和私有云服务端点时,缺省情况下,将使用公共云服务端点来访问组件,例如集群的 Red Hat OpenShift Web 控制台。 为了使控制台 pod 通过公共服务端点在因特网上建立安全的公共连接,必须在工作程序节点部署到的每个 VPC 子网上启用公共网关。

创建 VPC 集群并在集群创建期间仅启用私有云服务端点时,缺省情况下将使用私有云服务端点来访问 Red Hat OpenShift 组件,例如 Red Hat OpenShift Web 控制台或 OperatorHub。 您必须连接到专用 VPC 网络 (例如,通过 VPN 连接),才能访问这些组件或在集群上运行 kubectl 命令。 此外,如果 IBM Cloud 服务不支持私有云服务端点,则工作站节点必须连接到已连接公共网关的子网。 这些工作程序节点上的 pod 可以通过子网的公共网关在公用网络上安全地与服务进行通信。 请注意,子网上无需公共网关来允许从因特网到 LoadBalancer 服务或 ALB 的入站网络流量。

在一个 VPC 中,每个区域只能创建一个公共网关,但该公共网关可以连接到区域内的多个子网。 有关公共网关的更多信息,请参阅 Networking for VPC 文档

虚拟专用端点 (VPE)

工作程序节点可以通过集群的 虚拟专用端点(VPE) 与 Kubernetes 主节点进行通信。

VPE 是绑定到端点网关的虚拟 IP 地址。 在 VPC 中每个集群创建一个 VPE 网关资源。 集群具有工作程序节点的每个专区中的一个子网中的一个 IP 地址将自动用于 VPE 网关,并且此专区中的工作程序节点使用此 IP 地址与 Kubernetes 主节点进行通信。 要查看集群的 VPE 网关详细信息,请打开 VPC 仪表板的虚拟专用端点网关 并查找格式为 iks-<cluster_ID> 的 VPE 网关。

请注意,工作程序节点会自动使用缺省情况下在 VPC 中创建的 VPE。 但是,如果启用了 集群的公共云服务端点,那么将在公共端点上建立一半的工作程序到主节点流量,在 VPE 上建立一半的工作程序到主节点流量,以防止公共或专用网络可能发生中断。

请勿删除子网上用于 VPE 的任何 IP 地址。

网络分段

网络分段描述了用于将网络划分为多个子网的方法。 在一个子网络中运行的应用程序无法看到或访问另一个子网络中的应用程序。 有关 VPC 子网的网络分段选项的更多信息,请参阅 此集群安全性主题

子网提供了一个通道,用于连接集群内的工作程序节点。 此外,任何连接到同一 VPC 中任何专用子网的系统都可以与工作程序进行通信。 例如,一个 VPC 中的所有子网都可以通过专用第 3 层路由与内置 VPC 路由器进行通信。

如果您有多个集群必须相互通信,那么可以在同一 VPC 中创建这些集群。 不过,如果你的群集不需要通信,你可以通过在单独的 VPC 中创建群集来实现更好的网络分段。 此外,还可以为 VPC 子网创建访问控制表 (ACL),以调解专用网络上的流量。 ACL 由入站和出站规则组成,这些规则定义了每个 VPC 子网允许的流入和流出。

VPC 联网限制

为集群创建 VPC 子网时,请记住以下功能和限制。

  • 每个 VPC 子网的缺省 CIDR 大小为 /24,最多可支持 253 个工作程序节点。 如果计划在一个集群中每个专区部署 250 个以上的工作程序节点,请考虑创建更大的子网。
  • 创建 VPC 子网后,无法调整其大小或更改其 IP 范围。
  • 同一 VPC 中的多个群集可共享 VPC 子网。 但是,无法在多个集群之间共享定制 pod 和服务子网。
  • VPC 子网绑定到单校区多区区域,不能跨越多个区或区域。
  • 创建子网后,无法将其移动到不同的区域、地区或 VPC。
  • 如果有工作节点连接到某个区域的现有子网,则无法更改群集中该区域的子网。
  • 禁止 172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16 范围。
  • 在一个 VPC 中,每个区域只能创建一个公共网关,但该公共网关可以连接到区域内的多个子网。
  • 经典访问缺省地址前缀 与 Red Hat OpenShift on IBM Cloud 控制平面的子网冲突。 您必须 创建没有自动缺省地址前缀的 VPC,然后在这些范围内为集群创建自己的地址前缀和子网

创建 VPC 子网并连接公共网关

为集群创建 VPC 子网,并 (可选) 将公共网关连接到子网。

在控制台中创建 VPC 子网

使用 IBM Cloud 控制台为集群创建 VPC 子网,并选择性地将公共网关连接到子网。

  1. VPC 子网仪表板 中,单击 创建
  2. 输入子网的名称,然后选择已创建的 VPC 的名称。
  3. 选择要在其中创建子网的位置和专区。
  4. 指定要创建的 IP 地址数。
    • VPC 子网为集群中的工作节点和负载均衡器服务提供 IP 地址,因此 请创建具有足够 IP 地址的 VPC 子网,例如 256 个。 以后不能更改 VPC 子网的 IP 数量。
    • 如果输入特定 IP 范围,请勿使用以下保留范围: 172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16
  5. 要运行默认的 Red Hat OpenShift 组件(如网络控制台或 OperatorHub, ),并允许群集访问公共端点(如另一个应用程序的公共 URL 或仅支持公共云服务端点的 IBM Cloud 服务),必须将公共网关连接到子网。
  6. 单击创建子网
  7. 使用子网来 创建集群创建新的工作程序池将子网添加到现有工作程序池。> 请勿在集群创建期间或在专区中添加工作程序节点时删除附加到集群的子网。 如果删除集群使用的 VPC 子网,那么使用子网中的 IP 地址的任何负载均衡器都可能迂到问题,并且您可能无法创建新的负载均衡器。

在 CLI 中创建 VPC 子网

使用 IBM Cloud CLI 为集群创建 VPC 子网,并 (可选) 将公共网关连接到子网。

准备工作

  1. 在命令行中,登录 IBM Cloud 账户,并将 IBM Cloud 区域和资源组作为目标,在此创建 VPC 群集。 有关支持的区域,请参阅在其他区域中创建 VPC。 集群的资源组可以不同于 VPC 资源组。 根据提示,输入您的 IBM Cloud 凭证。 如果您有一个联合 ID,请使用 --sso 选项登录。
    ibmcloud login -r <region> [-g <resource_group>] [--sso]
    
  2. 在要创建集群的区域中创建 VPC

要创建 VPC 子网,请按照以下步骤操作。

  1. 获取要创建子网的 VPC 的 ID。

    ibmcloud oc vpcs
    
  2. 创建子网。 有关此命令中的选项的更多信息,请参阅 CLI 参考

    ibmcloud is subnet-create <subnet_name> <vpc_id> --zone <vpc_zone> --ipv4-address-count <number_of_ip_address>
    
    • VPC 子网为集群中的工作节点和负载均衡器服务提供 IP 地址,因此 请创建具有足够 IP 地址的 VPC 子网,例如 256 个。 以后不能更改 VPC 子网的 IP 数量。
    • 请勿使用以下保留范围: 172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16
  3. 检查在要创建集群的专区中是否有公共网关。 在一个 VPC 中,每个区域只能创建一个公共网关,但该公共网关可以连接到区域内的多个子网。

    ibmcloud is public-gateways
    

    示例输出

    ID                                     Name                                       VPC                          Zone         Floating IP                  Created                     Status      Resource group
    26426426-6065-4716-a90b-ac7ed7917c63   test-pgw                                   testvpc(36c8f522-.)          us-south-1   169.xx.xxx.xxx(26466378-.)   2019-09-20T16:27:32-05:00   available   -
    2ba2ba2b-fffa-4b0c-bdca-7970f09f9b8a   pgw-73b62bc0-b53a-11e9-9838-f3f4efa02374   team3(ff537d43-.)            us-south-2   169.xx.xxx.xxx(2ba9a280-.)   2019-08-02T10:30:29-05:00   available   -
    
    • 如果在每个专区中已有公共网关,请记下公共网关的 标识
    • 如果您在每个专区中都没有公共网关,请创建公共网关。 考虑以 <cluster>-<zone>-gateway 的格式命名公共网关。 记下输出中公共网关的 ID
    ibmcloud is public-gateway-create <gateway_name> <VPC_ID> <zone>
    

    示例输出

    ID               26466378-6065-4716-a90b-ac7ed7917c63
    Name             mycluster-us-south-1-gateway
    Floating IP      169.xx.xx.xxx(26466378-6065-4716-a90b-ac7ed7917c63)
    Status           pending
    Created          2019-09-20T16:27:32-05:00
    Zone             us-south-1
    VPC              myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
    Resource group   -
    
  4. 使用公共网关和子网的标识,将公共网关连接到子网。

    ibmcloud is subnet-update <subnet_ID> --public-gateway-id <gateway_ID>
    

    示例输出

    ID                  91e946b4-7094-46d0-9223-5c2dea2e5023
    Name                mysubnet1
    IPv4 CIDR           10.240.xx.xx/24
    Address available   250
    Address total       256
    ACL                 allow-all-network-acl-36c8f522-4f0d-400c-8226-299f0b8198cf(585bc142-5392-45d4-afdd-d9b59ef2d906)
    Gateway             mycluster-us-south-1-gateway(26466378-6065-4716-a90b-ac7ed7917c63)
    Created             2019-08-21T09:43:11-05:00
    Status              available
    Zone                us-south-1
    VPC                 myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
    
  5. 使用子网来 创建集群创建新的工作程序池将子网添加到现有工作程序池。 请勿在集群创建期间或在专区中添加工作程序节点时删除附加到集群的子网。 如果删除集群使用的 VPC 子网,那么使用子网中的 IP 地址的任何负载均衡器都可能迂到问题,并且您可能无法创建新的负载均衡器。

创建 VPC 子网以进行经典访问

如果在创建 VPC 时启用经典访问,那么 经典访问缺省地址前缀 会自动确定您创建的任何子网的 IP 范围。 但是,经典访问 VPC 子网的缺省 IP 范围与 Red Hat OpenShift on IBM Cloud 控制平面的子网冲突。 相反,您必须创建没有自动缺省地址前缀的 VPC,并创建自己的地址前缀。 然后,每当您为集群创建子网时,都将在您创建的地址前缀范围内创建子网。

在控制台中为经典访问创建 VPC 子网

  1. 创建不带缺省地址前缀的经典访问 VPC。
    1. 虚拟专用云仪表板 中,单击 创建
    2. 输入名称,资源组和任何标记的详细信息。
    3. 选中 启用对经典资源的访问复选框,并取消选中 为每个专区创建缺省前缀复选框。
    4. 选择 VPC 的区域。
    5. 单击创建虚拟私有云
  2. 在每个专区中创建地址前缀。
    1. 单击 VPC 的名称以查看其详细信息。
    2. 单击 地址前缀 选项卡,然后单击 创建
    3. 对于计划在其中创建子网的每个专区,创建一个或多个地址前缀。 地址前缀必须在下列其中一个范围内: 10.0.0.0 - 10.255.255.255172.17.0.0 - 172.17.255.255172.21.0.0 - 172.31.255.255192.168.0.0 - 192.168.254.255
  3. 创建使用地址前缀的子网。
    1. VPC 子网仪表板 中,单击 创建
    2. 输入子网的名称,然后选择经典访问 VPC 的名称。
    3. 选择要在其中创建子网的位置和专区。
    4. 选择为此区域创建的地址前缀。
    5. 指定要创建的 IP 地址数。 VPC 子网为集群中的工作节点和负载均衡器服务提供 IP 地址,因此 请创建具有足够 IP 地址的 VPC 子网,例如 256 个。 以后不能更改 VPC 子网的 IP 数量。
    6. 要运行默认的 Red Hat OpenShift 组件(如网络控制台或 OperatorHub, ),并允许群集访问公共端点(如另一个应用程序的公共 URL 或仅支持公共云服务端点的 IBM Cloud 服务),必须将公共网关连接到子网。
    7. 单击创建子网
  4. 使用子网 创建集群。 请勿在集群创建期间或在专区中添加工作程序节点时删除附加到集群的子网。 如果删除集群使用的 VPC 子网,那么使用子网中的 IP 地址的任何负载均衡器都可能迂到问题,并且您可能无法创建新的负载均衡器。

创建 VPC 子网以从 CLI 进行经典访问

  1. 在命令行中,登录 IBM Cloud 账户,并将 IBM Cloud 区域和资源组作为目标,在此创建 VPC 群集。 有关支持的区域,请参阅在其他区域中创建 VPC。 集群的资源组可以不同于 VPC 资源组。 根据提示,输入您的 IBM Cloud 凭证。 如果您有一个联合 ID,请使用 --sso 选项登录。
    ibmcloud login -r <region> [-g <resource_group>] [--sso]
    
  2. 创建不带缺省地址前缀的经典访问 VPC。 在输出中,复制 VPC 标识。
    ibmcloud is vpc-create <name> --classic-access --address-prefix-management manual
    
  3. 对于计划在其中创建子网的每个专区,创建一个或多个地址前缀。 地址前缀必须在下列其中一个范围内: 10.0.0.0 - 10.255.255.255172.17.0.0 - 172.17.255.255172.21.0.0 - 172.31.255.255192.168.0.0 - 192.168.254.255
    ibmcloud is vpc-address-prefix-create <prefix_name> <vpc_id> <zone> <prefix_range>
    
  4. 在每个使用地址前缀的专区中创建子网。 有关此命令中的选项的更多信息,请参阅 CLI 参考。 VPC 子网为集群中的工作节点和负载均衡器服务提供 IP 地址,因此 请创建具有足够 IP 地址的 VPC 子网,例如 256 个。 以后不能更改 VPC 子网的 IP 数量。
    ibmcloud is subnet-create <subnet_name> <vpc_id> --zone <vpc_zone> --ipv4-address-count <number_of_ip_address> --ipv4-cidr-block <prefix_range>
    
  5. 要运行默认的 Red Hat OpenShift 组件(如网络控制台或 OperatorHub, ),并允许群集访问公共端点(如另一个应用程序的公共 URL 或仅支持公共云服务端点的 IBM Cloud 服务),必须将公共网关连接到子网。
    1. 在每个专区中创建公共网关。 考虑以 <cluster>-<zone>-gateway 的格式命名公共网关。 记下输出中公共网关的 ID
      ibmcloud is public-gateway-create <gateway_name> <VPC_ID> <zone>
      
      示例输出
      ID               26466378-6065-4716-a90b-ac7ed7917c63
      Name             mycluster-us-south-1-gateway
      Floating IP      169.xx.xx.xxx(26466378-6065-4716-a90b-ac7ed7917c63)
      Status           pending
      Created          2019-09-20T16:27:32-05:00
      Zone             us-south-1
      VPC              myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
      Resource group   -
      
    2. 使用公共网关和子网的 ID,将公共网关附加到子网。
      ibmcloud is subnet-update <subnet_ID> --public-gateway-id <gateway_ID>
      
      示例输出
      ID                  91e946b4-7094-46d0-9223-5c2dea2e5023
      Name                mysubnet1
      IPv4 CIDR           10.240.xx.xx/24
      Address available   250
      Address total       256
      ACL                 allow-all-network-acl-36c8f522-4f0d-400c-8226-299f0b8198cf(585bc142-5392-45d4-afdd-d9b59ef2d906)
      Gateway             mycluster-us-south-1-gateway(26466378-6065-4716-a90b-ac7ed7917c63)
      Created             2019-08-21T09:43:11-05:00
      Status              available
      Zone                us-south-1
      VPC                 myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
      
  6. 使用子网 创建集群。 请勿在集群创建期间或在专区中添加工作程序节点时删除附加到集群的子网。 如果删除集群使用的 VPC 子网,那么使用子网中的 IP 地址的任何负载均衡器都可能迂到问题,并且您可能无法创建新的负载均衡器。