设置双层或精简服务网格拓扑的详细步骤
软件要求
| Kubernetes 分发版 | Kubernetes 版本 | 容器网络接口 (CNI) | CPX 版本 | CIC 版本 | NetScaler Console 版本 | NetScaler Agent 版本 |
|---|---|---|---|---|---|---|
| 开源 | v1.16.3 | Flannel | 13.0–41.28 | 1.5.25 | 13.0–47.22 | 13.0–47.22 |
开始之前
您可以使用以下场景查看服务图:
-
NetScaler Console 和 Kubernetes 集群位于同一网络上(例如,托管在 Citrix Hypervisor 上的 NetScaler Console 和 Kubernetes 集群)。
-
NetScaler Console 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个本地 Agent,并在托管 Kubernetes 集群的网络上注册该 Agent。
要在 NetScaler Console 中使用服务图,请确保您已具备:
-
将 NetScaler CPX 作为代理的 Kubernetes 集群。有关详细信息,请参阅 NetScaler Ingress Controller。
-
在 NetScaler Console 上配置了静态路由,以启用 NetScaler Console 和 NetScaler CPX 之间的通信。
-
从 GitHub 存储库下载了示例部署文件。
-
在 CPX YAML 文件中添加了所需参数,以确保 CPX 成功注册到 NetScaler Console。
-
在 NetScaler Console 中添加了 Kubernetes 集群。
-
部署了示例微服务应用程序。
-
启用了自动选择虚拟服务器以许可虚拟服务器。
-
将 Web 事务设置更改为所有,以便 NetScaler Agent 获取 HTTP 事务。
-
更新了 Istream.conf 文件,并将 TCP 设置更改为所有,以便 NetScaler Agent 获取 TCP 指标。
软件要求
| Kubernetes 分发版 | Kubernetes 版本 | 容器网络接口 (CNI) | CPX 版本 | CIC 版本 | NetScaler Console 版本 | NetScaler Agent 版本 |
|---|---|---|---|---|---|---|
| 开源 | v1.16.3 | Flannel | 13.0–41.28 | 1.5.25 | 13.0–47.22 | 13.0–47.22 |
开始之前
您可以使用以下场景查看服务图:
-
NetScaler Console 和 Kubernetes 集群位于同一网络上(例如,托管在 Citrix Hypervisor 上的 NetScaler Console 和 Kubernetes 集群)。
-
NetScaler Console 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个本地 Agent,并在托管 Kubernetes 集群的网络上注册该 Agent。
要在 NetScaler Console 中使用服务图,请确保您已具备:
-
将 NetScaler CPX 作为代理的 Kubernetes 集群。有关详细信息,请参阅 NetScaler Ingress Controller。
-
在 NetScaler Console 上配置了静态路由,以启用 NetScaler Console 和 NetScaler CPX 之间的通信。
-
从 GitHub 存储库下载了示例部署文件。
-
在 CPX YAML 文件中添加了所需参数,以确保 CPX 成功注册到 NetScaler Console。
-
在 NetScaler Console 中添加了 Kubernetes 集群。
-
部署了示例微服务应用程序。
-
启用了自动选择虚拟服务器以许可虚拟服务器。
-
将 Web 事务设置更改为所有,以便 NetScaler Agent 获取 HTTP 事务。
-
更新了 Istream.conf 文件,并将 TCP 设置更改为所有,以便 NetScaler Agent 获取 TCP 指标。
在 NetScaler Console 中配置静态路由
在 Kubernetes 集群内部,所有容器化 Pod 都使用覆盖网络。无法直接使用这些私有 IP 地址建立通信。要启用从 NetScaler Console 到 Kubernetes 集群的通信,您必须在 NetScaler Console 中配置静态路由。
注意
如果您使用的是本地 Agent,请确保在 Agent 上配置静态路由。使用 SSH 客户端登录到 NetScaler Agent 并配置静态路由。
假设您的 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}"
运行命令后,以下是示例输出:

-
使用 SSH 客户端登录到 NetScaler Console。
-
使用命令
route add -net <public IP address range> <Kubernetes IP address>配置静态路由。例如:
route add -net 192.168.0.0/24 101.xx.xx.112route add -net 192.168.1.0/24 101.xx.xx.111route add -net 192.168.2.0/24 101.xx.xx.110 -
使用
netstat -rn验证配置。
-
将这些路由命令附加到
/mpsconfig/svm.conf文件中。-
在 NetScaler Console 中,使用以下命令访问 svm.conf 文件:
vim /mpsconfig/svm.conf -
在 svm.conf 文件中添加静态路由。
例如,
route add -net 192.168.0.0/24 101.xx.xx.112。
-
从 GitHub 下载示例部署文件
-
使用命令 git clone
https://github.com/citrix/citrix-k8s-ingress-controller.git在主节点中克隆 GitHub 存储库。 -
要访问 YAML 文件:
cd citrix-k8s-ingress-controller/example/servicegraph-demo/
在 CPX YAML 文件中添加参数
注意
如果您使用的是 CPX 58.x 或更高版本,则在注册到 Agent 时必须使用非 nsroot 密码。为确保安全性,NetScaler Agent 61.x 或更高版本需要强制更改密码。如果您的 NetScaler Agent 已升级到 61.x 或最新版本,则必须确保使用 CPX 58.x 或更高版本的内部版本。
您必须在 cpx.yaml 文件中包含以下参数,以确保 CPX 注册到 NetScaler Console:
- 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"
<!--NeedCopy-->
-
NS_MGMT_SERVER – 指示 NetScaler Console IP 地址
注意
如果使用 Agent,则此参数指示 Agent IP 地址。
-
NS_MGMT_FINGER_PRINT – 指示 NetScaler Console 中 CPX 的身份验证。要获取指纹:
-
在 NetScaler Console 中,导航到 Settings > Administration(设置 > 管理)。
-
在 System Configurations(系统配置)下,单击 View ADM Fingerprint(查看 ADM 指纹)。

