写点什么

使用 Kiali 观察您的服务窗格

  • 2019-10-04
  • 本文字数:3352 字

    阅读完需:约 11 分钟

使用 Kiali 观察您的服务窗格

服务网格的可观察性提供了关于基于微服务的应用程序拓扑结构的详细信息。我们可以据此了解哪些微服务是服务网格的组成部分、它们如何互相连接、有多少流量路由到这些微服务,以及其他详细信息。由 Heiko Rupp 撰写的这篇博文将介绍如何使用 Kiali 在 Amazon EKS 上直观显示使用 Istio 服务网格的应用程序。


– Arun


微服务架构将软件整体拆分为许多更小的部分,然后将它们重新组合在一起。然后,开发人员会添加库和代码来确保服务之间的通信安全、提供容错能力来应对网络故障,并提供在服务的不同版本之间分配流量的机制。


现在,像 Istio 这样的服务网格以及 Amazon Elastic Container Service for Kubernetes (EKS),可以在平台级别提供这些服务,从而使应用程序编写人员免于执行这些任务。路由决策在网格级别做出,并从底层的“物理”设置中提取出来。


但是,服务网格的这种强大功能也给设置增添了复杂性,包括简单地理解网格的工作原理。

Kiali 前来相助

Kiali 是基于 ASLv2 许可的一个开源 UI 项目,旨在通过可视化包含拓扑、吞吐量和运行状况等信息的有效路由,使网格变得易于理解。


首先,按照本博文中的步骤在 Amazon EKS 上安装 Istio(请注意下面提到的关于 Kiali 安装过程的两个小变化)。


以下是对基本步骤的简要概述(这些步骤在 Istio 1.1 相关博文的基础上略有更改):


  • 通过 eksctl 安装 EKS。

  • 创建服务账户并进行初始化


helmkubectl apply -f \  install/kubernetes/helm/helm-service-account.yamlhelm init --service-account tiller初始化 Istio 自定义资源定义(Istio 1.1 需要执行此操作):helm install --wait \     --name istio-init \     --namespace istio-system \     install/kubernetes/helm/istio-init
复制代码


  • 使用包含 Kiali 的“演示”配置文件安装 Istio。(此安装方法将使用 Kiali 的默认凭证 (admin/admin) 创建密钥。)


helm install install/kubernetes/helm/istio \     --name istio \     --namespace istio-system \     --values \     install/kubernetes/helm/istio/values-istio-demo.yaml
复制代码


  • 通过 Kubernetes 端口转发或通过网关公开 Kiali。以下转发命令可以在本地主机端口 20001 上公开 Kiali:


kubectl -n istio-system port-forward svc/kiali 20001:20001 &
复制代码


  • 按照上面链接的博文中的说明安装 bookinfo 演示应用程序并向其发送流量。

  • 当转到 http://localhost:2001/kiali/,并且提供 admin/admin 凭证进入 Kiali 后,您将看到所设置的项目的概览,以及相关运行状况:


单击左边列中的 Graph,将会得到如下所示的图表(您可能需要在“Namespace”下拉菜单中选择一个或多个命名空间)。或者,您也可以通过单击某个命名空间概览卡中的 Kiali 图表图标访问该命名空间的图表:



该图表能够可视化构成应用程序的各个服务和工作负载的拓扑结构(以上显示的是“bookinfo”应用程序,即 Istio 的 Hello World)。


同样,可视化也包含运行状况信息,同时还包含有关各个服务接收的流量的信息。当您单击图表中的元素时,右侧边栏中将显示其详细信息。


也可以通过在“边缘标签”下拉菜单中选择相应条目来查看绝对流量速率或相对流量速率。下一张屏幕截图显示的是百分比形式的流量速率。因为我们没有植入任何路由规则,所以流量是平均分配的。



通过 kubectl 应用带有定义的 yaml 文件,可以在 Istio 中植入路由规则。Kiali 将获得有效的规则,并会显示该规则直接存在于图表中,而无需挖掘 Kubernetes 中的 yaml 文件。


现在,我们使用 Kiali 来植入一个规则,将流量以不同的方式分配到 reviews 工作负载。单击三角形图标,然后单击侧栏中的 Reviews 链接,这时将打开服务详细信息页面。您还可以转到左侧菜单中的 Services 选项卡,然后通过从列表中选择服务来访问该页面。



