设置双层或精简服务网格拓扑的详细步骤
软件要求
| Kubernetes 分发版 | Kubernetes 版本 | 容器网络接口 (CNI) | CPX 版本 | CIC 版本 | NetScaler ADM 版本 | NetScaler agent 版本 |
|---|---|---|---|---|---|---|
| 开源 | v1.16.3 | Flannel | 13.0–41.28 | 1.5.25 | 13.0–47.22 | 13.0–47.22 |
开始之前
您可以通过以下场景查看服务图:
-
NetScaler ADM 和 Kubernetes 集群位于同一网络上(例如,托管在 Citrix Hypervisor™ 上的 NetScaler ADM 和 Kubernetes 集群)。
-
NetScaler ADM 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个本地代理,并在托管 Kubernetes 集群的网络上注册该代理。
要在 NetScaler® ADM 中使用服务图,请确保您已完成以下操作:
-
将 NetScaler CPX 作为代理的 Kubernetes 集群。有关详细信息,请参阅 NetScaler Ingress Controller。
-
在 NetScaler ADM 上配置静态路由,以启用 NetScaler ADM 和 NetScaler CPX 之间的通信。
-
从 GitHub 存储库 下载了示例部署文件。
-
在 CPX YAML 文件 中添加了所需参数,以确保 CPX 成功注册到 NetScaler ADM。
-
在 NetScaler ADM 中添加了 Kubernetes 集群。
-
部署了示例微服务应用程序。
-
启用了自动选择虚拟服务器 以许可虚拟服务器。
-
将 Web 事务设置 更改为 All,以便 NetScaler agent 获取 HTTP 事务。
-
更新了 Istream.conf 文件,并将 TCP 设置更改为 All,以便 NetScaler agent 获取 TCP 指标。
软件要求
| Kubernetes 分发版 | Kubernetes 版本 | 容器网络接口 (CNI) | CPX 版本 | CIC 版本 | NetScaler ADM 版本 | NetScaler agent 版本 |
|---|---|---|---|---|---|---|
| 开源 | v1.16.3 | Flannel | 13.0–41.28 | 1.5.25 | 13.0–47.22 | 13.0–47.22 |
开始之前
您可以通过以下场景查看服务图:
-
NetScaler ADM 和 Kubernetes 集群位于同一网络上(例如,托管在 Citrix Hypervisor 上的 NetScaler ADM 和 Kubernetes 集群)。
-
NetScaler ADM 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个本地代理,并在托管 Kubernetes 集群的网络上注册该代理。
要在 NetScaler ADM 中使用服务图,请确保您已完成以下操作:
-
将 NetScaler CPX 作为代理的 Kubernetes 集群。有关详细信息,请参阅 NetScaler Ingress Controller。
-
在 NetScaler ADM 上配置静态路由,以启用 NetScaler ADM 和 NetScaler CPX 之间的通信。
-
从 GitHub 存储库 下载了示例部署文件。
-
在 CPX YAML 文件 中添加了所需参数,以确保 CPX 成功注册到 NetScaler ADM。
-
在 NetScaler ADM 中添加了 Kubernetes 集群。
-
部署了示例微服务应用程序。
-
启用了自动选择虚拟服务器 以许可虚拟服务器。
-
将 Web 事务设置 更改为 All,以便 NetScaler agent 获取 HTTP 事务。
-
更新了 Istream.conf 文件,并将 TCP 设置更改为 All,以便 NetScaler agent 获取 TCP 指标。
在 NetScaler ADM 中配置静态路由
在 Kubernetes 集群内部,所有容器化 Pod 都使用覆盖网络。无法直接使用这些私有 IP 地址建立通信。要启用从 NetScaler ADM 到 Kubernetes 集群的通信,您必须在 NetScaler ADM 中配置静态路由。
注意
如果您使用的是本地代理,请确保在代理上配置静态路由。使用 SSH 客户端登录到 NetScaler agent 并配置静态路由。
假设您的 Kubernetes 集群具有以下 IP 地址:
-
Kubernetes master – 101.xx.xx.112
-
Kubernetes worker 1 – 101.xx.xx.111
-
Kubernetes worker 2 – 101.xx.xx.110
在 Kubernetes master 上,运行以下命令以识别用于静态路由的 Pod 网络:
kubectl get nodes -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.podCIDR}{'\t'}{'gateway: '}{.status.addresses[0].address}{'\n'}{end}"
运行该命令后,以下是示例输出:

