为什么不能访问在Minikube中运行的gRPC REST服务?

时间:2019-03-04 01:08:11

标签: kubernetes grpc minikube

我最近一直在学习Kubernetes,只是遇到了这个小问题。对于某些健全性检查,这是我在本地运行的grpc应用程序的功能:

> docker run -p 8080:8080 -it olamai/simulation:0.0.1
  < omitted logs >
> curl localhost:8080/v1/todo/all
{"api":"v1","toDos":[{}]}

因此有效!我现在要做的就是将其部署在Minikube中并公开端口,以便可以对其进行调用。我的最终目标是将其部署到GKE或Azure群集并从那里进行调用(同样,只是学习并掌握所有内容)。
Here is the yaml I'm using to deploy to minikube

这就是我将其部署到minikube上的目的

> kubectl create -f deployment.yaml

然后我运行它以获取网址

> minikube service sim-service --url
http://192.168.99.100:30588

但是当我打电话给它时,会发生这种情况

> curl http://192.168.99.100:30588/v1/todo/all
curl: (7) Failed to connect to 192.168.99.100 port 30588: Connection refused

我在这里做什么错了?

编辑:我发现了,您应该能够在链接的文件中看到更新。我已将拉策略设置为“从不”,所以它已过期

我现在有一个新问题...我现在能够在minikube中创建部署(无NodePort),并且仍然可以对api进行调用...部署是否不需要NodePort服务来公开端口?

1 个答案:

答案 0 :(得分:2)

我检查了您的yaml文件,效果很好。但是只有我意识到,您为服务放置了两种类型,LoadBalancer和不需要的NodePort。 就像您从this documentation的LoadBalancer定义中检查一样,您将看到

  

LoadBalancer:使用云提供商的服务在外部公开服务   负载均衡器。 NodePort和ClusterIP服务,外部   负载均衡器会路由,会自动创建。

作为下一个问题的答案,您可能将type: LoadBalancer放在了部署yaml文件中,这就是为什么仍然能够看到NodePort的原因。 如果将type: ClusterIP放在Yaml中,则服务将仅在群集内公开,而您将无法在群集外访问服务。

来自同一documentation

  

ClusterIP:在群集内部IP上公开服务。选择这个   值使服务只能从群集内访问。这个   是默认的ServiceType