我有一个非常简单的基于HTML,javascript和一点点jquery,angularjs的Web应用程序。它已在Eclipse Jee和Tomcat上进行了本地测试,并且工作正常。而且它的映像在本地docker上运行良好。
我可以使用localhost:8080/xxxx
,127.0.0.1:8080/xxxx
,0.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
答案 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