kubernetes Pod在“connection reset by peer”的活动探测失败后未重新启动

5m1hhzi4  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(209)

我得到了以下Pod,它始终无法通过“对等端重置连接”的活动探测,并被标记为不健康,但没有重新启动

146 Unhealthy: (combined from similar events): Liveness probe failed: Get "http://[ip address]:8080/q/health/live": read tcp [local node ip address]:54580->[ip address]:8080: read: connection reset by peer

只有当返回http状态503时,集群才重新启动pod。这是否是kubernetes liveness probes的预期行为,以及调整它以重新启动不接受连接的pod的方法?
需要注意的一点是,活动配置被设置为高间隔,每30秒只检查一次。此后,这一频率更高。在pod未重启的5小时时间范围内,未收到成功的穿刺针。

livenessProbe:
        failureThreshold: 5
        httpGet:
          path: /q/health/live
          port: http
          scheme: HTTP
        periodSeconds: 30
        successThreshold: 1
        timeoutSeconds: 30
        initialDelaySeconds: 30
      readinessProbe:
        failureThreshold: 5
        httpGet:
          path: /q/health/ready
          port: http
          scheme: HTTP
        periodSeconds: 30
        successThreshold: 1
        timeoutSeconds: 30
        initialDelaySeconds: 15

Pod是部署的一部分,而不是复制集,并且不存在poddisruptionbudget
expected:Pod在通过liveness配置标记为不健康后重新启动。发生了什么事:失败的吊舱被保留了5个小时。

yxyvkwin

yxyvkwin1#

如果与网络中对等方的TCP连接被对等方关闭,或者意外关闭,则会发生错误。
要解决此问题,请执行以下操作:
如果您尝试使用CPU限制执行后台工作,请尝试使用“CPU始终分配”CPU分配设置。
确保您处于出站请求超时范围内。如果您的应用程序将任何连接保持在超过此阈值的空闲状态,则网关需要获取该连接。
默认情况下,Cloud Run禁用TCP套接字选项keepalive。在Cloud Run中,没有直接的方法在服务级别配置keepalive选项,但是您可以在打开新的TCP套接字连接时通过提供正确的套接字选项为每个套接字连接启用keepalive选项,具体取决于您在应用程序中用于此连接的客户端库。
偶尔出站连接会由于基础设施更新而重置。如果您的应用程序重用长期连接,则建议您将应用程序配置为重新建立连接,以避免重用死连接。

相关问题