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


我们可以打开 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【十三 Istio:Istio项目实际案例——Online Boutique】如果我们刷新几次产品页面,我们应该得到如下图所示的错误信息 。
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
请注意,错误信息说,失败的原因是故障过滤器中止 。如果我们打开 Grafana(getmesh istioctl dash grafana),我们也会注意到图中报告的错误 。
删除productcatalogservice这个VirtualService:
[root@k8scloude1 ~]# kubectl delete virtualservice productcatalogservicevirtualservice.networking.istio.io "productcatalogservice" deleted[root@k8scloude1 ~]# kubectl get virtualserviceNAMEGATEWAYSHOSTSAGEfrontend["frontend.online-boutique.svc.cluster.local"]6d14hfrontend-ingress["frontend-gateway"]["*"]23hrecommendationservice["recommendationservice.online-boutique.svc.cluster.local"]44m九.弹性9.1 弹性为了演示弹性功能 , 我们将在产品目录服务部署中添加一个名为 EXTRA_LATENCY 的环境变量 。这个变量会在每次调用服务时注入一个额外的休眠 。
通过运行 kubectl edit deploy productcatalogservice 来编辑产品目录服务部署 。
[root@k8scloude1 ~]# kubectl get deployNAMEREADYUP-TO-DATEAVAILABLEAGEadservice1/1116d14hcartservice1/1116d14hcheckoutservice1/1116d14hcurrencyservice1/1116d14hemailservice1/1116d14hfrontend1/11124hfrontend-v11/11128hloadgenerator1/1116d14hpaymentservice1/1116d14hproductcatalogservice1/1116d14hrecommendationservice1/1116d14hredis-cart1/1116d14hshippingservice1/1116d14h[root@k8scloude1 ~]# kubectl edit deploy productcatalogservicedeployment.apps/productcatalogservice edited这将打开一个编辑器 。滚动到有环境变量的部分,添加 EXTRA_LATENCY 环境变量 。
...spec:containers:- env:- name: EXTRA_LATENCYvalue: 6s ...
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
保存并推出编辑器 。
如果我们刷新http://192.168.110.190/页面,我们会发现页面需要 6 秒的时间来加载(那是由于我们注入的延迟) 。
让我们给产品目录服务添加一个 2 秒的超时 。
[root@k8scloude1 ~]# vim productcatalogservice-timeout.yaml[root@k8scloude1 ~]# cat productcatalogservice-timeout.yamlapiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:name: productcatalogservicespec:hosts:- productcatalogservice.online-boutique.svc.cluster.localhttp:- route:- destination:host: productcatalogservice.online-boutique.svc.cluster.localtimeout: 2s创建 VirtualService 。
[root@k8scloude1 ~]# kubectl apply -f productcatalogservice-timeout.yamlvirtualservice.networking.istio.io/productcatalogservice created[root@k8scloude1 ~]# kubectl get virtualserviceNAMEGATEWAYSHOSTSAGEfrontend["frontend.online-boutique.svc.cluster.local"]6d14hfrontend-ingress["frontend-gateway"]["*"]24hproductcatalogservice["productcatalogservice.online-boutique.svc.cluster.local"]10srecommendationservice["recommendationservice.online-boutique.svc.cluster.local"]76m

推荐阅读