然后,在右上角,打开 Actions 菜单并选择 Create traffic routing。使用滑块或输入字段将 20% 的流量分配给 reviews v1、50% 分配给 v2,其余 30% 分配给 v3。


完成以上操作后,单击 Create。



退出向导后,您将看到规则已经成功创建。您可以单击子选项卡来查看规则:



单击 Reviews 以查看规则的图形化视图;单击 View YAML 以查看源。



现在,我们回到图表部分。带有“reviews”的紫色叉号图标表示图表中存在同样的规则,reviews 服务三角形与单个工作负载之间的边缘的百分比表示所选择的流量:



当您选择上面的 View YAML 时,还可以修改 Istio 规则。


如果您在此处出现错误(例如,上面的 reviews 部署版本的权重总和不等于 100%),系统将弹出一个警告,且 Kiali 将拒绝保存更改。


新版本的 Istio 应该已经在一个规则内避免了这种不一致;Kiali 在该方面的功能要强大的多,借助这些功能,您可以交叉检查 VirtualServices 中的设置及其各自的 DestinationRules。在以下示例中,编辑操作将子集更改成了目前 DestinationRules 中找不到的子集 – 这种情况下,Kiali 将发出警告:


获取和显示工作负载的遥测数据

Kiali 还可以使用 Istio 附带的 Prometheus 数据库显示工作负载的遥测数据。要启用此功能,您可以在工作负载中添加如下注释:


apiVersion: extensions/v1beta1kind: Deployment[...]spec:  template:    metadata:      annotations:        kiali.io/runtimes: quarkus,my-app        prometheus.io/port: "9080"        prometheus.io/scheme: http
复制代码


prometheus.io 注释用于告知 Prometheus 从何处获取数据,而 kiali.io 1 则列出了应该显示的控制面板。控制面板定义是 yaml 文件,这些文件可定义屏幕布局和要显示的指标的名称。


设置完成后,应用程序和工作负载详细信息页面中就会出现新的选项卡,在本示例中是“Quarkus Metrics”和“App Rating”。



由于获取到的数据保存在 Prometheus 中,因此也可以在 Grafana 或其他类似的工具中显示这些数据。您可以在我的博文 How to view application-metrics in Kiali 中找到有关此功能的更多信息。

链接到分布式跟踪

在经典的整体性应用程序中,很容易在运行的进程中添加一个分析器,以获得关于时间花费情况的统计信息。但是,这种方法不适用于分布式应用程序。


Istio 别出心裁,不仅提供遥测功能,而且根据 OpenTracing 标准提供分布式数据跟踪功能。Kiali 集成了 Jaeger,Jaeger 是一个支持 OpenTracing 的跟踪系统。



此屏幕截图显示了 Jaeger UI(通过 bookinfo 应用程序跟踪调用)的一个独立版本。每个组件中花费的时间会以横条显示,因此可以直观查看 reviews 服务在其内部工作中花费了大量时间,而 bookinfo 应用程序的总延迟正是由它决定的。

后续工作

虽然 Kiali 在可视化服务网格的状态方面表现不错,但是仍然有诸多复杂任务需要 Istio 用户执行,包括 yaml 文件、文本编辑器和命令行工具。虽然人们很喜欢 Istio 的强大功能,但是它也非常复杂。


未来,Kiali 将更好地为创建和更新 Istio 资源提供支持,而无需依靠命令行(正如您在上面的 Create Weighted Routing 向导中所看到的)。


Kiali 是 1.1 以上版本中的一个标准 Istio 插件,它替代了静态服务图表。


Kiali 目前与 Istio 绑定,但某位同事已经成功地从基于链接的网格中获取了一些数据。如果有人有兴趣提取某些特定 Istio 专用代码,从而允许 Kiali 使用基于 Kubernetes 的其他服务网格(比如 Amazon App Mesh with Kiali),那结果一定很酷。

更多信息

正如我上面提到的,Kiali 是基于 ASLv2 许可的开源项目。我们一开始将其作为开源项目,因为这正是我们的特质。您可以在 GitHub 上找到 Kiali,非常欢迎您为我们建言献策。欢迎提出代码方面的意见,同时您也可以通过报告错误、与我们分享您的用例或者翻译文档来帮助我们。


若要第一时间掌握有关 Kiali 的新闻,您可以在 Twitter 和 Medium 上关注 Kiali,也欢迎您在 Twitter 和 Medium 上关注我。


