Kiali 为 Service Mesh 提供了一个观测的可视化平台。
它所提供的拓扑结构可以帮用户了解服务网格的结构,并提供服务网格的健康状况信息。
Kiali 控制台提供以下功能:
部署samples/addons
下的所有yaml文件,里面定义了kiali/promethues/grafana/jaeger等应用
kubectl apply -f samples/addons
kiali安装在istio-system
命名空间,检测状态,确认正常运行:
在本地执行istioctl dashboard kiali
,会打开web UI界面。
在UI里可以体验kiali的各种功能,比如监控微服务之间的通讯状态等:
在上一节我们部署了bookinfo app, 在这一部分,我们将用模拟流量访问bookinfo,并在kiali中查看监控。
在部署istio时,除了istiod外,也一起部署了ingressgateway
和egressgateway
,在EKS它以LoadBalancer
形式访问:
如果直接访问这个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地址能够获取到页面信息:
使用curl每秒访问10次该URL:
while sleep 0.1; do curl -sS 'http://a8a1deecac1ad4ba7993b01e393d363d-322922569.us-west-2.elb.amazonaws.com/productpage' &>/dev/null; done
一段时间后在kiali中看到各种微服务的调用关系:
查看Istio Config
, 看到刚才部署的一个Gateway
和VirtualService
。
Kiali的监控可以让我们实时的监测到服务内的异常,例如我们把productpage deployment删除:
❯ kubectl delete deployment/productpage-v1
deployment.apps "productpage-v1" deleted
线上流量随后访问productpage页面会失败,在kiali中会实时监控到这个状态:
进一步仔细查看,发现全部是5xx错误:
可见Kiali对于线上微服务的监控与排错都非常有帮助