了解 VPC 集群联网
创建集群时,必须选择联网设置,以便特定集群组件可以相互通信,并且能与集群外部的网络或服务进行通信。
- 工作程序与工作程序的通信:所有工作程序节点都必须能够在专用网络上通过 VPC 子网相互通信。
- 工作程序到主节点和用户到主节点通信: 工作程序节点和授权集群用户可以通过虚拟专用端点或云服务端点安全地与 Kubernetes 主节点通信。
- 工作程序与其他服务或网络的通信:允许工作程序节点安全地与其他 IBM Cloud 服务(例如,IBM Cloud® Container Registry)、与内部部署网络、与其他 VPC 或与经典基础架构资源进行通信。
- 与在工作程序节点上运行的应用程序的外部通信:允许向集群发出公共或专用请求,以及从集群向公共端点发出请求。
完成本页后,试试小测验。
使用VPC子网的工人与工人之间的沟通
在您首次创建VPC集群之前,您必须在每个要部署工作节点的区域中 创建一个VPC子网。 VPC子网是一个特定的私有IP地址范围(CIDR块),它配置了一组工作节点和容器,就像它们连接到同一根物理线路上一样。
创建集群时,需要为每个区域指定一个现有的VPC子网。 在集群中添加的每个工作程序节点都将使用该专区中 VPC 子网中的专用 IP 地址进行部署。 供应工作程序节点后,工作程序节点 IP 地址会在 reboot
操作后持续使用,但会在 replace
和 update
操作后更改。
子网提供了一个通道,用于连接集群内的工作程序节点。 此外,任何连接到同一 VPC 中任何专用子网的系统都可以与工作程序进行通信。 例如,一个 VPC 中的所有子网都可以通过专用第 3 层路由与内置 VPC 路由器进行通信。 如果您有多个集群必须相互通信,那么可以在同一 VPC 中创建这些集群。 但是,如果您的集群不需要通信,您可以通过在单独的VPC中创建集群来更好地进行网络分段。 此外,还可以为 VPC 子网创建访问控制表 (ACL),以调解专用网络上的流量。 ACL 由入站和出站规则组成,这些规则定义了每个 VPC 子网允许的流入和流出。
创建 VPC 集群并在集群创建期间同时启用公共和私有云服务端点时,缺省情况下,将使用公共云服务端点来访问组件,例如集群的 Red Hat OpenShift Web 控制台。 为了使控制台 pod 通过公共服务端点在因特网上建立安全的公共连接,必须在工作程序节点部署到的每个 VPC 子网上启用公共网关。
创建 VPC 集群并在集群创建期间仅启用私有云服务端点时,缺省情况下将使用私有云服务端点来访问 Red Hat OpenShift 组件,例如 Red Hat OpenShift Web 控制台或 OperatorHub。 您必须连接到专用 VPC 网络 (例如,通过 VPN 连接),才能访问这些组件或在集群上运行 kubectl
命令。
VPC 子网的缺省 IP 地址范围为 10.0.0.0- 10.255.255.255。 有关每个 VPC 区域的 IP 地址范围列表,请参阅 VPC 默认地址前缀。
如果在创建 VPC 时启用经典访问,那么 经典访问缺省地址前缀 会自动确定您创建的任何子网的 IP 范围。 但是,经典访问 VPC 子网的缺省 IP 范围与 Red Hat OpenShift on IBM Cloud 控制平面的子网冲突。 相反,您必须 在不使用自动缺省地址前缀的情况下创建 VPC,然后在集群的这些范围内创建您自己的地址前缀和子网。
是否需要使用定制范围的子网来创建集群? 请查看有关定制地址前缀的指南。 如果对工作程序节点使用定制范围子网,那么必须 确保工作程序节点子网与集群的 pod 子网不重叠。
请勿在集群创建期间或在专区中添加工作程序节点时删除附加到集群的子网。 如果删除集群使用的 VPC 子网,那么使用子网中的 IP 地址的任何负载均衡器都可能迂到问题,并且您可能无法创建新的负载均衡器。
为集群创建 VPC 子网时,请记住以下功能和限制。 有关 VPC 子网的更多信息,请参阅 VPC 中子网的特征。
- 每个 VPC 子网的缺省 CIDR 大小为
/24
,最多可支持 253 个工作程序节点。 如果计划在一个集群中每个专区部署 250 个以上的工作程序节点,请考虑创建更大的子网。 - 创建VPC子网后,您无法调整其大小或更改其IP范围。
- 同一 VPC 中的多个集群可以共享子网。
- VPC子网绑定到单个区域,不能跨多个区域或地区。
- 创建子网后,您不能将其移动到其他区域、地区或VPC。
- 如果您有连接到区域中现有子网的工人节点,则无法更改群集中该区域的子网。
- 禁止
172.16.0.0/16
,172.18.0.0/16
,172.19.0.0/16
和172.20.0.0/16
范围。
使用虚拟专用端点或云服务端点的工作程序到主节点和用户到主节点通信
Red Hat OpenShift on IBM Cloud 使用不同类型的服务端点来建立从授权集群用户和工作程序节点到 Kubernetes 主节点的连接。 授权集群用户通过云服务端点与 Kubernetes 主节点进行通信。 根据集群版本,工作程序节点通过云服务端点或 VPC 虚拟专用端点与 Kubernetes 主节点进行通信。
在创建集群之前,必须使帐户能够使用服务端点。 要启用服务端点,请运行 ibmcloud account update --service-endpoint-enable true
。
在 Red Hat OpenShift on IBM Cloud 的VPC集群中,您无法禁用私有云服务终端节点,也无法仅使用公共云服务终端节点来设置集群。
缺省情况下,将使用公共云服务端点和私有云服务端点来创建 VPC 集群。 要创建具有仅连接到专用网络的工作程序节点的集群,必须在集群创建期间仅启用专用服务端点。 请勿启用公共服务端点。 例如,要 在 CLI 中 创建仅具有私有云服务端点的 VPC 集群,请包含 --disable-public-service-endpoint
选项。 如果包含此选项,那么将使用路由器和 Ingress 控制器创建集群,这些路由器和 Ingress 控制器仅在缺省情况下在专用网络上公开应用程序。 如果您以后想要向公用网络公开应用程序,那么必须手动创建公用路由器和 Ingress 控制器。
VPC 集群中的工作程序到主节点通信
根据集群版本,与 Kubernetes 主节点的工作程序节点通信以不同方式建立。
- 与 Kubernetes 主节点的工作程序节点通信是通过 VPC 虚拟专用端点(VPE) 建立的。 如果还启用了公共云服务端点,那么将在公共端点上建立一半的工作程序到主节点流量,并在 VPE 上建立一半的工作程序到主节点流量,以防止公共或专用网络的潜在中断。
为了保护通过公共和私有云服务端点或 VPE 进行的通信,创建集群时,Red Hat OpenShift on IBM Cloud 会自动设置 Kubernetes 主节点与工作程序节点之间的 Konnectivity 连接。 工作节点通过 TLS 证书与主节点安全通信,主节点通过 Konnectivity 连接与工作节点通信。
VPC 集群中的用户到主节点通信
您可以通过启用公共和私有云服务终端或仅启用私有云服务终端,允许授权集群用户与 Kubernetes 主服务器通信。
- 公共和私有云服务终端:默认情况下,所有由授权集群用户发起的主机调用都通过公共云服务终端进行路由。 如果授权集群用户位于您的VPC网络中或通过 VPC VPN连接,则可通过私有云服务终端私密访问主服务器。
- 仅限私有云服务端点: 要通过私有云服务端点访问主节点,授权集群用户必须位于 VPC 网络中或通过 VPC VPN 连接 进行连接。
您可以使用基于上下文的限制来确保对群集服务端点的网络访问安全。 只有来自允许列表中子网的集群主机的授权请求才能通过集群的服务端点。 使用基于上下文的限制有助于防止未经授权的扫描活动。 更多信息,请参阅 使用基于上下文的限制。
工作程序与其他服务或网络的通信
允许工作程序节点安全地与其他 IBM Cloud 服务、内部部署网络、其他 VPC 和 IBM Cloud 经典基础架构资源进行通信。
通过专用或公用网络与其他 IBM Cloud 服务进行通信
工作程序节点可以通过专用网络自动安全地与其他 IBM Cloud 支持私有云服务端点的服务(例如 IBM Cloud® Container Registry) 进行通信。 如果 IBM Cloud 服务不支持私有云服务端点,那么工作程序节点可以通过子网的公共网关通过公用网络与服务进行安全通信。
请注意,如果对 VPC 子网使用访问控制表 (ACL),那么必须创建入站或出站规则,以允许工作程序节点与这些服务进行通信。
与内部部署数据中心的资源进行通信
要将集群与本地数据中心连接,可以使用 IBM Cloud® Virtual Private Cloud VPN 或 IBM Cloud® Direct Link。
- 要开始使用 Virtual Private Cloud VPN,请参阅 配置内部部署 VPN 网关 和 在 VPC 中创建 VPN 网关,并在 VPC VPN 网关与本地 VPN 网关之间创建连接。 如果您有多区域集群,则必须在每个区域的工作节点所在的子网上创建一个VPC网关。
- 要开始使用 Direct Link,请参阅 Order IBM Cloud Direct Link Dedicated。 在步骤 8 中,可以创建与要连接到 Direct Link 网关的 VPC 的网络连接。
如果计划将集群连接到本地网络,请查看以下有用信息:
- 您可能与 IBM提供的缺省 172.30.0.0/16 范围 (针对 pod) 和 172.21.0.0/16 范围 (针对服务) 存在子网冲突。 当您 通过CLI创建集群 时,可以在
--pod-subnet
选项中为Pod指定自定义子网CIDR,在--service-subnet
选项中为服务指定自定义子网CIDR,从而避免子网冲突。 - 如果 VPN 解决方案保留请求的源 IP 地址,那么可以 创建定制静态路由 以确保工作程序节点可以将响应从集群路由回本地网络。
- 请注意,禁止
172.16.0.0/16
,172.18.0.0/16
,172.19.0.0/16
和172.20.0.0/16
子网范围,因为它们是为 Red Hat OpenShift on IBM Cloud 控制平面功能保留的。
与其他 VPC 中的资源进行通信
要将您账户中的整个VPC连接到另一个VPC,您可以使用 IBM Cloud VPC VPN或 IBM Cloud® Transit Gateway。
- 要开始使用 IBM Cloud VPC VPN,请遵循 使用 VPN 连接两个 VPC 中的步骤在每个 VPC 中的子网上创建 VPC 网关,并在两个 VPC 网关之间创建 VPN 连接。 请注意,如果已定制 VPC 中的访问控制表 (ACL) 或安全组,那么必须确保 ACL 和安全组允许工作程序节点与其他 VPC 中的工作程序节点进行通信。
- 要开始使用 IBM Cloud Transit Gateway,请参阅 Transit Gateway 文档。可以将 Transit Gateway 实例配置为在同一区域中的 VPC (本地路由) 或不同区域中的 VPC (全局路由) 之间进行路由。
与 IBM Cloud 经典资源进行通信
如果需要将集群连接到 IBM Cloud 经典基础架构中的资源,那么可以设置具有经典访问权的 VPC 或使用 IBM Cloud Transit Gateway。
- 要开始使用具有经典访问权的 VPC,请参阅 设置对经典基础架构的访问权。 请注意,在创建VPC时必须启用经典访问,且无法将现有VPC转换为经典访问。 此外,每个区域只能设置一个 VPC 的经典基础架构访问权,并且不能在一个区域中设置多个具有经典基础架构访问权的 VPC。
- 要开始使用 IBM Cloud Transit Gateway,请参阅 Transit Gateway 文档。 您可以将多个 VPC 连接到经典基础架构,例如,使用 IBM Cloud Transit Gateway 来管理多个区域中的 VPC 之间对 IBM Cloud 经典基础架构中的资源的访问权。
与在工作程序节点上运行的应用程序的外部通信
允许从集群外部向在工作程序节点上运行的应用程序发出专用或公共流量请求。
到集群应用程序的专用流量
当您在集群中部署应用程序时,您可能希望仅允许与集群位于同一专用网络中的用户和服务访问该应用程序。 专用负载均衡非常适用于使应用程序可供集群外部的请求使用,而无需向一般公众公开应用程序。 还可以使用专用负载均衡来测试访问,请求路由以及对应用程序进行其他配置后,再使用公用网络服务向公众公开应用程序。
要允许从集群外部到应用程序的专用网络流量请求,可以使用专用 Kubernetes 联网服务,例如创建 LoadBalancer
服务。 例如,在集群中创建 Kubernetes LoadBalancer
服务时,将在集群外部的 VPC 中自动创建用于 VPC 的负载均衡器。 VPC 负载均衡器是多专区负载均衡器,通过在工作程序节点上自动打开的专用
NodePort 来路由应用程序的请求。 对于 VPC ALB,会自动将以 kube-<vpc-id>
形式命名的 安全组 附加到 ALB 实例。
连接到 VPC ALB 的 kube-<vpc-id>
安全组与用于与 Kubernetes 主节点通信的专用 VPE 网关的安全组相同。 请勿修改此安全组,因为这样做可能会导致集群与 Kubernetes 主节点之间的网络连接中断。 而是可以 从 VPC ALB 中除去安全组,并
将其替换为您创建和管理的安全组。
有关更多信息,请参阅规划专用外部负载均衡。
到集群应用程序的公共流量
为了在公共互联网上访问您的应用程序,您可以使用公共网络服务。 即使您的工作节点仅连接到私有VPC子网,为公共网络服务创建的VPC负载均衡器也可以通过为您的应用程序提供一个公共 URL,将公共请求路由到您的私有网络应用程序。 应用程序以公共方式公开时,具有公共 URL 的任何人都可以向应用程序发送请求。
您可以使用公共 Kubernetes 联网服务,例如创建 LoadBalancer
服务。 例如,在集群中创建 Kubernetes LoadBalancer
服务时,将在集群外部的 VPC 中自动创建用于 VPC 的负载均衡器。 VPC 负载均衡器是多专区负载均衡器,通过在工作程序节点上自动打开的专用 NodePort
来路由应用程序的请求。 对于 VPC ALB,会自动将以 kube-<vpc-id>
形式命名的 安全组 附加到 ALB 实例。
连接到 VPC ALB 的 kube-<vpc-id>
安全组与用于与 Kubernetes 主节点通信的专用 VPE 网关的安全组相同。 请勿修改此安全组,因为这样做可能会导致集群与 Kubernetes 主节点之间的网络连接中断。 而是可以 从 VPC ALB 中除去安全组,并
将其替换为您创建和管理的安全组。
VPC 集群网络设置的示例场景
既然您已了解集群联网的基本知识,请查看一些示例场景,其中各种 VPC 集群网络设置可以满足您的工作负载需求。
场景:在 VPC 集群中运行面向因特网的应用程序工作负载
在此场景中,您将在 VPC 集群中运行可供来自因特网的请求访问的工作负载。 公共访问由安全组控制,以便最终用户可以访问您的应用程序,同时拒绝不必要的公共访问请求。 此外,您的员工还可以自动访问任何支持私有云服务终端的 IBM Cloud 服务。
工作程序到工作程序的通信
要实现此设置,可在要部署工作程序节点的每个专区中创建 VPC 子网。 要运行默认的 Red Hat OpenShift 组件,如网络控制台或 OperatorHub, 公共网关,这些子网是必需的。 然后,创建使用这些 VPC 子网的 VPC 集群。
工作程序与主节点的通信以及用户与主节点的通信
可以选择允许通过公用和专用网络或仅通过专用网络进行工作程序与主节点的通信以及用户与主节点的通信。
- 公共和私有云服务终端:工作节点和主节点之间的通信通过私有云服务终端在私有网络上建立。 默认情况下,所有由授权集群用户发起的主机呼叫都通过公共云服务终端进行路由。
- 仅限私有服务终端:通过私有云服务终端,从两个工作节点和集群用户到主节点的通信通过私有网络建立。 集群用户必须位于 VPC 网络中,或者通过 VPC VPN 连接进行连接。
工作程序与其他服务或网络的通信
如果您的应用程序工作负载需要其他 IBM Cloud 服务,您的工作节点可以自动、安全地与 IBM Cloud 服务通信,这些服务通过专用VPC网络支持私有云服务终端。
与在工作程序节点上运行的应用程序的外部通信
测试应用程序后,可以通过创建公共 Kubernetes LoadBalancer
服务或使用缺省公共 Ingress 应用程序负载均衡器 (ALB) 将其公开到因特网。 使用其中一个服务时在集群外部的 VPC 中自动创建的 VPC 负载均衡器会将流量路由到应用程序。 通过将自动应用于 VPC ALB 的 kube-<vpc-id>
安全组替换为您创建和管理的安全组,可以提高集群的安全性并控制到应用程序的公用网络流量。
应用于 ALB 时,安全组将控制允许哪些入站流量通过 ALB 到达集群。
将您的本地数据中心扩展到VPC集群
在此场景中,您将在 VPC 集群中运行工作负载。 但是,您希望这些工作负载仅可供内部部署数据中心内专用网络上的服务、数据库或其他资源访问。 集群工作负载可能需要访问支持通过专用网络进行通信的其他若干 IBM Cloud 服务。
工作程序到工作程序的通信
要实现此设置,可在要部署工作程序节点的每个专区中创建 VPC 子网。 要运行默认的 Red Hat OpenShift 组件,如网络控制台或 OperatorHub, 公共网关,这些子网是必需的。 然后,创建使用这些 VPC 子网的 VPC 集群。
请注意,在工作程序节点、pod 和服务的缺省范围与内部部署网络中的子网之间可能存在子网冲突。 创建VPC子网时,您可以选择 自定义地址前缀,然后使用这些子网创建集群。 此外,您可以在创建集群时,使用 ibmcloud oc cluster create
命令中的 --pod-subnet
和 --service-subnet
选项为 Pod 和服务指定自定义子网 CIDR。
工作程序与主节点的通信以及用户与主节点的通信
创建集群时,启用私有云服务终端仅允许通过私有网络进行工作节点到主节点以及用户到主节点的通信。 集群用户必须位于 VPC 网络中,或者通过 VPC VPN 连接进行连接。
工作程序与其他服务或网络的通信
要将集群与内部部署数据中心相连接,可以设置 VPC VPN 服务。 IBM Cloud VPC VPN 将整个 VPC 连接到内部部署数据中心。 如果您的应用程序工作负载需要其他支持私有云服务终端的 IBM Cloud 服务,您的工作节点可以通过私有VPC网络自动、安全地与这些服务进行通信。
与在工作程序节点上运行的应用程序的外部通信
测试应用程序后,可以通过创建专用 Kubernetes LoadBalancer
服务或使用缺省专用 Ingress 应用程序负载均衡器 (ALB) 将其公开到专用网络。 使用其中一个服务时在集群外部的 VPC 中自动创建的 VPC 负载均衡器会将流量路由到应用程序。 请注意,VPC 负载均衡器仅将应用程序公开到专用网络,以便任何连接到 VPC 子网的内部部署系统都可以访问该应用程序。 您可以通过修改集群的缺省 VPC 安全组来提高集群的安全性并控制公共流量应用程序。
安全组由定义工作程序节点所允许的入站流量的规则组成。
后续步骤
要继续规划流程,请了解如何通过决定必须配置的 加密级别 来保护群集中的敏感信息。 如果您已准备好开始设置网络,请继续 了解默认情况下的安全群集 VPC 网络。