无法在 Kubernetes 中调用我的负载平衡服务



我有一个应用程序,在Jetty Server上运行,在端口8080上侦听。我已将其部署为容器。应用程序运行正常,如果我从 pod 中执行 curl -v http://127.0.0.1:8080,我会得到正确的响应。

我的豆荚也有一个地址。我们称之为 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 并到达我的应用程序,但这显然没有发生。

有人可以帮忙解决我做错了什么吗?我对容器和服务的定义如下:

资源.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

根据您的配置,该链接应位于:

http://localhost:33000/

或者您需要更改端口

- port: 33000 # external port

到端口:

- port: 8080 # external port

然后地址将更改为:

http://localhost:8080/

根据您的"负载均衡器"平衡类型,所有请求都将发送到具有负载均衡器类型的服务端口,而该服务端口又会将请求发送到 Pod 的目标端口。

您可以在此处找到有关平衡类型的更多信息。

让码头收听0.0.0.0而不是127.0.0.1检查一下如何做到这一点。这应该可以解决通过http://PODIP:8080访问它时connection closed问题

相关内容

  • 没有找到相关文章

最新更新