无法达到LoadBalancer服务

时间:2019-07-11 22:04:40

标签: kubernetes google-kubernetes-engine

我有一个非常简单的基于HTML,javascript和一点点jquery,angularjs的Web应用程序。它已在Eclipse Jee和Tomcat上进行了本地测试,并且工作正常。而且它的映像在本地docker上运行良好。

我可以使用localhost:8080/xxxx127.0.0.1:8080/xxxx0.0.0.0:8080在浏览器上进行访问。但是,当我部署到Google Kubernetes时,如果使用浏览器上的外部IP,则会收到“无法访问此站点”的信息。我可以ping通我的外部IP,但是curl无法正常工作。这不是防火墙问题,因为dockerhub的示例投票应用程序在我的Kubernetes上运行良好。

我的Dockerfile:

FROM tomcat:9.0
ADD GeoWebv3.war /usr/local/tomcat/webapps/GeoWeb.war
expose 8080

我的豆荚豆

apiVersion: v1
kind: Pod
metadata:   
   name: front-app-pod  
labels:      
   name: front-app-pod     
   app: demo-geo-app
spec:   
   containers:   
      - name: front-app     
      image: myrepo/mywebapp:v2    
   ports:    
     - containerPort: 80

我的服务Yaml

apiVersion: v1
kind: Service
metadata:   
   name: front-service  
labels:     
   name: front-service     
   app: demo-geo-app
spec:  
   type: LoadBalancer   
ports:  
  - port: 80   
  targetPort: 80  
selector:     
   name: front-app-pod      
   app: demo-geo-app

1 个答案:

答案 0 :(得分:1)

这样更改您的Yamls

apiVersion: v1
kind: Service
metadata:   
   name: front-service  
labels:     
   name: front-service     
   app: demo-geo-app
spec:  
   type: LoadBalancer   
   ports:  
   - port: 80   
     targetPort: 8080
   selector:     
     name: front-app-pod      
     app: demo-geo-app
apiVersion: v1
kind: Pod
metadata:   
   name: front-app-pod  
labels:      
   name: front-app-pod     
   app: demo-geo-app
spec:   
   containers:   
      - name: front-app     
      image: myrepo/mywebapp:v2    
   ports:    
     - containerPort: 8080

您在Docker映像中公开了端口8080。因此,在服务中,您必须说targetPort: 8080将来自端口80的负载均衡器的流量重定向到容器的端口8080