spring-boot kubernetes无法访问GKE中部署的控制器端点

时间:2017-11-04 20:28:07

标签: spring google-app-engine kubernetes google-cloud-platform cloud

我正在尝试使用Google Kontainer引擎(GKE =>版本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地址我可以访问该服务? describe响应中的一个是内部IP。我也尝试使用集群主IP,但没有运气,它无法正常工作。

在实例中,我做了一个SSH并且卷曲它工作正常,

curl -X GET -H "Cache-Control: no-cache" "http://localhost:32432/sayHello"
Hello.Welcome to our site!!!!

但是不知道我必须使用哪个IP来从外部访问上述端点。

任何帮助或指示都应该是值得注意的。

1 个答案:

答案 0 :(得分:0)

  

另一个问题是,使用哪个IP地址我可以访问该服务? describe响应中的一个是内部IP。我也尝试使用集群主IP,但没有运气,它无法正常工作。

我认为那部分我可以帮助你。您的服务的type: NodePort意味着它正在您所看到的IP地址(和端口)上的集群中侦听:10.59.249.64:9085但它只能在外部< / em>端口30726上每个节点的IP地址上的群集

如果您希望Internet可以访问,则需要创建负载均衡器,将每个节点分配给所述负载均衡器,将流量定向到这些节点的端口30726。或者,正如大多数人在这种情况下所做的那样,使用type: LoadBalancer让GKE为您执行这些确切的步骤,as described in the documentation

另外,如果您使用的XX.XXX.XXX.XXXgcloud container cluster list中的https://XX.XXX.XXX.XXX相同,则难怪您会收到system:anonymous错误:这是API的URL你的Kubernetes主人,(除非极少数例外)不接受未经身份验证的请求。它旨在响应kubectl操作,与您在开始时创建的ServiceReplicationController非常相似。