可视化您的服务网格

此任务向您展示如何可视化 Istio 服务网格的不同方面。

在此任务中,您将安装 Kiali 插件并使用基于 Web 的图形用户界面查看服务网格的服务图和 Istio 配置对象。

此任务使用 Bookinfo 示例应用程序作为整个示例。此任务假定 Bookinfo 应用程序已安装在 bookinfo 命名空间中。

开始之前

按照 Kiali 安装 文档将 Kiali 部署到您的集群中。

生成图形

  1. 要验证服务是否在您的集群中运行,请运行以下命令

    $ kubectl -n istio-system get svc kiali
    
  2. 要确定 Bookinfo URL,请按照说明确定 Bookinfo 入口 GATEWAY_URL

  3. 要向服务网格发送流量,您有三个选项

    • 在您的 Web 浏览器中访问 http://$GATEWAY_URL/productpage

    • 多次使用以下命令

      $ curl http://$GATEWAY_URL/productpage
      
    • 如果您在系统中安装了 watch 命令,请使用以下命令持续发送请求

      $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
      
  4. 要打开 Kiali UI,请在您的 Kubernetes 环境中执行以下命令

    $ istioctl dashboard kiali
    
  5. 在您登录后立即显示的**概述**页面中查看服务网格的概述。**概述**页面显示服务网格中所有具有服务的命名空间。以下屏幕截图显示了一个类似的页面

    Example Overview
    示例概述
  6. 要查看命名空间图,请在 Bookinfo 概览卡片的 kebab 菜单中选择“图表”选项。kebab 菜单位于卡片的右上角,看起来像三个垂直点。点击它以查看可用选项。页面看起来类似于

    Example Graph
    示例图表
  7. 该图表表示在一段时间内流经服务网格的流量。它是使用 Istio 遥测生成的。

  8. 要查看指标摘要,请选择图表中的任何节点或边,以在右侧的摘要详细信息面板中显示其指标详细信息。

  9. 要使用不同的图表类型查看服务网格,请从“图表类型”下拉菜单中选择图表类型。有几种图表类型可供选择:应用程序版本化应用程序工作负载服务

    • 应用程序图表类型将应用程序的所有版本聚合到单个图表节点中。以下示例显示了一个表示 reviews 应用程序三个版本的单个 reviews 节点。请注意,已禁用“显示服务节点”显示选项。

      Example App Graph
      示例应用程序图表
    • 版本化应用程序图表类型为应用程序的每个版本显示一个节点,但特定应用程序的所有版本都分组在一起。以下示例显示了包含三个节点的 reviews 组框,这些节点表示 reviews 应用程序的三个版本。

      Example Versioned App Graph
      示例版本化应用程序图表
    • 工作负载图表类型为服务网格中的每个工作负载显示一个节点。此图表类型不需要您使用 appversion 标签,因此如果您选择不在组件上使用这些标签,这可能是您选择的图表类型。

      Example Workload Graph
      示例工作负载图表
    • 服务图表类型显示网格中服务流量的高级聚合。

      Example Service Graph
      示例服务图表

检查 Istio 配置

  1. 左侧菜单选项将引导至 应用程序工作负载服务Istio 配置的列表视图。以下屏幕截图显示了 Bookinfo 命名空间的 服务信息

    Example Details
    示例详细信息

流量切换

