0

我正在使用 Spring Cloud Data Flow Java Task DSL在 Kubernetes 上启动 Spring Cloud Flow Tasks。在某些情况下,我可以看到调用Task.launch()导致客户端出现以下异常:

    org.springframework.web.client.HttpServerErrorException$GatewayTimeout: 504 Gateway Time-out: [no body]
    at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:116)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125)

更新

据我了解,此问题的根本原因是 Task DSL 向 Spring Cloud Data Flow Server 发送了一个请求,后者又向 Kubernetes API 发送了一个请求以部署 pod。Kubernetes API 超时,进而导致 SCDF 向任务 DSL 返回网关错误。

我做了一些深入的挖掘,如果我理解正确的话,Spring Cloud Data Flow Server 使用fabrics8io库在 Kubernetes 上部署任务。例如,查看OpenShift的 fabrics8io 代码,我发现它在OkHTTPClient内部使用,这似乎是罪魁祸首。这似乎正在使用 rhe 默认超时。当 Kubernetes 集群运行缓慢时,“OkHttpClient”会超时,进而导致数据流服务器的管道损坏,进而导致客户端收到 504。

问题在使用 Spring Cloud Data Flow 时,有没有办法增加OkHTTPClient内部使用的 fabrics8io 的请求超时?

4

0 回答 0