无法访问负载均衡器服务



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

我可以使用localhost:8080/xxxx127.0.0.1:8080/xxxx0.0.0.0:8080在浏览器上访问。但是当我部署到谷歌 Kubernetes 时,如果我在浏览器上使用外部 IP,我会得到"无法访问此站点"。我可以 ping 我的外部 IP,但卷曲不起作用。这不是防火墙问题,因为来自 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

我的服务 亚姆

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

像这样改变你的 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

最新更新