微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kubernetes pod 间端口耗尽

如何解决Kubernetes pod 间端口耗尽

我有一个带 3 个容器的吊舱。

  1. .Net 核心 REST 微服务
  2. .Net core 反向代理
  3. Istio 代理

流量进入反向代理,经过验证,然后代理到微服务上。这是我使用最频繁的服务,运行大约一天后开始出现此错误

System.Net.Http.HttpRequestException: Cannot assign requested address
 ---> System.Net.sockets.socketException (99): Cannot assign requested address
   at System.Net.Http.ConnectHelper.ConnectAsync(String host,Int32 port,CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host,CancellationToken cancellationToken)
   at System.Net.Http.httpconnectionPool.ConnectAsync(HttpRequestMessage request,Boolean allowHttp2,CancellationToken cancellationToken)
   at System.Net.Http.httpconnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request,CancellationToken cancellationToken)
   at System.Net.Http.httpconnectionPool.GethttpconnectionAsync(HttpRequestMessage request,CancellationToken cancellationToken)
   at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage request,Boolean doRequestAuth,CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask,HttpRequestMessage request,CancellationTokenSource cts,Boolean disposeCts)

重新启动 Pod 是我现在唯一的解决方法。我一直在查看节点上的 tcp 统计信息,但是这没有意义,因为杀死 pod 并重新启动会使问题消失。

我还使用最佳实践在 .net core 中使用了 httpclient,没有任何变化。

如有任何想法,我们将不胜感激。

解决方法

进一步收集线索后,我了解到这些错误仅在我们的 REST 微服务重新启动时才会出现(由于内存泄漏)。这个错误在上下文中是有道理的,我高估了问题的严重性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。