客户端永远不会收到来自Kubernetes上服务的响应

时间:2019-10-10 14:55:06

标签: http nginx kubernetes

我有以下配置:

  1. 基于k3的kubernetes集群,部署在私有云上。
  2. 服务在此群集和基于nginx的入口后面运行。该服务的任务是读取客户端发送的文件,并将其上传到S3数据库。
  3. 我有一个客户端(在docker容器上运行),该客户端发送https请求以将文件上传到此服务。

对于这些请求中的每一个,预计服务器大约需要2到3分钟来响应。 我的问题是,即使客户端本身成功发送了HTTP请求,并且服务成功处理并做出了响应,我们服务发出的某些响应仍未到达客户端(客户端等待1500万后超时)。特别是从nginx日志中可以看到,响应200是我们的服务返回的,但是客户端没有收到此响应。

这是一个nginx日志示例,我从中推断出我们的服务响应200:

10.42.0.0 - [10.42.0.0] - - [10/Oct/2019:09:55:12 +0000] \"POST /api/upload/ot_35121G3118C_1.las HTTP/1.1\" 200 0 \"-\" \"reqwest/0.9.20\" 440258210 91.771 [file-upload-service-8000] [] 10.42.0.6:8000 0 15.368 200 583d70db408b6be596f5012e7893a3c3\n

例如,我尝试让客户端在24小时内连续执行请求(等待服务器响应后再发出新请求),每小时大约有一个或两个请求有此问题,而其他18个则按预期运行。

由于nginx告诉我们我们的服务返回了200响应,因此感觉该响应在nginx入口和客户端之间的某个位置丢失了。关于导致此问题的原因有什么想法?我有办法调试吗?

编辑:

为明确起见,我正在使用的确切入口控制器是nginx-ingress入口控制器,已与helm一起部署。

此外,故障率是完全随机的。趋势是每小时1或2,但有时可能会更高。另外,它似乎与要上传的文件大小无关,也与迄今为止成功的请求数量无关。

0 个答案:

没有答案