-
使用 SSH 客户端登录到 NetScaler ADM。
-
使用命令
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 ADM 中,使用以下命令访问 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在 master 节点中克隆 GitHub 存储库。 -
要访问 YAML 文件:
cd citrix-k8s-ingress-controller/example/servicegraph-demo/
在 CPX YAML 文件中添加参数
注意
如果您使用的是 CPX 58.x 或更高版本,则在注册到 ADM agent 时必须使用非 nsroot 密码。为确保安全性,NetScaler agent 61.x 或更高版本需要强制更改密码。如果您的 NetScaler agent 已升级到 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"
<!--NeedCopy-->
-
NS_MGMT_SERVER – 指示 NetScaler ADM IP 地址
注意
如果使用 ADM agent,则这指示本地代理 IP 地址。
-
NS_MGMT_FINGER_PRINT – 指示 NetScaler ADM 中 CPX 的身份验证。要获取指纹:
-
在 NetScaler ADM 中,导航到 Settings(设置)> Administration(管理)。
-
在 System Configurations(系统配置)下,单击 View ADM Fingerprint(查看 ADM 指纹)。

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

-
-
NS_HTTP_PORT – 指示用于通信的 HTTP 端口
-
NS_HTTPS_PORT – 指示用于通信的 HTTPS 端口
-
NS_MGMT_USER - 指示用户名
-
NS_MGMT_PASS - 指示密码。指定您选择的密码
-
LOGSTREAM_COLLECTOR_IP – 指示 NetScaler agent IP 地址,其中必须启用 Logstream 协议才能将日志数据从 CPX 传输到 ADM。
在 NetScaler ADM 中添加 VPX、SDX、MPX 或 BLX 实例
要在服务图中获取第 1 层 ADC 实例分析,您必须在 NetScaler ADM 中添加 VPX/SDX/MPX/BLX 实例并启用 Web Insight。
-
导航到 Infrastructure(基础结构)> Instances(实例)> NetScaler。
-
单击 Add(添加)选项以添加实例。有关详细信息,请参阅在 NetScaler ADM 中添加实例。
-
添加实例后,选择虚拟服务器并启用 Web Insight。有关详细信息,请参阅管理许可并在虚拟服务器上启用分析。
在 NetScaler ADM 中添加 Kubernetes 集群
要添加 Kubernetes 集群:
-
使用管理员凭据登录到 NetScaler ADM。
-
导航到 Orchestration(编排)> Kubernetes > Cluster(集群)。 此时将显示“Clusters(集群)”页面。
-
单击 Add(添加)。
-
在 Add Cluster(添加集群)页面中,指定以下参数:
-
Name(名称) - 指定您选择的名称。
-
API Server URL - 您可以从 Kubernetes Master 节点获取 API Server URL 详细信息。
-
在 Kubernetes master 节点上,运行命令
kubectl cluster-info。
-
输入为 “Kubernetes master is running at.” 显示的 URL。
-
-
Authentication Token(身份验证令牌) - 指定身份验证令牌。身份验证令牌是验证 Kubernetes 集群和 NetScaler ADM 之间通信访问所需的。要生成身份验证令牌:
在 Kubernetes master 节点上:
-
使用以下 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>。
-
-
从列表中选择代理。
注意
如果您使用的是本地代理,请确保选择您在 CPX YAML 中添加的同一代理。
-
单击 Create(创建)。

-
部署示例微服务应用程序
在 master 节点上:
-
运行
kubectl create -f namespace.yaml以创建命名空间。 -
使用以下命令部署
hotdrink微服务、入口和密钥:kubectl create -f team_hotdrink.yaml -n sg-demokubectl create -f hotdrink-secret.yaml -n sg-demo
部署 CPX 并在 ADM 中注册 CPX
-
运行
kubectl create -f rbac.yaml以部署集群角色和集群绑定。 -
运行
kubectl create -f cpx.yaml -n sg-demo以部署 CPX。
部署后,CPX 注册会自动完成。
启用虚拟服务器自动选择以进行许可
注意
确保您有足够的虚拟服务器许可证。有关详细信息,请参阅许可。
在 NetScaler ADM 中添加 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 事务设置)更改为 All。
-
导航到 Settings(设置)> Analytics Settings(分析设置)。
此时将显示“Analytics Settings(分析设置)”页面。
-
单击 Enable Features for Analytics(启用分析功能)。
-
在 Web Transaction Settings(Web 事务设置)下,选择 All。
-
在 TCP Transactions Settings(TCP 事务设置)下,选择 All。

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