Kiali安装与使用

Kiali 为 Service Mesh 提供了一个观测的可视化平台。

它所提供的拓扑结构可以帮用户了解服务网格的结构,并提供服务网格的健康状况信息。

Kiali 控制台提供以下功能:

  • 健康 – 快速识别应用程序、服务或者工作负载的问题。
  • 拓扑 – 以图形的形式显示应用程序、服务或工作负载如何通过 Kiali 进行通信。
  • 指标 – 预定义的 metrics dashboard 可为您生成 Go、Node.js、Quarkus 、Spring Boot 、Thonttail 和 Vert.x 的服务网格和应用程序性能图表。。您还可以创建您自己的自定义仪表板。
  • 追踪 – 通过与 Jaeger 集成,可以在组成一个应用程序的多个微服务间追踪请求的路径。
  • 验证 – 对最常见 Istio 对象(Destination Rules 、Service Entries 、Virtual Services 等等)进行高级验证。
  • 配置 – 使用向导创建、更新和删除 Istio 路由配置的可选功能,或者直接在 Kiali Console 的 YAML 编辑器中创建、更新和删除 Istio 路由配置。

Kiali安装

部署samples/addons下的所有yaml文件,里面定义了kiali/promethues/grafana/jaeger等应用

kubectl apply -f samples/addons

image-20211107233429767

kiali安装在istio-system命名空间,检测状态,确认正常运行:

image-20211106083310563

在本地执行istioctl dashboard kiali,会打开web UI界面。

image-20211106083613381

在UI里可以体验kiali的各种功能,比如监控微服务之间的通讯状态等:

image-20211106083559863

模拟流量测试

在上一节我们部署了bookinfo app, 在这一部分,我们将用模拟流量访问bookinfo,并在kiali中查看监控。

在部署istio时,除了istiod外,也一起部署了ingressgatewayegressgateway,在EKS它以LoadBalancer形式访问:

image-20220810092302247

如果直接访问这个elb的URL,会访问不到结果,这是因为流量经过alb后,尚不能转发到后端微服务。

我们需要创建一个Gateway和一个VirtualService,关于这部分内容更详细的介绍请参考下一章,这这里只需要知道这两个东西可以控制流量规则即可。

❯ kubectl apply -f istio-1.14.3/samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created

此时访问alb地址能够获取到页面信息:

image-20220810092742708

使用curl每秒访问10次该URL:

 while sleep 0.1; do curl -sS 'http://a8a1deecac1ad4ba7993b01e393d363d-322922569.us-west-2.elb.amazonaws.com/productpage' &>/dev/null; done

一段时间后在kiali中看到各种微服务的调用关系:

image-20220810093053811

查看Istio Config, 看到刚才部署的一个GatewayVirtualService

image-20220810093208976

Kiali的监控可以让我们实时的监测到服务内的异常,例如我们把productpage deployment删除:

❯ kubectl delete deployment/productpage-v1
deployment.apps "productpage-v1" deleted

线上流量随后访问productpage页面会失败,在kiali中会实时监控到这个状态:

image-20220810093403234

进一步仔细查看,发现全部是5xx错误:

image-20220810093442383

可见Kiali对于线上微服务的监控与排错都非常有帮助