设置双层或服务网状精简版拓扑的详细步骤
软件要求
Kubernetes 发行版 | Kubernetes 版本 | 容器网络接口 (CNI) | CPX 版本 | CIC 版本 | NetScaler ADM 版本 | NetScaler ADM 代理版本 |
---|---|---|---|---|---|---|
开源 | 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 群集的网络上注册代理。
要在 NetScaler ADM 中使用服务图形,请确保您具有:
-
Kubernetes 群集与 NetScaler CPX 作为代理。有关更多信息,请参阅 NetScaler Ingress Controller。
-
在 NetScaler ADM 上配置了 静态路由 以启用 NetScaler ADM 和 NetScaler CPX 之间的通信
-
从 GitHub 存储库下载了示例部署文件。
-
在 CPX YAML 文件中添加了必需的参数,以确保成功向 NetScaler ADM 注册 CPX。
-
在 NetScaler ADM 中添加了 Kubernetes 群集 。
-
部署了一个 示例微服务应用程序。
-
已启用 自动选择虚拟服务器 以许可虚拟服务器。
-
将 NetScaler ADM 代理的 Web 事务设置 更改为 全部 ,以获取 HTTP 事务。
-
更新了 Istream.conf 文件,并将 NetScaler ADM 代理的 TCP 设置更改为 全部 ,以获取 TCP 度量。
软件要求
Kubernetes 发行版 | Kubernetes 版本 | 容器网络接口 (CNI) | CPX 版本 | CIC 版本 | NetScaler ADM 版本 | NetScaler ADM 代理版本 |
---|---|---|---|---|---|---|
开源 | 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 群集的网络上注册代理。
要在 NetScaler ADM 中使用服务图形,请确保您具有:
-
Kubernetes 群集与 NetScaler CPX 作为代理。有关更多信息,请参阅 NetScaler Ingress Controller。
-
在 NetScaler ADM 上配置了 静态路由 以启用 NetScaler ADM 和 NetScaler CPX 之间的通信
-
从 GitHub 存储库下载了示例部署文件。
-
在 CPX YAML 文件中添加了必需的参数,以确保成功向 NetScaler ADM 注册 CPX。
-
在 NetScaler ADM 中添加了 Kubernetes 群集 。
-
部署了一个 示例微服务应用程序。
-
已启用 自动选择虚拟服务器 以许可虚拟服务器。
-
将 NetScaler ADM 代理的 Web 事务设置 更改为 全部 ,以获取 HTTP 事务。
-
更新了 Istream.conf 文件,并将 NetScaler ADM 代理的 TCP 设置更改为 全部 ,以获取 TCP 度量。
在 NetScaler ADM 中配置静态路由
在 Kubernetes 群集中,所有容器化的容器舱都使用覆盖网络。无法直接使用这些专用 IP 地址建立通信。要启用从 NetScaler ADM 到 Kubernetes 群集的通信,您必须在 NetScaler ADM 中配置静态路由。
注意
如果您使用的是本地代理,请确保在代理上配置静态路由。使用 SSH 客户端,登录 NetScaler ADM 代理并配置静态路由。
请考虑您的 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.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
-
使用
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
命令克隆主节点中的 git Hub 存储库。 -
要访问 YAML,请执行以下操作:
cd citrix-k8s-ingress-controller/example/servicegraph-demo/
在 CPX YAML 文件中添加参数
注意
如果您使用的是 CPX 58.x 或更高版本,则必须在注册到 ADM 代理时使用非 nsroot 密码。为确保安全性,NetScaler ADM 代理 61.x 或更高版本需要强制更改密码。如果 NetScaler ADM 代理已升级到 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 代理,则表示本地代理 IP 地址。
-
NS_MGMT_FINGER_PRINT — 指示 NetScaler ADM 中的 CPX 身份验证。要获取指纹,请执行以下操作:
-
在 NetScaler ADM 中,导航到“设置”>“管理”
-
在 系统配置下,单击 查看 ADM 指纹
注意:
如果已配置本地代理,请导航到 基础架构 > 实例 > 代理,选择代理,然后单击 查看指纹。
-
-
NS_HTTP_PORT — 表示用于通信的 HTTP 端口
-
NS_HTTPS_PORT — 表示用于通信的 HTTPS 端口
-
NS_MGMT_USER -表示用户名
-
NS_MGMT_PASS -表示密码。指定您选择的密码
-
LOGSTREAM_COLLECTOR_IP — 表示 NetScaler ADM 代理 IP 地址,必须启用 Logstream 协议才能将日志数据从 CPX 传输到 ADM
在 NetScaler ADM 中添加 VPX 或 SDX 或 MPX 或 BLX 实例
要在服务图中获取第 1 层 ADC 实例分析,您必须在 NetScaler ADM 中添加 VPX/SDX/MPX/BLX 实例并启用 Web Insight。
-
导航到 基础结构 > 实例 > NetScaler
-
单击 添加 选项以添加实例。有关更多信息,请参阅 在 NetScaler ADM 中添加实例
-
添加实例后,选择虚拟服务器并启用 Web Insight。有关详细信息,请参阅 管理许可并在虚拟服务器上启用分析
在 NetScaler ADM 中添加 Kubernetes 群集
要添加库伯内特斯群集,请执行以下操作:
-
使用管理员凭据登录到 NetScaler ADM。
-
导航到调配 > Kubernetes > 群集。 屏幕上将显示“群集”页面。
-
单击添加。
-
在“添加群集”页中,指定以下参数:
-
名称 -指定您选择的名称。
-
API 服务器 URL -您可以从 Kubernetes 主节点获取 API 服务器 URL 的详细信息。
-
在 Kubernetes 主节点上,运行命令
kubectl cluster-info
。 -
输入为 Kubernetes 主服务器的运行地址显示的 URL。
-
-
身份验证令牌 -指定身份验证令牌。需要身份验证令牌才能验证 Kubernetes 群集与 NetScaler ADM 之间通信的访问权限。要生成身份验证令牌,请执行以下操作:
在库贝内特斯主节点上:
-
使用以下 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 中添加的相同代理。
-
单击创建。
-
部署示例微服务应用程序
在主节点上:
-
运行
kubectl create -f namespace.yaml
以创建命名空间。 -
使用以下命令部署
hotdrink
微服务、入口和密钥:kubectl create -f team_hotdrink.yaml -n sg-demo
kubectl create -f hotdrink-secret.yaml -n sg-demo
在 ADM 中部署 CPX 并注册 CPX
-
运行
kubectl create -f rbac.yaml
以部署群集角色和群集绑定。 -
运行
kubectl create -f cpx.yaml -n sg-demo
以部署 CPX。
部署完成后,CPX 注册将自动完成。
为许可启用自动选择虚拟服务器
注意
确保您有足够的虚拟服务器许可证。有关详细信息,请参阅许可。
在 NetScaler ADM 中添加 Kubernetes 群集后,必须确保自动选择虚拟服务器进行许可。虚拟服务器必须获得许可才能在服务图中显示数据。要自动选择虚拟服务器,请执行以下操作:
-
导航到 Settings(设置)> Licensing & Analytics Configuration(许可和分析配置)。
-
在“虚拟服务器许可证摘要”下,启用 自动选择虚拟服务器 并 自动选择不可寻址的虚拟服务器。
启用 Web 事务和 TCP 事务设置
添加 Kubernetes 群集并启用自动选择虚拟服务器后,将 Web 事务设置和 TCP 事务设置更改为全部。
-
导航到“设置”>“分析设置”。
此时将显示“分析设置”页面。
-
单击启用分析功能。
-
在 Web 事务设置下,选择 全部。
-
在 TCP 事务设置下,选择 全部。
-
单击确定。
向微服务发送流量
接下来,您必须向微服务发送流量,以便在 NetScaler ADM 中填充服务图表。
-
运行
kubectl get svc -n sg-demo
以通过 NodePort 公开 CPX。 -
编辑 etc/host 文件并为
hotdrink.beverages.com
创建域 IP 条目现在,您可以使用
https://hotdrink.beverages.com