赞
踩
在经过前面几天k8s和Istio的安装之后,开始进入最核心的阶段。微服务在抛弃传统的服务注册和服务发现之后,是怎么在istio怎么做服务间的调用的呢?本次实战花费了我2-3天的时间,经过不断的尝试,折腾,最后终于把服务间的调用调通了。下面我将介绍我本次的实践过程,希望对于同样在研究这个技术有困难的同学提供一定的帮助。
对应不熟悉的技术,我也是首先找了这方面的博文。我本次也是参考如下两篇博文进行实践的:
upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: delayed connect error: 111
我看有博文上有显示pilot 的pod,我还还怀疑是我少安装了pilot,找了一圈也没发现怎么安装pilot。
后面再安装了kiali 之后,在调用中又看到了如下的报错:
PassthroughCluster
然后又经过一阵折腾,又报了如下的错误:
503 Service Unavailable: [no body]
后面我还咨询了博主本人,问是不是spring项目中需要加spring-cloud-kubernetes 依赖,然后博主还回复我了不需要这个,用的就是istio的 LoadBalancer。
几个关键点如下:
3.服务间调用通过IP是否能调用通
当我在阅读如下博文Istio(十二):Istio问题排查的之后,我查看了我的springboot-demo-b服务的情况,如下图所示
于是服务间调用我通过POD IP可以正常调用,如下图所示:
然后我又通过SVC IP也可以正常调用,如下图所示:
在我写本文之前SVC 端口是8081,后面我将SVC 端口IP换成了80,
后面又通过服务名+端口也可以正常调用了,如下图所示:
最后,我将SVC 端口8081改为80就大功告成了(80端口可以省略,同命名空间调用.svc.cluster.local也可以省略)
通过本次实验,掌握了通过命令修改SVC type和externalIPs的方法,如下所示:
kubectl patch service kiali -n istio-system -p '{"spec":{"type":"NodePort"}}'
kubectl patch svc istio-ingressgateway --namespace istio-system --patch '{"spec": { "externalIPs": ["192.168.1.29"] }}'
还包括kubectl的如下方法:
kubectl edit svc istio-ingressgateway -n istio-system
kubectl get pod istio-springboot-demo-b-v1-6859cf6699-nrl4r -n istio-demos -o json
kubectl describe pod istio-springboot-demo-b-v1-5c789bf465-72f4c -n istio-demos
另外学会了xshell 批量发送请求
for i in $(seq 1 100); do curl -s -o /dev/null "http://192.168.1.29:32207/productpage"; done
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。