作者介绍:


Heiko Rupp


Heiko 是一位开源爱好者,在 Red Hat 中间件监控和管理方面拥有十多年工作经验。他帮助领导并构建了 Kiali。


他还通过对 Eclipse MicroProfile 的研究帮助定义了 Java Microservices 的新方式。因此,他是 Eclipse MicroProfile Metrics 项目的负责人。他和家人一起住在德国斯图加特。


本博文中的内容和意见属于第三方作者,AWS 不对本博文的内容或准确性负责。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/observe-service-mesh-kiali/


2019-10-04 21:061566
用户头像

发布了 1852 篇内容, 共 119.6 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

Rainbond 5.5 发布,支持Istio和扩展第三方Service Mesh框架

北京好雨科技有限公司

istio PaaS rainbond

滨海中小企业协会参加新区工商联(总商会)第四次代表大会

InfoQ 天津

一篇教你代码同步 Github 和 Gitee

冴羽

JavaScript GitHub 自己搭建博客网站 GitHub Pages vuepress

点击下载 | 世界经济论坛全新推出深度AI洞察报告

澳鹏Appen

人工智能 机器学习 深度学习

【Spring Boot 快速入门】二、Spring Boot集成MyBatis可以连接数据库啦!

小阿杰

SpringBoot 2 mybatis配置 内容合集 签约计划第二季

Explore the Sky丨来 TiDB Hackathon 2021 探索无限可能

PingCAP

Go 数据库 hackathon TiDB database

国产分布式数据库StarDB核心技术大揭秘一:内核分解之数据分片

京东科技开发者

Android C++系列:Linux Socket编程(三)CS模型示例

轻口味

28天写作 12月日更

潮玩盲盒一番赏盲盒星球app专业源码搭建

风行无疆

探探的IM长连接技术实践:技术选型、架构设计、性能优化

JackJiang

网络编程 websocket 即时通讯 IM

ClickHouse在工业互联网场景的OLAP平台建设实践

京东科技开发者

记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

汪子熙

JavaScript ajax 跨域 28天写作 12月日更

京东云PostgreSQL在GIS场景的应用分享

京东科技开发者

国产分布式数据库StarDB核心技术大揭秘二:智能运维管控

京东科技开发者

百度王海峰:深耕自然语言处理近30年,推进AI融合创新

百度开发者中心

自然语言处理

【Spring Boot 快速入门】一、周末建立了Spring Boot专栏,欢迎学习交流

小阿杰

SpringBoot 2 spring Boot Starter 内容合集 签约计划第二季

SD-WAN、SASE 和多云空间的未来趋势

devpoint

5G SD-WAN sase 12月日更

多点 DMALL x StarRocks:实现存储引擎的收敛,保障高查询并发及低延迟要求

StarRocks

数据库 数据分析 高并发 StarRocks

Go 语言快速入门指南:第一篇 介绍

宇宙之一粟

Go golang 编程入门 签约计划第二季 12月日更

【Spring Boot 快速入门】四、Spring Boot集成Swagger UI

小阿杰

SpringBoot 2 swagger 内容合集 签约计划第二季

【Spring Boot 快速入门】五、Spring Boot集成Lombok

小阿杰

SpringBoot 2 lombok 内容合集 签约计划第二季

行业分析| 泛娱乐应用出海探索

anyRTC开发者

音视频 语音通话 视频直播 视频通话 泛娱乐

最好用的七大顶级 API 接口测试工具

蒋川

API 测试工具

Apache Log4j 2 安全漏洞扫描及启示录

极狐GitLab

gitlab 安全 供应链 漏洞扫描 Apache Log4j 2

分布式架构与性能优化

高性能架构探索

分布式 微服务 性能优化 内容合集 签约计划第二季

优秀的代码的分层结构

xcbeyond

架构 28天写作 12月日更

一周信创舆情观察(12.6~12.12)

统小信uos

【Spring Boot 快速入门】三、Spring Boot集成JUnit

小阿杰

SpringBoot 2 JUnit 内容合集 签约计划第二季

完善跨境金融区块链服务平台,支持区域开放创新和特殊区域建设

CECBC

Istio在Rainbond Service Mesh体系下的落地实践

北京好雨科技有限公司

istio PaaS rainbond

京东云ClickHouse和ES双引擎设计在零售选品中的应用实践

京东科技开发者

使用 Kiali 观察您的服务窗格_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章