【问题标题】:GraphQL server to server connection timeout on KubernetesKubernetes 上的 GraphQL 服务器到服务器连接超时
【发布时间】:2023-11-16 17:32:01
【问题描述】:

我目前在 gcloud kubernetes 平台上运行 3 个服务。

前端通过 graphql 查询连接到后端并请求一些数据。这个查询被转发到另一个负责特定类型数据的服务,即“面包”。

所以你有前端 (react/next.js) -> 后端 #1 (graphql) -> 后端 #2 (graphql)

所有这些都可以在集群内通信,我可以通过“kubectl logs podname”查看日志。

日志基本上说:

  1. 后端 #1:收到查询
  2. 后端#2:收到查询(这是查询数据库的地方)。
  3. 后端#1:

    ,"level":50,"msg":"从breadservice获取面包失败。FetchError: 对http://bread-service/graphql的请求失败,原因:connect ETIMEDOUT some.ip.address:15\n

我不确定为什么会发生此超时错误。所有服务都可以成功通信。

【问题讨论】:

    标签: kubernetes gcloud graphql-js


    【解决方案1】:

    我建议同样使用 apollo-gateway,您可以找到详细信息 here,这将在中间添加一个网关层,您可以在其中定义应该相互通信的所有服务的 URL。

    只需通过入口公开网关。

    在上述情况下,我猜你缺少服务的端口号

    http://bread-service:port/graphql 
    

    试试这个,我想这应该可以工作。

    但是看看那个链接,对于看起来很适合实现的微服务,我也在探索同样的方法

    【讨论】: