我们可以打开 Grafana(getmesh istioctl dash grafana
)和 Istio 服务仪表板,或者使用如下方法打开Grafana界面:
#查看grafana的端口号[root@k8scloude1 ~]# kubectl get svc -n istio-system | grep grafanagrafanaNodePort10.100.151.232<none>3000:31092/TCP24d
http://192.168.110.130:31092/打开grafana界面 。点击istio-service-dashboard进入istio服务界面
文章插图
确保从服务列表中选择
recommendationsservice
,在 Reporter 下拉菜单中选择 source
, 并查看显示延迟的 Client Request Duration,如下图所示:文章插图
点击View放大Client Request Duration图表
文章插图
同样地,我们可以注入一个中止 。在下面的例子中,我们为发送到产品目录服务的 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】如果我们刷新几次产品页面,我们应该得到如下图所示的错误信息 。文章插图
请注意,错误信息说,失败的原因是故障过滤器中止 。如果我们打开 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 ...
文章插图
保存并推出编辑器 。
如果我们刷新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
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 九 前后端分离项目:实现"添加"功能(后端接口)
- 十一 Istio:向istio服务网格中引入虚拟机
- 四 SoringCloud -微信获取用户信息
- 九 Istio:istio安全之授权
- 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践
- 五 Istio:使用服务网格Istio进行流量路由
- IQueryable和IEnumerable 快读《ASP.NET Core技术内幕与项目实战》EFCore2.5:集合查询原理揭秘
- 二 Istio:在Kubernetes(k8s)集群上安装部署istio1.14
- 19 基于.NetCore开发博客项目 StarBlog - Markdown渲染方案探索
- 项目案例使用有效 解决ffmpeg的播放摄像头的延时优化问题