无法从minikube集群内部的webapp访问NodePort服务,但可以从外部访问

时间:2019-05-31 19:07:29

标签: elasticsearch minikube

我使用在minikube上运行的NodePort类型安装了具有部署和服务的kubernetes elasticsearch(v.7.1.1)环境。当我点击kubectl get services时,我得到了相关行:

elasticsearch                NodePort    10.101.5.85      <none>        9200:31066/TCP               27m

如果我愿意

$curl http://$(minikube ip):31066

我得到了通常的elasticsearch页面。但是,如果我这样做

root@webapp-5489d8d6fd-2ml2w:/# curl http://localhost:9200

作为同一群集上的Web应用程序的根目录,我收到错误消息:

curl: (7) Failed to connect to localhost port 9200: Connection refused

任何人都可以暗示我出现问题的原因吗?

1 个答案:

答案 0 :(得分:0)

首先,您的elasticsearch服务为NodePort类型,端口为9200:31066/TCP。 这意味着elasticsearch使用端口9200,而NodePort使用31066端口。

1)卷曲http:// $(minikube ip):31066

MinikubeIP是您的节点ip。您可以使用$ kubectl describe node进行验证,因此,如果您使用port 31066,它将正确连接。

2)卷曲http://localhost:9200

您没有提供有关其他部署或Pod的任何信息,因此我假设您具有带有Pod的Elasticsearch部署。

如果您将在elasticsearch容器中执行$ curl http://localhost:9200,则它将起作用,因为elasticsearch在此容器内部(本地)中运行。

如果要从其他(非Elasticsearch Pod)中卷曲,则必须使用通过Elasticsearch端口创建的服务。 $ curl elasticsearch:9200$ curl 10.101.5.85:9200

在其他容器中,您也可以将NodeIPNodePort一起卷曲
$ curl $(minikube ip):31066与第1点相同。

使用完整链接: https://gardener.cloud/050-tutorials/content/howto/service-access/

希望有帮助!