十三 Istio:Istio项目实际案例——Online Boutique( 七 )

浏览器访问http://192.168.110.190/,查看前端界面,如果我们刷新几次网页,我们会注意到来自前端 v1 的更新标头,一般显示$75,如下所示:

十三 Istio:Istio项目实际案例——Online Boutique

文章插图
多刷新几次页面显示$30,如下所示:
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
我们可以在浏览器中打开 http://192.168.110.130:30754,进入 kiali界面查看服务的拓扑结构,选择online-boutique命名空间,查看Graph
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
服务的拓扑结构如下,我们会发现有两个版本的前端在运行:
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
八.故障注入8.1 故障注入我们将为推荐服务引入 5 秒的延迟 。Envoy 将为 50% 的请求注入延迟 。
[root@k8scloude1 ~]# vim recommendation-delay.yaml[root@k8scloude1 ~]# cat recommendation-delay.yamlapiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:name: recommendationservicespec:hosts:- recommendationservice.online-boutique.svc.cluster.localhttp:- route:- destination:host: recommendationservice.online-boutique.svc.cluster.localfault:delay:percentage:value: 50fixedDelay: 5s将上述 YAML 保存为 recommendation-delay.yaml,然后用 kubectl apply -f recommendation-delay.yaml 创建 VirtualService 。
[root@k8scloude1 ~]# kubectl apply -f recommendation-delay.yamlvirtualservice.networking.istio.io/recommendationservice created[root@k8scloude1 ~]# kubectl get virtualserviceNAMEGATEWAYSHOSTSAGEfrontend["frontend.online-boutique.svc.cluster.local"]6d13hfrontend-ingress["frontend-gateway"]["*"]23hrecommendationservice["recommendationservice.online-boutique.svc.cluster.local"]7s我们可以在浏览器中打开 INGRESS_HOST http://192.168.110.190/,然后点击其中一个产品 。推荐服务的结果显示在屏幕底部的”Other Products You Might Light“部分 。如果我们刷新几次页面,我们会注意到,该页面要么立即加载,要么有一个延迟加载页面 。这个延迟是由于我们注入了 5 秒的延迟 。
我们可以打开 Grafana(getmesh istioctl dash grafana)和 Istio 服务仪表板,或者使用如下方法打开Grafana界面:
#查看grafana的端口号[root@k8scloude1 ~]# kubectl get svc -n istio-system | grep grafanagrafanaNodePort10.100.151.232<none>3000:31092/TCP24dhttp://192.168.110.130:31092/打开grafana界面 。点击istio-service-dashboard进入istio服务界面
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
确保从服务列表中选择recommendationsservice,在 Reporter 下拉菜单中选择 source,并查看显示延迟的 Client Request Duration,如下图所示:
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
点击View放大Client Request Duration图表
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
同样地,我们可以注入一个中止 。在下面的例子中,我们为发送到产品目录服务的 50% 的请求注入一个 HTTP 500 。
[root@k8scloude1 ~]# vim productcatalogservice-abort.yaml [root@k8scloude1 ~]# cat productcatalogservice-abort.yamlapiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:name: productcatalogservicespec:hosts:- productcatalogservice.online-boutique.svc.cluster.localhttp:- route:- destination:host: productcatalogservice.online-boutique.svc.cluster.localfault:abort:percentage:value: 50httpStatus: 500创建VirtualService 。
[root@k8scloude1 ~]# kubectl apply -f productcatalogservice-abort.yamlvirtualservice.networking.istio.io/productcatalogservice created[root@k8scloude1 ~]# kubectl get virtualserviceNAMEGATEWAYSHOSTSAGEfrontend["frontend.online-boutique.svc.cluster.local"]6d13hfrontend-ingress["frontend-gateway"]["*"]23hproductcatalogservice["productcatalogservice.online-boutique.svc.cluster.local"]8srecommendationservice["recommendationservice.online-boutique.svc.cluster.local"]36m

经验总结扩展阅读