kubernetes - kubernetes pod 尝试自行连接并失败,因为 http://localhost:
问题描述
我们有基于 helm 的 k8s 应用程序,其中一个 pod(名为“auth”)具有调用自身执行 CRUD 操作以重置密码的代码。
由于它在调用自己,因此此操作使用端点 URL http://localhost:8081/API/authorizations
问题: 在本地 k8s 集群上部署相同的应用程序时,身份验证 pod 无法自行连接。
错误:
{"api":"external","component":"auth","delay":900000000,"error":"Post http://localhost:8081/api/authorizations: dial tcp 10.250.44.31:8081: connect: connection refused","insecureSkipVerify":false,"message":"Request failed, retrying","method":"POST","requestID":"fb9475e8-bcf9-4924-8339-d3d21922f357","severity":"debug","timestamp":"2020-02-10T11:54:29Z","url":"http://localhost:8081/api/authorizations"}
注意:10.250.44.31:8081 是集群端点 IP 地址
预期行为:在AWS eks 或 azure aks上运行此应用程序时,它可以正常运行所需的操作。
问题:
1) 在 pod 内使用 localhost 端点时,pod 连接到 k8s 主服务器的代理 IP 是否是预期行为?
2) 对于 AWS eks 和 azure aks,它仅指 pod URL,这是否意味着必须对我们的集群网络进行故障排除才能解决此问题?
感谢提前添加Δ点..
解决方案
1) 在 pod 内使用 localhost 端点时,pod 连接到 k8s 主服务器的代理 IP 是否是预期行为?
否,预计不会连接到 Master API Server 进行 localhost 通信
2) 对于 AWS eks 和 azure aks,它仅指 pod URL,这是否意味着我们的集群网络必须进行故障排除才能解决此问题?
执行到 pod
kubectl exec -it "pod-name" -n "命名空间" bash
进入 pod 后,检查是否某个进程正在侦听端口8081
ps -ef | grep "8081"
如果您发现所需的进程在端口上运行和侦听,则 curl 端点并检查您是否收到响应