[英]Spring-boot microservice application deployed with docker and kubernetes: Services not communicating
[英]spring-boot kubernetes cannot access the controller endpoint deployed in GKE
我正在尝试使用Google Kontainer引擎(GKE => version 1.7.8-gke.0)在kubernetes中部署spring-boot应用程序。我已经创建了复制控制器和服务。 复制控制器和服务已成功创建。 请找到以下输出作为参考,
描述服务
kubectl describe svc spring-boot-k8-service
Name: spring-boot-k8-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=spring-boot-k8
Type: NodePort
IP: 10.59.249.64
Port: <unset> 9085/TCP
TargetPort: 9085/TCP
NodePort: <unset> 30726/TCP
Endpoints: 10.56.0.5:9085,10.56.1.3:9085,10.56.2.7:9085
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
我这里有几个问题,
群集详细信息
$ gcloud container clusters list
NAME ZONE MASTER_VERSION MASTER_IP MACHINE_TYPE
NODE_VERSION NUM_NODES STATUS
spring europe-west1-d 1.7.8-gke.0 XX.XXX.XXX.XXX g1-small
1.7.8-gke.0 3 RUNNING
当我点击** https://xx.xxx.xxx.xxx **时,它不会弹出用户名/密码对话框,而是出现以下错误,
User "system:anonymous" cannot get path "/".: "No policy matched.\\nUnknown user \\"system:anonymous\\""
另一个问题是,我可以使用哪个IP地址访问服务? 描述响应中的一个是内部IP。 我也尝试过使用群集主IP,但是运气不好。
在实例内部,我执行了SSH并将curl正常运行,
curl -X GET -H "Cache-Control: no-cache" "http://localhost:32432/sayHello"
Hello.Welcome to our site!!!!
但是不知道我必须使用哪个IP来从外部访问上述端点。
任何帮助或指示都应该是可理解的。
另一个问题是,我可以使用哪个IP地址访问服务? 描述响应中的一个是内部IP。 我也尝试过使用群集主IP,但是运气不好。
我想那部分我可以为您提供帮助。 type: NodePort
服务的type: NodePort
表示它正在群集内部的IP地址(和端口)上侦听,您将看到:10.59.249.64:9085,但只能在群集外部的30726端口上每个节点的IP地址上访问它
如果希望Internet可以访问它,则需要创建一个负载均衡器,将每个节点分配给所述负载均衡器,将流量定向到那些节点的端口30726。 或者,就像大多数人在这种情况下所做的那样,使用以下type: LoadBalancer
让GKE为您执行这些确切步骤, 如文档中所述
另外,如果您从gcloud container cluster list
中使用的XX.XXX.XXX.XXX
与https://XX.XXX.XXX.XXX
gcloud container cluster list
相同,那么也难怪您会遇到system:anonymous
错误:那就是API您的Kubernetes主服务器的URL(很少例外)不接受未经身份验证的请求。 它旨在响应kubectl
动作,这与您在一开始所说的创建Service
和ReplicationController
非常相似。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.