我们在 k8s 集群 (v.1.17) 上使用 nginx (1.15.8.1) 作为入口控制器,由 rancher (2.5.7) 管理。
到目前为止,这工作得很好,但现在我们设置了一个自定义 API pod,可以通过 ingress 从外部访问。
现在,通过每秒在 API 上触发请求来对 API 进行一些负载测试,每两个请求随机返回“502 Bad Gateway”。但不是定期的。
<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>openresty/1.15.8.1</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
各自登录入口控制器:
2021/04/11 11:02:48 [error] 25430#25430: *55805583 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: xxx, server: xxx, request: "POST /api/v1/xxx HTTP/2.0", upstream: "http://xxx/api/v1/xxx", host: "xxx"
Run Code Online (Sandbox Code Playgroud)
我们在非 K8s 环境中运行与 docker 容器完全相同的容器,之前我们从未遇到过这个问题,所以目前我认为这不是容器/API 实现的问题。
我的想法是:
1- 抽象 API pod 的服务定义无法将流量路由到 pod,因此会回复 502
-> …