了解经典集群联网
创建经典集群时,必须选择联网设置,以便特定集群组件可以相互通信,并且能与集群外部的网络或服务进行通信。
- 工作程序到工作程序的通信:所有工作程序节点都必须能够在专用网络上相互通信。 通常,必须允许跨多个私有VLAN进行通信,以便位于不同VLAN和不同区域的工作人员能够相互连接。
- 工作节点与主节点之间的通信以及用户与主节点之间的通信:您的工作节点和经授权的集群用户可以通过 TLS 在公共网络上,或通过私有云服务端点在私有网络上,与 Kubernetes 主节点进行安全通信。
- 工作程序与其他 IBM Cloud 服务或内部部署网络的通信:允许工作程序节点安全地与其他 IBM Cloud 服务(例如,IBM Cloud® Container Registry)以及与内部部署网络进行通信。
- 与在工作程序节点上运行的应用程序的外部通信:允许向集群发出公共或专用请求,以及从集群向公共端点发出请求。
工作程序与工作程序的通信:经典 VLAN 和子网
创建经典集群时,集群的工作程序节点会自动连接到专用 VLAN,并且可以选择连接到公用 VLAN。 VLAN 会将一组工作程序节点和 pod 视为连接到同一物理连线那样进行配置,并为工作程序之间的连接提供通道。
无法创建仅连接到私有VLAN的经典 Red Hat OpenShift on IBM Cloud 集群。 工作程序节点必须同时连接到公用和专用 VLAN。
工作程序节点的 VLAN 连接
所有工作节点都必须连接到一个私有VLAN,以便每个工作节点都能与其他工作节点进行信息收发。 专用 VLAN 提供专用子网,用于将专用 IP 地址分配给工作程序节点和专用应用程序服务。 可以创建具有同时连接到公用 VLAN 的工作程序节点的集群。 公用 VLAN 提供公用子网,用于将公共 IP 地址分配给工作程序节点和公共应用程序服务。 不过,如果您需要从公共网络接口对应用进行安全防护,有多种方案可用于保障集群安全,例如创建 Calico 网络策略,或将外部网络工作负载隔离到 边缘工作节点上。
当您首次在某个区域中创建集群时,系统会自动在您的 IBM Cloud 基础设施账户中为您配置该区域内的一个公共VLAN和一个私有VLAN。 如果指定工作程序节点必须仅连接到专用 VLAN,那么将自动供应该专区中的专用 VLAN。 对于在该专区中创建的每个后续集群,可以指定要使用的 VLAN 对。 可以复用为您创建的相同公用和专用 VLAN,因为多个集群可以共享 VLAN。
有关 VLAN、子网和 IP 地址的更多信息,请参阅 IBM Cloud Kubernetes Service 中的联网概述。
是否需要使用定制子网来创建集群? 请查看使用现有子网创建集群。
子网和 VLAN 之间的工作程序节点通信
在某些情况下,必须允许集群中的组件跨多个私有VLAN进行通信。 例如,如果您想创建一个多区域集群,或者一个集群包含多个 VLAN,又或者同一个 VLAN 上存在多个子网,那么位于同一 VLAN 中不同子网或不同 VLAN 中的工作节点将无法自动相互通信。 您必须为 IBM Cloud 基础架构帐户启用虚拟路由和转发 (VRF) 或 VLAN 生成。
- 虚拟路由和转发 (VRF):VRF 支持基础架构帐户中的所有专用 VLAN 和子网相互通信。 此外,必须启用 VRF,才能让您的员工和管理员通过私有云服务端点进行通信,并与支持私有云服务端点的其他 IBM Cloud 实例进行通信。 要检查是否已启用 VRF,请使用
ibmcloud account show命令。 要启用 VRF,请运行ibmcloud account update --service-endpoint-enable true。 此命令输出将提示您打开支持案例,以便为帐户启用 VRF 和服务端点。 VRF 会取消您账户中的 VLAN 跨域选项,因为所有 VLAN 均可相互通信。 启用 VRF 后,任何连接到同一 IBM Cloud 帐户中的任何专用 VLAN 的系统都可以与集群工作程序节点进行通信。 您可以通过应用 Calico 专用网络策略,将集群与专用网络上的其他系统相隔离。 - VLAN 跨域:如果您选择启用 VLAN 跨域而非 VRF,则无法启用私有云服务端点。 当无法或不希望启用 VRF 时,请启用 VLAN 跨接功能,例如当不需要在私有网络上访问主服务器,或者使用网关设备通过公共 VLAN 访问主服务器时。 请注意,例如,如果您已有网关设备,随后又添加了一个集群,那么为该集群分配的新便携子网虽然未在网关设备上进行配置,但通过VLAN扩展功能,这些子网之间仍可实现路由。
工作程序与主节点的通信以及用户与主节点的通信:服务端点
必须设置通信信道,以便工作程序节点可以与 Kubernetes 主节点建立连接。 您可以通过仅启用公有云服务端点、同时启用公有云和私有云服务端点,或仅启用私有云服务端点,来允许工作节点与 Kubernetes 主节点进行通信。
为了确保通过公有云和私有云服务端点进行的通信安全,在创建集群时,IBM Cloud Kubernetes Service 会自动在 Kubernetes 主节点与工作节点之间建立 Konnectivity 连接。 工作节点通过 TLS 证书与主节点进行安全通信,而主节点则通过VPN连接与工作节点进行通信。
仅公共服务端点
如果您不愿或无法为您的账户启用 VRF,您的工作节点可通过公共云服务端点,经由公共 VLAN 自动连接到 Kubernetes 主节点。
- 工作节点与主节点之间的通信是通过公有云服务端点,在公有网络上安全地建立的。
- 只有获得授权的集群用户才能通过公共云服务端点公开访问主节点。 例如,集群用户可以安全地通过因特网访问 Kubernetes 主节点,以运行
kubectl命令。 - 您可以选择使用 基于上下文的限制 来确保对群集公共和专用服务端点的访问安全。
公有云和私有云服务端点
若要让集群用户能够公开或私下访问您的主节点,您可以启用公共和私有云服务端点。 IBM Cloud 帐户中需要 VRF,因此必须为帐户启用服务端点。 要启用 VRF 和服务端点,请运行 ibmcloud account update --service-endpoint-enable true。
- 如果工作节点连接到公共 VLAN 和私有 VLAN,则工作节点与主节点之间的通信既可通过私有云服务端点在私有网络上建立,也可通过公共云服务端点在公共网络上建立。 通过将工作程序与主节点之间的流量一半通过公共端点路由,一半通过专用端点路由,可保护主节点到工作程序的通信不受公共或专用网络潜在中断的影响。 如果工作节点仅连接到私有VLAN,则工作节点与主节点之间的通信仅通过私有云服务端点在私有网络上建立。
- 授权的集群用户可通过公共云服务端点公开访问主节点。 如果授权的集群用户位于您的 IBM Cloud 私有网络中,或者通过VPN连接或 IBM Cloud Direct Link 连接到该私有网络,则可通过私有云服务端点私下访问主节点。 请注意,您必须 通过私有负载均衡器公开主节点端点,以便用户能够通过 VPN 或 IBM Cloud Direct Link 连接访问主节点。
- 您可以选择使用 基于上下文的限制 来确保对群集公共和专用服务端点的访问安全。
仅专用服务端点
要使主节点仅可专用访问,您可以启用私有云服务端点。 IBM Cloud 帐户中需要 VRF,因此必须为帐户启用服务端点。 要启用 VRF 和服务端点,请运行 ibmcloud account update --service-endpoint-enable true。 请注意,使用私有云服务端点不会产生任何计费或计量带宽费用。
- 工作节点与主节点之间的通信是通过私有云服务端点,在私有网络上建立的。
- 如果授权集群用户位于 IBM Cloud 专用网络中,或者通过 VPN 连接或 DirectLink 与专用网络连接,那么主节点可供专用访问。 请注意,您必须通过专用负载均衡器公开主节点端点,以便用户可以通过 VPN 或 DirectLink 连接访问主节点。
- 您可以选择使用 基于上下文的限制 来确保对群集公共和专用服务端点的访问安全。
工作程序与其他 IBM Cloud 服务或内部部署网络的通信
允许工作程序节点安全地与其他 IBM Cloud 服务以及与内部部署网络进行通信。
通过专用或公用网络与其他 IBM Cloud 服务进行通信
您的工作节点可以通过您的 IBM Cloud 基础设施私有网络,自动且安全地与其他 支持私有云服务端点的 IBM Cloud 服务 (例如 IBM Cloud® Container Registry )进行通信。 如果某个 IBM Cloud 服务不支持私有云服务端点,则您的工作节点必须连接到公共VLAN,以便它们能够通过公共网络与这些服务进行安全通信。
如果您使用 Calico 策略或网关设备来控制工作节点的公有网络或私有网络,则必须允许访问支持公有云服务端点的服务的公有IP地址,并可选地允许访问支持私有云服务端点的服务的私有IP地址。
IBM Cloud® Direct Link,用于通过专用网络与内部部署数据中心内的资源进行通信
要将集群与本地数据中心 (例如,使用 IBM Cloud Private) 连接,可以设置 IBM Cloud Direct Link。 借助 IBM Cloud Direct Link,您可以在远程网络环境与 IBM Cloud Kubernetes Service 之间建立直接的私有连接,而无需通过公共互联网进行路由。
用于通过公共网络与本地数据中心中的资源进行通信的VPN连接
-
连接到公共和专用 VLAN 的工作节点:在集群中设置 VPN 服务,通过互联网在集群和内部网络之间提供安全的端到端通信通道。 有几种开源方案,请参阅 经典 VPN 连接。
-
仅连接到私有VLAN的工作节点:配置一个 网关设备上的 VPN 端点,例如 Virtual Router Appliance (Vyatta)。
如果计划将集群连接到本地网络,请查看以下有用信息:
- 您可能与 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子网范围,因为它们是为 IBM Cloud Kubernetes Service 控制平面功能保留的。
与在工作程序节点上运行的应用程序的外部通信
允许从集群外部向在工作程序节点上运行的应用程序发出公共或专用流量请求。
到集群应用程序的专用流量
在集群中部署应用程序时,您可能希望仅允许与集群位于同一私有网络中的用户和服务访问该应用程序。 专用负载均衡非常适用于使应用程序可供集群外部的请求使用,而无需向一般公众公开应用程序。 还可以使用专用负载均衡来测试访问,请求路由以及对应用程序进行其他配置后,再使用公用网络服务向公众公开应用程序。 要允许从集群外部向应用程序发出专用流量请求,可以创建专用 Kubernetes 联网服务,例如专用 NodePort、NLB 和 Ingress ALB。 然后可以使用 Calico DNAT 前策略来阻止流至专用联网服务的公共 NodePort 的流量。 有关更多信息,请参阅规划专用外部负载均衡。
到集群应用程序的公共流量
若要使您的应用可通过公共互联网从外部访问,您可以创建公共的 NodePorts, 网络负载均衡器(NLB)和Ingress应用负载均衡器(ALB)。 公用联网服务通过向应用程序提供公共 IP 地址和公共 URL(是否提供公共 URL 取决于服务)来连接到此公用网络接口。 应用程序以公共方式公开时,具有公共服务 IP 地址或为应用程序设置的 URL 的任何人都可以向应用程序发送请求。 然后,您可以使用 Calico 的预DNAT策略来控制流向公共网络服务的流量,例如仅允许来自特定源IP地址或CIDR的流量,并阻止所有其他流量。 有关更多信息,请参阅规划公共外部负载均衡。
- 为了增强安全性,您可以将网络工作负载隔离到边缘工作节点上。
- 边缘工作程序节点通过减少允许外部访问的连接到公用 VLAN 的工作程序节点,并隔离联网工作负载,可以提高集群的安全性。 将工作程序节点标注为边缘节点时,NLB 和 ALB pod 会仅部署到这些指定的工作程序节点。 此外,为了防止其他工作负载在边缘节点上运行,您可以 为边缘节点添加污点。 然后,可以将公用和专用 NLB 和 ALB 部署到边缘节点。 例如,如果工作程序节点仅连接到专用 VLAN,但您需要允许对集群中的应用程序进行公共访问,那么可以创建边缘工作程序池,其中边缘节点连接到公用和专用 VLAN。 可以将公共 NLB 和 ALB 部署到这些边缘节点,以确保只有这些工作程序可处理公共连接。
场景:在经典集群中运行面向互联网的应用程序工作负载
在此场景中,您希望在经典集群中运行的工作负载可供来自因特网的请求访问,以便最终用户可以访问应用程序。 您希望使用的选项是在集群中隔离公共访问,并控制允许向集群发出哪些公共请求。 此外,工作程序对要连接到集群的任何 IBM Cloud 服务都具有自动访问权。
具有面向因特网的工作负载的经典集群中的工作程序到工作程序通信
要实现此设置,请通过将工作程序节点连接到公用和专用 VLAN 来创建集群。
如果您在创建集群时同时配置了公共 VLAN 和私有 VLAN,则之后无法从该集群中移除所有公共 VLAN。 从集群除去所有公用 VLAN 将导致多个集群组件停止工作。 请改为创建仅连接到专用 VLAN 的新工作程序池。
具有面向因特网的工作负载的经典集群中的工作程序到主节点和用户到主节点通信
可以选择允许通过公用和专用网络或仅通过公用网络进行工作程序与主节点的通信以及用户与主节点的通信。
- 公有云和私有云服务端点:您的账户必须已启用 VRF,并且已启用服务端点功能。 工作节点与主节点之间的通信,既可通过私有云服务端点在私有网络上建立,也可通过公有云服务端点在公有网络上建立。 授权的集群用户可通过公共云服务端点公开访问主节点。
- 公共服务端点:如果您不愿或无法为您的账户启用 VRF,您的工作节点和授权的集群用户可以通过公共云服务端点,经由公共网络自动连接到 Kubernetes 主节点。
与具有面向因特网的工作负载的其他服务或网络的工作程序通信
您的工作节点可以通过 IBM Cloud 基础设施的私有网络,自动且安全地与其他支持私有云服务端点的 IBM Cloud 服务进行通信。 如果某个 IBM Cloud 服务不支持私有云服务端点,则工作进程可以通过公共网络与该服务进行安全通信。 可以将 Calico 网络策略用于公用网络或专用网络隔离,以锁定工作程序节点的公共或专用接口。 您可能需要允许访问要在这些 Calico 隔离策略中使用的服务的公共和专用 IP 地址。
如果您的工作节点需要访问 IBM Cloud 账户之外的专用网络服务,请参阅 设置专用网络连接
与在处理面向互联网工作负载的工作节点上运行的应用程序进行外部通信
要将集群中的应用程序公开到因特网,可以创建公共网络负载均衡器 (NLB) 或 Ingress 应用程序负载均衡器 (ALB) 服务。 通过创建标注为边缘节点的工作程序节点的池,可以提高集群的安全性。 公用网络服务的 pod 会部署到边缘节点,以便将外部流量工作负载隔离到集群中的仅少数几个工作程序。 您可以通过创建 Calico 预DNAT策略(例如白名单和黑名单策略),进一步控制流向托管您应用程序的网络服务的公共流量。
方案: 允许与网关设备进行有限的公共连接
在此场景中,您希望在经典集群中运行的工作负载可供内部部署数据中心内的服务、数据库或其他资源访问。 但是,您可能需要提供对集群的受限公共访问权,并且希望确保在集群中控制和隔离任何公共访问。 例如,您可能需要让员工访问一个 IBM Cloud 服务,该服务不支持私有云服务端点,必须通过公共网络进行访问。 或者,您可能需要为在您的集群中运行的某个应用程序提供有限的公共访问权限。 要实现此集群配置,您可以将网关设备(例如 Virtual Router Appliance (Vyatta))配置为公共网关和防火墙。
与网关设备的工作程序到工作程序通信,工作程序到主节点通信和用户到主节点通信
如果您仅在私有 VLAN 上部署了工作节点,且不希望或无法为您的账户启用 VRF,则必须配置一台网关设备,以便通过公共网络在工作节点与主节点之间建立网络连接。 例如,您可以选择设置 Virtual Router Appliance。
可以使用定制网络策略来设置网关设备,以便为集群提供专用网络安全性,检测网络侵入并进行补救。 在公用网络上设置防火墙时,必须为每个区域打开必需的端口和专用 IP 地址,以便主节点和工作程序节点可以通信。 如果还为专用网络配置了此防火墙,那么还必须打开必需的端口和专用 IP 地址,以允许工作程序节点之间的通信,并且使集群通过专用网络访问基础架构资源。 此外,还必须为帐户启用 VLAN 生成,以便子网可以在同一 VLAN 上以及不同 VLAN 之间进行路由。
与网关设备的其他服务或网络的工作程序通信
要将您的工作站节点和应用程序安全地连接到内部网络或 IBM Cloud 以外的服务,请参阅 设置专用网络连接
工作程序节点可以通过网关设备与其他 IBM Cloud 服务和 IBM Cloud 外部的公共服务安全地进行通信。 可以将防火墙配置为仅允许访问要使用的服务的公共和专用 IP 地址。
与使用网关设备在工作程序节点上运行的应用程序的外部通信
要提供对集群中应用程序的专用访问权,可以创建专用网络负载均衡器 (NLB) 或 Ingress 应用程序负载均衡器 (ALB),以仅将应用程序公开到专用网络。 如果需要提供对集群中应用程序的受限公共访问权,那么可以创建公共 NLB 或 ALB 来公开应用程序。 由于所有流量都流经网关设备防火墙,因此可以通过在防火墙中打开服务的端口和 IP 地址来允许流至用于公开应用程序的网络服务的入站流量,以控制流至这些服务的公共和专用流量。
场景:将内部部署数据中心扩展到经典集群
在此场景中,您希望在经典集群中运行工作负载。 但是,您希望这些工作负载仅可供内部部署数据中心内的服务、数据库或其他资源(例如,IBM Cloud Private)访问。 集群工作负载可能需要访问支持通过专用网络进行通信的其他若干 IBM Cloud 服务,例如 IBM Cloud Object Storage。
专用集群的工作程序到工作程序通信
要实现此设置,可通过将工作程序节点仅连接到专用 VLAN 来创建集群。 若要仅通过私有云服务端点在私有网络上实现集群主节点与工作节点之间的连接,您的账户必须已启用 VRF 功能,并已启用服务端点功能。 由于启用了 VRF 时专用网络上的任何资源都可看到集群,因此可以通过应用 Calico 专用网络策略,将集群与专用网络上的其他系统相隔离。
请注意,在工作程序节点、pod 和服务的缺省范围与内部部署网络中的子网之间可能存在子网冲突。 通过添加 --no-subnet 选项,您可以不使用 IBM 提供的子网来创建集群。 创建集群后,可以向集群添加定制子网。 此外,在创建集群时,您可以通过在 ibmcloud ks cluster
create 命令中使用 --pod-subnet 和 --service-subnet 选项,为 Pod 和服务指定自定义子网 CIDR。
专用集群的工作程序到主节点通信和用户到主节点通信
如果授权的集群用户位于您的 IBM Cloud 私有网络中,或者通过 经典 VPN 连接 等方式连接到该私有网络,则可通过私有云服务端点访问 Kubernetes 主节点,或 IBM Cloud Direct Link。 但是,通过私有云服务端点与
Kubernetes 主服务器进行通信时,必须经过 166.X.X.X IP地址范围,而该范围无法通过经典VPN连接或 IBM Cloud Direct Link 进行路由。 您可以使用私有网络负载均衡器(NLB),向集群用户公开主节点的私有云服务端点。 私有 NLB 将主节点的私有云服务端点以内部 10.X.X.X IP 地址范围的形式对外暴露,用户可通过 VPN 或 IBM Cloud Direct Link 连接访问该端点。
如果您仅启用了私有云服务端点,则可以使用 Kubernetes 仪表板,或临时启用公有云服务端点来创建私有 NLB。
与专用集群的其他服务或网络的工作程序通信
您的工作节点可以通过您的 IBM Cloud 基础设施私有网络,自动且安全地与其他支持私有云服务端点的 IBM Cloud 服务(例如 IBM Cloud® Container Registry )进行通信。 例如,IBM Cloudant 所有标准套餐实例的专用硬件环境均支持私有云服务端点。 如果某个 IBM Cloud 服务不支持私有云服务端点,则您的集群将无法访问该服务。
与私有集群中运行在工作节点上的应用程序进行外部通信
要提供对集群中应用程序的专用访问权,可以创建专用网络负载均衡器 (NLB) 或 Ingress 应用程序负载均衡器 (ALB)。 这些 Kubernetes 网络服务仅将应用程序公开到专用网络,以便连接到该 NLB IP 所在子网的任何内部部署系统都可以访问应用程序。
后续步骤
要继续规划流程,请了解如何通过决定必须配置的 加密级别 来保护群集中的敏感信息。 如果你已经准备好开始设置网络,请继续 使用Calico网络策略来控制 Classic 集群上的流量。