【发布时间】:2020-04-26 15:00:24
【问题描述】:
我有一个应用程序,在 Jetty Server 上运行并侦听端口 8080。我已将其部署为容器。应用程序运行正常,如果我在 pod 中执行 curl -v http://127.0.0.1:8080,我会得到正确的响应。
我的 pod 也有一个地址。让我们称之为 10.1.2.3(假设)。如果我尝试执行 curl -v http://10.1.2.3:8080,我会关闭连接。
我尝试将我的应用程序启动的地址更改为 10.1.2.3,然后 curl 工作。但是,我觉得这违背了容器化的目的,因为我事先无法访问该 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
【问题讨论】:
标签: docker kubernetes jetty kubernetes-ingress