设置双层或轻量级服务网格拓扑的详细步骤

Last published : Oct 06, 2026

软件要求

Kubernetes 发行版 Kubernetes 版本 容器网络接口 (CNI) CPX 版本 CIC 版本 NetScaler ADM 版本 NetScaler 代理版本
开源 v1.16.3 弗兰内尔 13.0–41.28 1.5.25 13.0–47.22 13.0–47.22

开始之前

您可以使用以下场景查看服务图:
  • NetScaler ADM 和 Kubernetes 集群位于同一网络上(例如,NetScaler ADM 和 Kubernetes 集群托管在 Citrix Hypervisor™ 上)。
  • NetScaler ADM 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个 本地代理 并在托管 Kubernetes 集群的网络上注册该代理。
要在 NetScaler® ADM 中使用服务图,请确保您已具备以下条件:

软件要求

Kubernetes 发行版 Kubernetes 版本 容器网络接口 (CNI) CPX 版本 CIC 版本 NetScaler ADM 版本 NetScaler 代理版本
开源 v1.16.3 福兰内尔 13.0–41.28 1.5.25 13.0–47.22 13.0–47.22

开始之前

您可以使用以下场景查看服务图:
  • NetScaler ADM 和 Kubernetes 集群位于同一网络上(例如,NetScaler ADM 和 Kubernetes 集群托管在 Citrix Hypervisor 上)。
  • NetScaler ADM 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个 本地代理 并在托管 Kubernetes 集群的网络上注册该代理。
要在 NetScaler ADM 中使用服务图,请确保您已具备以下条件:

在 NetScaler ADM 中配置静态路由

在 Kubernetes 集群内部,所有容器化 Pod 都使用覆盖网络。无法直接使用这些私有 IP 地址建立通信。要启用从 NetScaler ADM 到 Kubernetes 集群的通信,您必须在 NetScaler ADM 中配置静态路由。
注意
如果您使用的是本地代理,请确保在代理上配置静态路由。使用 SSH 客户端登录到 NetScaler 代理并配置静态路由。
假设您的 Kubernetes 集群具有以下 IP 地址:
  • Kubernetes 主节点 – 101.xx.xx.112
  • Kubernetes 工作节点 1 – 101.xx.xx.111
  • Kubernetes 工作节点 2 – 101.xx.xx.110
在 Kubernetes 主节点上,运行以下命令以识别用于静态路由的 Pod 网络:
kubectl get nodes -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.podCIDR}{'\t'}{'gateway: '}{.status.addresses[0].address}{'\n'}{end}"
以下是运行命令后的示例输出:
示例命令
  1. 使用 SSH 客户端登录到 NetScaler ADM
  2. 使用命令 route add -net <public IP address range> <Kubernetes IP address> 配置静态路由
    例如:
    route add -net 192.168.0.0/24 101.xx.xx.112
    route add -net 192.168.1.0/24 101.xx.xx.111
    route add -net 192.168.2.0/24 101.xx.xx.110
  3. 使用 netstat -rn 验证配置
    静态路由
  4. 将这些路由命令附加到 /mpsconfig/svm.conf 文件中。
    1. 在 NetScaler ADM 中,使用以下命令访问 svm.conf 文件:
      vim /mpsconfig/svm.conf
    2. 在 svm.conf 文件中添加静态路由。
      例如,route add -net 192.168.0.0/24 101.xx.xx.112。

从 GitHub 下载示例部署文件

  1. 使用命令 git clone https://github.com/citrix/citrix-k8s-ingress-controller.git 在主节点中克隆 GitHub 存储库。
  2. 要访问 YAML 文件:
    cd citrix-k8s-ingress-controller/example/servicegraph-demo/

在 CPX YAML 文件中添加参数

注意
如果您使用的是 CPX 58.x 或更高版本,则在注册到 ADM 代理时必须使用非 nsroot 密码。为确保安全性,NetScaler 代理 61.x 或更高版本需要强制更改密码。如果您的 NetScaler 代理已升级到 61.x 或最新版本,则必须确保使用 CPX 58.x 或更高版本的构建。
您必须在 cpx.yaml 文件中包含以下参数,以确保 CPX 注册到 NetScaler ADM:
- name: "NS_MGMT_SERVER"
  value: "xx.xx.xx.xx"
- name: "NS_MGMT_FINGER_PRINT"
  value: "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
- name: "NS_HTTP_PORT"
  value: "9080"
- name: "NS_HTTPS_PORT"
  value: 9443"
- name: "NS_MGMT_USER"
  value: "nsroot"
- name: "NS_MGMT_PASS"
  value: <your password>
