一、认识Kiali
单体应用使用微服务架构拆分成了许多微服务的组合。服务的数量显著增加,就需要了解服务之间的通信模式,例如容错(通过超时、重试、断路等等)以及分布式跟踪,以便能够看到服务调用的去向。服务网格可在平台级别提供这些服务,并使应用程序编写者从以上繁重的通信模式中解放出来。路由决策在网格级别完成。Kiali与Istio合作,可视化服务网格拓扑、断路器和请求率等功能。Kiali还包括Jaeger Tracing,可以提供开箱即用的分布式跟踪功能。
Kiali提供以下功能:
1)服务拓扑图
2)分布式跟踪
3)指标度量收集和图标
4)配置校验
5)健康检查和显示
6)服务发现
Kiali中的基本概念:
Application:使用允许的工作负载,必须使用Istio的将Label标记为app才算,如果一个应用有多个版本,只要app标签的值相同就是属于同一个应用。
Deployment:即Kubernetes中的Deployment。
Label:这个值对应Istio很重要,因为Istio要用它来标记metrics。每个Application要求包括app和version两个Label。
Namespace:通常用于区分项目和用户。
Service:即Kubernetes中的Service对象,不过要求必须有app label。
Workload:Kubernetes中的所有常用资源类型如Deployemnt、StatefulSet、Job等都可以检测到的,无论这些负载是否加入到Istio Service Mesh中。
Application、Workload与Service的关系如下图所示:
二、Kiali的架构
Kiali 部署完成后只启动了一个 Pod&#