我在我们的项目中发现了一个问题,在K8s集群中使用Nodejs编写的不同微服务有时由于名称解析错误而导致http调用出错。
例如,当一个服务试图调用同一命名空间中另一个名为crud-service的服务时,会出现一个异常:
Error: getaddrinfo ENOENT crud-service
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:26)
at GetAddrInfoReqWrap.callbackTrampoline (node:internal/async_hooks:130:17)
到目前为止,我们可以说:
- 这种情况偶尔发生,没有明确的原因。
- 如果我们尝试从pod解析主机crud-service,命令
nslookup crud-service
工作正常。 - 此问题发生在许多Pod上,当我们尝试访问群集外部的主机时也是如此
- 我们不认为这个问题与DNS服务器有关,在这种情况下,我们应该有一个EAI_AGAIN错误,如果我们调用一个无效的主机,我们应该有一个ENOTFOUND错误
你有办法解决这个问题吗?你知道如何知道ENOENT错误的原因吗?
谢谢你
1条答案
按热度按时间py49o6xq1#
我们找到了一个解决方案,即在群集上禁用Dynatrace。我们正在进一步调查。