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

时间:2020-04-26 15:00:24

标签: docker kubernetes jetty kubernetes-ingress

我有一个应用程序,在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

2 个答案:

答案 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这个问题应该可以解决