注意:
如果您已配置本地 Agent,请导航到 Infrastructure > Instances > Agents(基础结构 > 实例 > Agent),选择 Agent,然后单击 View Fingerprint(查看指纹)。

-
-
NS_HTTP_PORT – 指示用于通信的 HTTP 端口
-
NS_HTTPS_PORT – 指示用于通信的 HTTPS 端口
-
NS_MGMT_USER - 指示用户名
-
NS_MGMT_PASS - 指示密码。指定您选择的密码
-
LOGSTREAM_COLLECTOR_IP – 指示 NetScaler Agent IP 地址,其中必须启用 Logstream 协议才能将日志数据从 CPX 传输到 NetScaler Console
在 NetScaler Console 中添加 VPX、SDX、MPX 或 BLX 实例
要在服务图中获取第 1 层 NetScaler 实例分析,您必须在 NetScaler Console 中添加 VPX/SDX/MPX/BLX 实例并启用 Web Insight。
-
导航到 Infrastructure > Instances > NetScaler(基础结构 > 实例 > NetScaler)。
-
单击 Add(添加)选项以添加实例。有关详细信息,请参阅在 NetScaler Console 中添加实例。
-
添加实例后,选择虚拟服务器并启用 Web Insight。有关详细信息,请参阅管理许可并在虚拟服务器上启用分析。
在 NetScaler Console 中添加 Kubernetes 集群
要添加 Kubernetes 集群:
-
使用管理员凭据登录到 NetScaler Console。
-
导航到 Orchestration(编排)> Kubernetes > Cluster(集群)。 此时将显示“集群”页面。
-
单击 Add(添加)。
-
在 Add Cluster(添加集群)页面中,指定以下参数:
-
Name(名称)- 指定您选择的名称。
-
API Server URL(API 服务器 URL)- 您可以从 Kubernetes 主节点获取 API 服务器 URL 详细信息。
-
在 Kubernetes 主节点上,运行命令
kubectl cluster-info。
-
输入为 “Kubernetes master is running at.”(Kubernetes 主节点正在运行于)显示的 URL。
-
-
Authentication Token(身份验证令牌)- 指定身份验证令牌。身份验证令牌是验证 Kubernetes 集群和 NetScaler Console 之间通信访问所需的。要生成身份验证令牌:
在 Kubernetes 主节点上:
-
使用以下 YAML 创建服务帐户:
apiVersion: v1 kind: ServiceAccount metadata: name: <name> namespace: <namespace> <!--NeedCopy--> -
运行
kubectl create -f <yaml file>。服务帐户已创建。
-
运行
kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name>以将集群角色绑定到服务帐户。服务帐户现在具有集群范围的访问权限。
创建服务帐户时会自动生成令牌。
-
运行
kubectl describe sa <name>以查看令牌。 -
要获取密钥字符串,请运行
kubectl describe secret <token-name>。
-
-
从列表中选择 Agent。
注意
如果您使用的是本地 Agent,请确保选择您在 CPX YAML 中添加的同一 Agent。
-
单击 Create(创建)。

-
部署示例微服务应用程序
在主节点上:
-
运行
kubectl create -f namespace.yaml以创建命名空间。 -
使用以下命令部署
hotdrink微服务、入口和密钥:kubectl create -f team_hotdrink.yaml -n sg-demokubectl create -f hotdrink-secret.yaml -n sg-demo
部署 CPX 并在 NetScaler Console 中注册 CPX
-
运行
kubectl create -f rbac.yaml以部署集群角色和集群绑定。 -
运行
kubectl create -f cpx.yaml -n sg-demo以部署 CPX。
部署后,CPX 注册会自动完成。
启用自动选择虚拟服务器以进行许可
注意
确保您有足够的虚拟服务器许可证。有关详细信息,请参阅许可。
在 NetScaler Console 中添加 Kubernetes 集群后,您必须确保自动选择虚拟服务器以进行许可。虚拟服务器必须获得许可才能在服务图中显示数据。要自动选择虚拟服务器:
-
导航到 Settings > Licensing & Analytics Configuration(设置 > 许可和分析配置)。
-
在 Virtual Server License Summary(虚拟服务器许可证摘要)下,启用 Auto-select Virtual Servers(自动选择虚拟服务器)和 Auto-select non addressable Virtual Servers(自动选择不可寻址虚拟服务器)。

启用 Web 事务和 TCP 事务设置
添加 Kubernetes 集群并启用自动选择虚拟服务器后,将 Web Transaction Settings(Web 事务设置)和 TCP Transactions Settings(TCP 事务设置)更改为所有。
-
导航到 Settings > Analytics Settings(设置 > 分析设置)。
此时将显示“分析设置”页面。
-
单击 Enable Features for Analytics(启用分析功能)。
-
在 Web Transaction Settings(Web 事务设置)下,选择所有。
-
在 TCP Transactions Settings(TCP 事务设置)下,选择所有。

-
单击 OK(确定)。
将流量发送到微服务
接下来,您必须将流量发送到微服务,以使服务图在 NetScaler Console 中填充。
-
运行
kubectl get svc -n sg-demo以通过 NodePort 公开 CPX。
-
编辑 etc/host 文件并为
hotdrink.beverages.com创建域 IP 条目。您现在可以使用
https://hotdrink.beverages.com访问微服务。