ZzackzhangK零SK壹S
看下日志的报错:
kubectl -n kubesphere-controls-system logs -f kubesphere-router-ns4-7d57b7bf6b-m2nr5 -c nginx-ingress-controller
看下日志的报错:
kubectl -n kubesphere-controls-system logs -f kubesphere-router-ns4-7d57b7bf6b-m2nr5 -c nginx-ingress-controller
zackzhang
大神看了一下日志如下,就是报的504超时,都是15秒钟左右,这个超时时间是不是在这个router设置
127.0.0.1 - [127.0.0.1] - - [22/Feb/2021:08:17:14 +0000] "POST /form/automForm/save?checkMust=true HTTP/1.1" 504 24 "http://test.10.1.1.122.nip.io:31729/train/certificat/automForm/form_bb71493498ff1a64" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36" 230949 15.042 [hse-test-yth-hse-frontend-80] 10.233.8.73:80 24 15.008 504 87bb5975-1521-4bd9-b3f6-89e26a75d2fd
是不是下面这个connectTimeout
- jaeger-collector.istio-system.svc:9411
- --dnsRefreshRate
- 300s
- --connectTimeout
- 10s
- --proxyAdminPort
- "15000"
- --concurrency
zealzhangz 你的应用需要设置这么大的超时间吗?后端应用有没有问题
zackzhang 大佬,这个参数是在哪设置?先临时解决问题,我后续再研究一下
zackzhang 大佬,这几个timeout我都设置过了,但还是15s就超时了
zackzhang 大神,这里有个一模一样的帖子,但没说解决方法,这个应该是共性的问题,应为大文件上传时就很容易出发这个问题
KS内部应用访问外部接口,网关超时
你的应用使用了istio,网关要开启微服务治理
zackzhang 开启了应用治理,也是一样哦
怎么复现,我本地连接一个注入sidecar应用,时间可以不受限制;跟负载大小有关系吗
zackzhang 复现的话直接在接口中 sleep 30s,然后通过ingress暴露接口请求。我猜测现在的应该是应用还没返回,可能是k8s这边某个组件15s超时直接返回了。
zealzhangz 我这测试一直正常,你把可以复现的详细步骤描述下(尽量详细点)。
zackzhang 大佬,我新建了一个工程,在原先的项目内部署该工程,问题依旧存在。后面我新建了一个项目部署上去发现没有这个问题,然后再回去测试发现原先有问题的项目也好了。发现相关的 ReplicaSet router 更新了,目测这个还是跟istio sidecar 有关,可能之前关闭应用治理的时候这个ReplicaSet router 没更新,我本次新建触发了更新然后就好了。不过原先那个ReplicaSet 后面参数都变成0了,是个啥子意思?
zealzhangz 应该没有找到根本原因,你找个可以稳定复现的方法
zackzhang 目前能稳定复现,开启应用治理,请求超过15s就会超时,关闭之后就正常。
但刚开始我也关闭了应用治理,但是还是超时,这个我就解释不了了。
你这timeout有20000的,不也有些正常的吗?
复现的要求应该是:所有请求达到15s,应该马上被拒绝。
另外,你如果怀疑是网关造成的,可以绕开网关,直接请求服务(service NodePort);
zackzhang 正常的是我关闭应用治理的测试,超时的是我开启应用治理的测试,绕开网关不会超时。这些我都测试过了。这里有我测试完整的源码和k8s脚本,大佬可以自己测试一下
# 部署好之后请求这个地址
http://timeout-test.10.1.1.122.nip.io:31729/test/?timeout=20000
卧槽,附件不支持gz压缩包
大佬移步百度网盘:
链接: https://pan.baidu.com/s/19-KICUiDoC2GmoFCHIgc6A 提取码: mewe
总结一下就是关闭应用治理,删除如下注解,就不会超时,超时原因还是因为 istio sidecar
nginx.ingress.kubernetes.io/service-upstream: 'true'