我最近一直在学习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服务来公开端口?
答案 0 :(得分:2)
我检查了您的yaml文件,效果很好。但是只有我意识到,您为服务放置了两种类型,LoadBalancer
和不需要的NodePort
。
就像您从this documentation的LoadBalancer定义中检查一样,您将看到
LoadBalancer:使用云提供商的服务在外部公开服务 负载均衡器。 NodePort和ClusterIP服务,外部 负载均衡器会路由,会自动创建。
作为下一个问题的答案,您可能将type: LoadBalancer
放在了部署yaml文件中,这就是为什么仍然能够看到NodePort的原因。
如果将type: ClusterIP
放在Yaml中,则服务将仅在群集内公开,而您将无法在群集外访问服务。
来自同一documentation:
ClusterIP:在群集内部IP上公开服务。选择这个 值使服务只能从群集内访问。这个 是默认的ServiceType