kubernetes pod尝试连接自身,但失败,因为http:// localhost:

问题描述 投票:0回答:2

我们有一个基于头盔的k8s应用程序,其中一个Pod(名为“ auth”)具有调用其自身进行CRUD操作以重置密码的代码。

由于正在调用自身,因此此操作正在使用端点URL http://localhost:8081/API/authorizations

问题:在本地k8s集群上部署相同的应用程序时,auth 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主服务器ha代理IP的预期行为是什么?

2)对于AWS eks和azure aks来说,它仅指的是Pod URL,是否意味着必须对群集网络进行故障排除才能解决此问题?

感谢提前添加了∆点。

kubernetes kubernetes-helm kubernetes-ingress kubernetes-pod
2个回答
1
投票

1)在pod内使用localhost端点时,pod连接到k8s主服务器ha代理IP的预期行为是什么?

否,不希望连接到Master API Server进行localhost通信

2)对于AWS eks和azure aks,它仅指的是pod URL,是否意味着必须对群集网络进行故障排除才能解决此问题?

Exec进入广告连播

kubectl exec -it“ pod-name” -n“ namespace” bash

一旦在Pod内,检查某个进程是否正在侦听端口8081

ps -ef | grep“ 8081”

如果发现所需的进程正在运行并正在端口上侦听,请卷曲端点并检查是否返回响应

curl -v http://localhost:8081/API/authorizations


0
投票

正在运行的图像上/etc/hosts的内容是什么?我猜想它的配置错误或丢失,因此容器过程不是从那里获取正确的localhost IP,而是向域名服务器询问。可能您的api服务器也是您的群集DNS,当被问及本地主机时,它会使用自己的IP进行响应。

作为一种快速的解决方法,您可以将程序更改为直接使用127.0.0.1而不是localhost

© www.soinside.com 2019 - 2024. All rights reserved.