Невозможно получить доступ к бэкэнд-сервису Spring Boot из другого сервиса в Kubernetes - PullRequest
1 голос
/ 10 июля 2019

Я новичок в 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.209 и curl msgnc-travel.default.svc.cluster.local но у меня такое же поведение

Есть идеи, почему возникает эта проблема?

Мне удалось успешно выполнить «обходной путь» с помощью Ingress, но мне любопытно, почему я не могу получить доступ к своему внутреннему сервису Spring Boot напрямую, просто указав его имя?

deploy.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 Ответ

2 голосов
/ 10 июля 2019

Вы определяете службу для прослушивания на порту 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...