您可以使用 Kiali 流量切换向导来定义要路由到两个或多个工作负载的请求流量的特定百分比。

  1. 查看 bookinfo 图表的 版本化应用程序图表

    • 确保您已启用 流量分布边缘标签 显示选项以查看路由到每个工作负载的流量百分比。

    • 确保您已启用显示 服务节点 显示选项以查看图表中的服务节点。

    Bookinfo Graph Options
    Bookinfo 图表选项
  2. 通过单击 ratings 服务(三角形)节点,将焦点放在 bookinfo 图表中的 ratings 服务上。请注意,ratings 服务流量均匀地分布到两个 ratings 工作负载 v1v2(50% 的请求路由到每个工作负载)。

    Graph Showing Percentage of Traffic
    显示流量百分比的图表
  3. 单击侧面板中找到的 ratings 链接以转到 ratings 服务的详细视图。这也可以通过在 ratings 服务节点上进行二次点击并从上下文菜单中选择“详细信息”来完成。

  4. 操作下拉菜单中,选择 流量切换以访问流量切换向导。

    Service Actions Menu
    服务操作菜单
  5. 拖动滑块以指定要路由到每个工作负载的流量百分比。对于 ratings-v1,将其设置为 10%;对于 ratings-v2,将其设置为 90%。

    Weighted Routing Wizard
    加权路由向导
  6. 单击 预览按钮以查看向导将生成的 YAML。

    Routing Wizard Preview
    路由向导预览
  7. 单击 创建按钮并确认以应用新的流量设置。

  8. 单击左侧导航栏中的 图表以返回到 bookinfo 图表。请注意,ratings 服务节点现在带有 虚拟服务图标。

  9. bookinfo 应用程序发送请求。例如,要每秒发送一个请求,如果您的系统上安装了 watch,则可以执行此命令

    $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
    
  10. 几分钟后,您会注意到流量百分比将反映新的流量路由,从而确认您的新流量路由已成功将 90% 的所有流量请求路由到 ratings-v2

    90% Ratings Traffic Routed to ratings-v2
    90% 的 Ratings 流量路由到 ratings-v2

验证 Istio 配置

Kiali 可以验证您的 Istio 资源以确保它们遵循正确的约定和语义。在您的 Istio 资源配置中检测到的任何问题都可以标记为错误或警告,具体取决于不正确配置的严重性。有关 Kiali 执行的所有验证检查的列表,请参阅Kiali 验证页面

强制执行服务端口名称的无效配置以查看 Kiali 如何报告验证错误。

  1. details 服务的端口名称从 http 更改为 foo

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"foo"}]'
    
  2. 通过单击左侧导航栏上的 服务导航到 服务列表。

  3. 如果尚未选择,请从 命名空间下拉菜单中选择 bookinfo

  4. 注意 details 行的 配置列中显示的错误图标。

    Services List Showing Invalid Configuration
    显示无效配置的服务列表
  5. 单击 名称列中的 details 链接以导航到服务详细信息视图。

  6. 将鼠标悬停在错误图标上以显示描述错误的工具提示。

    Service Details Describing the Invalid Configuration
    描述无效配置的服务详细信息
  7. 将端口名称更改回 http 以更正配置并将 bookinfo 恢复到其正常状态。

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"http"}]'
    
    Service Details Showing Valid Configuration
    显示有效配置的服务详细信息

查看和编辑 Istio 配置 YAML

Kiali 提供了一个 YAML 编辑器,用于查看和编辑 Istio 配置资源。YAML 编辑器还将在检测到不正确的配置时提供验证消息。

  1. bookinfo VirtualService 中引入错误

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway-invalid"}]'
    
  2. 单击左侧导航栏上的 Istio 配置以导航到 Istio 配置列表。

  3. 如果尚未选择,请从 命名空间下拉菜单中选择 bookinfo

  4. 注意提醒您存在配置问题的错误图标。

    Istio Config List Incorrect Configuration
    Istio 配置列表错误配置
  5. 单击 bookinfo 行的 配置列中的错误图标以导航到 bookinfo 虚拟服务视图。

  6. YAML 选项卡已预先选择。请注意与之关联的验证检查通知的行上的颜色突出显示和图标。

    YAML Editor Showing Validation Notifications
    YAML 编辑器显示验证通知
  7. 将鼠标悬停在红色图标上以查看工具提示消息,该消息会告知您触发错误的验证检查。有关错误原因以及如何解决错误的更多详细信息,请在Kiali 验证页面上查找验证错误消息。

    YAML Editor Showing Error Tool Tip
    YAML 编辑器显示错误工具提示
  8. 将虚拟服务 bookinfo 重置回其原始状态。

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway"}]'
    

其他功能

Kiali 具有比此任务中审查的更多功能,例如与 Jaeger 追踪的集成

有关这些附加功能的更多详细信息,请参阅Kiali 文档

为了更深入地探索 Kiali,建议您完成Kiali 教程

清理

如果您不打算执行任何后续任务,请从集群中删除 Bookinfo 示例应用程序和 Kiali。

  1. 要删除 Bookinfo 应用程序,请参阅Bookinfo 清理说明。

  2. 要从 Kubernetes 环境中删除 Kiali

    $ kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/kiali.yaml
    
这些信息有用吗?
您是否有任何改进建议?

感谢您的反馈!