- name: "LOGSTREAM_COLLECTOR_IP"
  value: "xx.xx.xx.xx"
  • NS_MGMT_SERVER – 指示 NetScaler ADM IP 地址
    注意
    如果使用 ADM 代理,则这表示本地代理 IP 地址。
  • NS_MGMT_FINGER_PRINT – 指示 NetScaler ADM 中 CPX 的身份验证。要获取指纹:
    1. 在 NetScaler ADM 中,导航到 Settings > Administration
    2. 在 系统配置 下,单击 查看 ADM 指纹
      指纹
      注意:
      如果您已配置本地代理,请导航到 Infrastructure > Instances > Agents,选择代理,然后单击 View Fingerprint。
      指纹代理
  • NS_HTTP_PORT – 指示用于通信的 HTTP 端口
  • NS_HTTPS_PORT – 指示用于通信的 HTTPS 端口
  • NS_MGMT_USER - 指示用户名
  • NS_MGMT_PASS - 指示密码。指定您选择的密码
  • LOGSTREAM_COLLECTOR_IP – 指示 NetScaler 代理 IP 地址,其中必须启用 Logstream 协议才能将日志数据从 CPX 传输到 ADM

在 NetScaler ADM 中添加 VPX、SDX、MPX 或 BLX 实例

要在服务图中获取第 1 层 ADC 实例分析,您必须在 NetScaler ADM 中添加 VPX/SDX/MPX/BLX 实例并启用 Web Insight。
  1. 导航到 基础设施 > 实例 > NetScaler
  2. 单击“添加”选项以添加实例。有关详细信息,请参阅 在 NetScaler ADM 中添加实例
  3. 添加实例后,选择虚拟服务器并启用 Web Insight。有关详细信息,请参阅 管理许可证并在虚拟服务器上启用分析

在 NetScaler ADM 中添加 Kubernetes 集群

要添加 Kubernetes 集群:
  1. 使用管理员凭据登录到 NetScaler ADM。
  2. 导航到 Orchestration > Kubernetes > Cluster。 此时将显示“集群”页面。
  3. 单击“添加”。
  4. 在“添加集群”页面中,指定以下参数:
    1. 名称 - 指定一个您选择的名称。
    2. API 服务器 URL - 您可以从 Kubernetes 主节点获取 API 服务器 URL 详细信息。
      1. 在 Kubernetes 主节点上,运行命令 kubectl cluster-info。
        API 服务器 URL
      2. 输入显示为 “Kubernetes master is running at.” 的 URL。
    3. 身份验证令牌 - 指定身份验证令牌。身份验证令牌用于验证 Kubernetes 集群与 NetScaler ADM 之间通信的访问权限。要生成身份验证令牌:
      在 Kubernetes 主节点上:
      1. 使用以下 YAML 创建服务帐户:
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: <name>
          namespace: <namespace>
      2. 运行 kubectl create -f <yaml file>。
        服务帐户已创建。
      3. 运行 kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name> 以将集群角色绑定到服务帐户。
        服务帐户现在具有集群范围的访问权限。
        创建服务帐户时会自动生成一个令牌。
      4. 运行 kubectl describe sa <name> 以查看令牌。
      5. 要获取密钥字符串,请运行 kubectl describe secret <token-name>。
        生成令牌
    4. 从列表中选择代理。
      注意
      如果您使用的是本地代理,请确保选择您在 CPX YAML 中添加的同一代理。
    5. 单击 创建。
      添加集群

部署示例微服务应用程序

在主节点上:
  1. 运行 kubectl create -f namespace.yaml 以创建命名空间。
  2. 使用以下命令部署 hotdrink 微服务、入口和密钥:
    kubectl create -f team_hotdrink.yaml -n sg-demo
    kubectl create -f hotdrink-secret.yaml -n sg-demo

部署 CPX 并在 ADM 中注册 CPX

  1. 运行 kubectl create -f rbac.yaml 以部署集群角色和集群绑定。
  2. 运行 kubectl create -f cpx.yaml -n sg-demo 以部署 CPX。
部署后,CPX 注册会自动完成。

启用自动选择虚拟服务器进行许可

注意
确保您有足够的虚拟服务器许可证。有关更多信息,请参阅许可
在 NetScaler ADM 中添加 Kubernetes 集群后,您必须确保自动选择虚拟服务器进行许可。虚拟服务器必须获得许可才能在服务图表中显示数据。要自动选择虚拟服务器:
  1. 导航到 设置 > 许可与分析配置。
  2. 在 虚拟服务器许可证摘要 下,启用 自动选择虚拟服务器 和 自动选择不可寻址虚拟服务器。
    自动选择虚拟服务器

启用 Web 事务和 TCP 事务设置

添加 Kubernetes 集群并启用自动选择虚拟服务器后,将 Web 事务设置 和 TCP 事务设置 更改为 所有。
  1. 导航到 设置 > 分析设置。
    显示 分析设置 页面。
  2. 单击 为分析启用功能。
  3. 在 Web 事务设置 下,选择 所有。
  4. 在 TCP 事务设置 下,选择 所有。
    TCP
  5. 单击确定。

将流量发送到微服务

接下来,您必须将流量发送到微服务,以在 NetScaler ADM 中填充服务图。
  1. 运行 kubectl get svc -n sg-demo 以通过 NodePort 暴露 CPX。
    NodePort
  2. 编辑 etc/host 文件,并为 hotdrink.beverages.com 创建一个域 IP 条目。
    您现在可以使用 https://hotdrink.beverages.com 访问微服务。