设置双层或服务网状精简版拓扑的详细步骤

软件要求

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 发行版 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 中使用服务图形,请确保您具有:

在 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}"

以下是运行命令后的示例输出:

示例命令

  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 clonehttps://github.com/citrix/citrix-k8s-ingress-controller.git 命令克隆主节点中的 git Hub 存储库。

  2. 要访问 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 身份验证。要获取指纹,请执行以下操作:

    1. 在 NetScaler ADM 中,导航到“设置”>“管理

    2. 系统配置下,单击 查看 ADM 指纹

      Fingerprint

      注意:

      如果已配置本地代理,请导航到 基础架构 > 实例 > 代理,选择代理,然后单击 查看指纹

      指纹代理

  • 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

  1. 导航到 基础结构 > 实例 > NetScaler

  2. 单击 添加 选项以添加实例。有关更多信息,请参阅 在 NetScaler ADM 中添加实例

  3. 添加实例后,选择虚拟服务器并启用 Web Insight。有关详细信息,请参阅 管理许可并在虚拟服务器上启用分析

在 NetScaler ADM 中添加 Kubernetes 群集

要添加库伯内特斯群集,请执行以下操作:

  1. 使用管理员凭据登录到 NetScaler ADM。

  2. 导航到调配 > Kubernetes > 群集。 屏幕上将显示“群集”页面。

  3. 单击添加

  4. 在“添加群集”页中,指定以下参数:

    1. 名称 -指定您选择的名称。

    2. API 服务器 URL -您可以从 Kubernetes 主节点获取 API 服务器 URL 的详细信息。

      1. 在 Kubernetes 主节点上,运行命令 kubectl cluster-info

        API 服务器 URL

      2. 输入为 Kubernetes 主服务器的运行地址显示的 URL。

    3. 身份验证令牌 -指定身份验证令牌。需要身份验证令牌才能验证 Kubernetes 群集与 NetScaler ADM 之间通信的访问权限。要生成身份验证令牌,请执行以下操作:

      在库贝内特斯主节点上:

      1. 使用以下 YAML 创建服务帐户:

        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: <name>
          namespace: <namespace>
        <!--NeedCopy-->
        
      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

在 ADM 中部署 CPX 并注册 CPX

  1. 运行 kubectl create -f rbac.yaml 以部署群集角色和群集绑定。

  2. 运行 kubectl create -f cpx.yaml -n sg-demo 以部署 CPX。

部署完成后,CPX 注册将自动完成。

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

注意

确保您有足够的虚拟服务器许可证。有关详细信息,请参阅许可

在 NetScaler ADM 中添加 Kubernetes 群集后,必须确保自动选择虚拟服务器进行许可。虚拟服务器必须获得许可才能在服务图中显示数据。要自动选择虚拟服务器,请执行以下操作:

  1. 导航到 Settings(设置)> Licensing & Analytics Configuration(许可和分析配置)

  2. 在“虚拟服务器许可证摘要”下,启用 自动选择虚拟服务器自动选择不可寻址的虚拟服务器

    自动选择虚拟服务器

启用 Web 事务和 TCP 事务设置

添加 Kubernetes 群集并启用自动选择虚拟服务器后,将 Web 事务设置TCP 事务设置更改为全部

  1. 导航到“设置”>“分析设置”。

    此时将显示“分析设置”页面。

  2. 单击启用分析功能

  3. Web 事务设置下,选择 全部

    web-transaction-settings

  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