我使用在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
任何人都可以暗示我出现问题的原因吗?
答案 0 :(得分:0)
首先,您的elasticsearch服务为NodePort
类型,端口为9200:31066/TCP
。
这意味着elasticsearch使用端口9200
,而NodePort
使用31066
端口。
1)卷曲http:// $(minikube ip):31066
MinikubeIP是您的节点ip。您可以使用$ kubectl describe node
进行验证,因此,如果您使用port 31066
,它将正确连接。
您没有提供有关其他部署或Pod的任何信息,因此我假设您具有带有Pod的Elasticsearch部署。
如果您将在elasticsearch容器中执行$ curl http://localhost:9200
,则它将起作用,因为elasticsearch在此容器内部(本地)中运行。
如果要从其他(非Elasticsearch Pod)中卷曲,则必须使用通过Elasticsearch端口创建的服务。
$ curl elasticsearch:9200
或$ curl 10.101.5.85:9200
在其他容器中,您也可以将NodeIP
与NodePort
一起卷曲
$ curl $(minikube ip):31066
与第1点相同。
使用完整链接: https://gardener.cloud/050-tutorials/content/howto/service-access/
希望有帮助!