概述

可以在 Kubernetes 群集中部署 NetScaler CPX 以对群集中容器化的应用程序进行负载平衡。默认情况下,在 Kubernetes 群集中部署 NetScaler CPX 时,它将替换 Kubernetes 的提供基础负载平衡功能的 kube 代理。除负载平衡功能外,使用 NetScaler CPX 替换 kube 代理后,还可以使用 NetScaler Management and Analytics System (MAS) 执行以下操作:

  • 查看群集中的应用程序环境

  • 管理和监视群集中的 NetScaler CPX 实例

  • 使用 Stylebook 功能简化为应用程序管理复杂 NetScaler 配置的任务

有关 NetScaler MAS 的详细信息,请参阅 NetScaler Management and Analytics System 产品文档

在 Kubernetes 环境中,要对 Kubernetes 服务的 Ingress 流量进行负载平衡,需要 Ingress 资源和 Ingress Controller。Ingress 资源是指可以用来为您的 Kubernetes 资源配置负载平衡器的 Kubernetes 资源。负载平衡器通过提供服务的外部可访问 URL 来将服务公开给您的 Kubernetes 群集外部的客户端,并对传输到这些 URL 的流量进行负载平衡。

可以在 Kubernetes 环境中将 NetScaler ADC 实例(例如 NetScaler MPX 设备、NetScaler VPX 设备或 NetScaler CPX)用作 Ingress 负载平衡器,以对 Kubernetes 群集外部的客户端向您的 Kubernetes 服务发送的 Ingress 流量进行负载平衡。

Ingress Controller 将负载平衡器与 Kubernetes 相集成。此控制器通过 Kubernetes API 监视 Ingress 资源,并在任何服务因扩展、滚动更新或元数据更改发生了变化时更新负载平衡器的配置。NetScaler Management and Analytics System (MAS) 包括 Kubernetes 环境的 NetScaler Ingress Controller。使用 NetScaler ADC 实例的 NetScaler Ingress Controller,您可以在 Kubernetes 环境中处理 Ingress 流量。

NetScaler Ingress Controller 的工作原理

部署 Kubernetes 群集后,必须通过提供 NetScaler MAS 中的 Kubernetes 环境的详细信息将群集与 NetScaler MAS 相集成。NetScaler MAS 监视 Kubernetes 资源中的变更,例如服务、提供点和 Ingress 规则。

在 Kubernetes 群集中部署 NetScaler CPX 实例作为 Ingress 资源时,该实例会自动在 NetScaler MAS 中注册。在注册过程中,NetScaler MAS 会了解可以在其上访问 NetScaler CPX 实例的 NetScaler CPX 实例 IP 地址和端口,以使用 NITRO REST API 配置 NetScaler 特定的配置。

NetScaler MAS 中的 Stylebook 引擎处理 NetScaler MAS 从 Kubernetes 收集的所有信息,例如服务、提供点和 Ingress 规则。使用现有已置备的 Stylebook (com.citrix.adc.stylebooks/1.0/cs-lb-mon) 时,Stylebook 引擎将生成 NetScaler 配置(例如负载平衡所需的虚拟服务器、服务和服务组),并将配置应用到 NetScaler CPX Ingress 负载平衡器。有关 Stylebook 的详细信息,请参阅 Stylebook。

下图展示了 Kubernetes 环境,其中包括一个与 Kubernetes 群集中的 NetScaler CPX Ingress 资源相集成的 NetScaler Ingress Controller 以处理 Ingress 流量。

NetScaler Ingress Controller

在此示例中,部署的 NetScaler CPX 容器用于对通过虚拟 IP (VIP) 地址从群集外部传输到 Kubernetes 服务的流量进行负载平衡。NetScaler CPX 容器通过在组成服务 A 和 B 的 Kubernetes 提供点之间分发请求来对北南向流量进行负载平衡。

重要:api.example.com 的 DNS 配置配置为使用 NetScaler CPX 主机 IP 地址将流量发送到 NetScaler CPX 容器。在这种情况下,如果将多个 NetScaler CPX 容器配置为 Ingress 负载平衡器,请务必使用 DNS 方法在 NetScaler CPX 容器之间分发 Ingress 流量。

NetScaler MAS 管理 Kubernetes 群集中的 NetScaler 设备,并提供来自设备的大量分析以便进行深入探索和故障排除。它还允许您通过收集来自 NetScaler 设备的流量统计数据来获取应用程序性能和安全性的可见性。

NetScaler CPX 如何对 Kubernetes 环境中的东西向流量进行负载平衡

部署 Kubernetes 群集后,必须通过提供 NetScaler MAS 中的 Kubernetes 环境的详细信息将群集与 NetScaler MAS 相集成。NetScaler MAS 监视 Kubernetes 资源中的变更,例如服务、端点和 Ingress 规则。

在 Kubernetes 群集中部署 NetScaler CPX 实例时,该实例会自动在 NetScaler MAS 中注册。在注册过程中,NetScaler MAS 会了解可以在其上访问 NetScaler CPX 实例的 NetScaler CPX 实例 IP 地址和端口,以使用 NITRO REST API 对其进行配置。

NetScaler MAS 中的 Stylebook 引擎处理 NetScaler MAS 从 Kubernetes 收集的所有信息,例如服务、端点和 Ingress 规则。使用现有已置备的 Stylebook (com.citrix.adc.stylebooks/1.0/cs-lb-mon) 时,Stylebook 引擎将生成 NetScaler 特定的配置(例如负载平衡所需的虚拟服务器和服务组),并将配置应用到 NetScaler CPX 实例。有关 Stylebook 的详细信息,请参阅 Stylebook。

下图显示了 NetScaler CPX 如何对 Kubernetes 群集中的东西向流量进行负载平衡。

东西通信流

在此示例中,Kubernetes 群集的节点 1 和节点 2 中都包含前端服务和后端服务的实例。NetScaler CPX 实例部署在节点 1 和节点 2 中时,NetScaler CPX 实例将自动在 NetScaler MAS 中注册。必须通过在 NetScaler MAS 中配置 Kubernetes 群集详细信息来手动将 Kubernetes 群集与 NetScaler MAS 相集成。

客户端请求前端服务时,Ingress 资源将对两个节点上的前端服务的实例之间的请求进行负载平衡。前端服务的实例需要来自群集中的后端服务的信息时,会将请求定向到其节点中的 NetScaler CPX 实例。该 NetScaler CPX 实例将对群集中的后端服务之间的请求进行负载平衡,从而提供东西向通信流。