我有一个应用程序,在Jetty Server上运行并在端口8080上侦听。我已将其部署为容器。该应用程序运行正常,并且如果我从pod内卷曲-v http://127.0.0.1:8080,我将得到正确的响应。
我的豆荚里也有一个地址。让我们称之为10.1.2.3(假设)。如果我尝试执行curl -v http://10.1.2.3:8080,则会关闭连接。
我尝试将应用程序开始的地址更改为10.1.2.3,然后卷曲开始工作。但是,我觉得这违反了容器化的目的,因为我事先无法访问此IP。
我还有一个负载平衡服务,我将端口33000映射到服务端口8080。该服务被分配了34000的节点端口。由于此端口在本地docker上运行,因此我的目的是执行curl -v http://localhost:34000并到达我的应用程序,但这显然没有发生。
有人可以帮我做错什么吗?我对容器和服务的定义如下:
resource.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-service-dev-pod1
labels:
app: myapp-service-dev
component: myapp-service-dev
spec:
selector:
matchLabels:
app: myapp-service-dev-pod1
replicas: 2
template:
metadata:
labels:
app: myapp-service-dev-pod1
component: myapp-service-dev
spec:
volumes:
- name: shared-dev-data
emptyDir: {}
containers:
- name: myapp-service-dev-pod1
image: docker/my-apps/mybuild_service:9
ports:
- containerPort: 8080
volumeMounts:
- name: shared-dev-data
mountPath: /opt/myapp/jetty/logs
service.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service-dev-lb
labels:
app: myapp-service-dev
spec:
ports:
- port: 33000
protocol: TCP
name: http
targetPort: 8080
selector:
component: myapp-service-dev
type: LoadBalancer
答案 0 :(得分:3)
根据您的配置,该链接应位于:
http://localhost:33000/
或者您需要更改端口
- port: 33000 # external port
到端口:
- port: 8080 # external port
然后地址将更改为此:
http://localhost:8080/
根据您的“ Load Balancer”平衡类型,所有请求将被发送到具有LoadBalancer类型的服务端口,该服务端口又将请求发送到Pod的targetPort。
您可以找到有关您的余额类型here的更多信息。
答案 1 :(得分:2)
让码头使用者在0.0.0.0
而不是127.0.0.1
上进行收听。请检查this上的操作方法。通过connection closed
http://PODIP:8080
这个问题应该可以解决