无法从Kubernetes中的其他服务访问Spring Boot后端服务

时间:2019-07-10 06:32:24

标签: spring-boot kubernetes microservices

我是Kubernetes的新手,我正在尝试创建一个简单的前端后端应用程序,其中前端和后端将拥有自己的服务。由于某种原因,我无法从前端服务中按其名称访问后端服务。

仅仅因为简单,前端服务就可以这样创建:
kubectl run curl --image=radial/busyboxplus:curl -i --tty

当我执行nslookup时,我得到以下信息:

[ root@curl-66bdcf564-rbx2k:/ ]$ nslookup msgnc-travel
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      msgnc-travel
Address 1: 10.100.171.209 msgnc-travel.default.svc.cluster.local

服务以其名称msgnc-travel可用,但是当我尝试卷曲它时:
curl msgnc-travel
它只是一直等待,没有收到响应。我也尝试过
curl 10.100.171.209curl msgnc-travel.default.svc.cluster.local,但我的行为相同

任何想法为何会发生此问题?

我已经通过使用Ingress成功地完成了一个“变通方法”,但是我很好奇为什么我不能仅通过提供名称来直接访问我的Spring Boot后端服务?

deployment.yml 如下:

apiVersion: apps/v1

kind: Deployment

metadata:
  name: msgnc-travel-deployment
  labels:
    name: msgnc-travel-deployment
    app: msgnc-travel-app

spec:
  template:
    metadata:
      name: msgnc-travel-pod
      labels:
        name: msgnc-travel-pod
        app: msgnc-travel-app

    spec:
      containers:
        - name: msgnc-travel
          image: bdjordjevic/msgnc-travel
          ports:
            - containerPort: 8080
  replicas: 1
  selector:
    matchExpressions:
      - {key: name, operator: In, values: [msgnc-travel-pod]}
      - {key: app, operator: In, values: [msgnc-travel-app]}

service.yml 看起来像这样:

apiVersion: v1

kind: Service

metadata:
  name: msgnc-travel
  labels:
    name: msgnc-travel-service
    app: msgnc-travel-app

spec:
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    name: msgnc-travel-pod
    app: msgnc-travel-app

1 个答案:

答案 0 :(得分:2)

您正在定义服务以监听8080端口。因此,您应该执行curl msgnc-travel:8080

我尝试运行wget,这是我得到的输出:

wget msgnc-travel:8080
Connecting to msgnc-travel:8080 (10.98.81.45:8080)
wget: server returned error: HTTP/1.1 404