Микросервис наносится на кубернетес, но не дает желаемого результата - PullRequest
2 голосов
/ 29 марта 2020

Я успешно развернул микросервис [весеннее приложение] в облачном движке Google Kubernetes. Но конечная точка не работает.

Dockerfile enter image description here

развертывание. yml

apiVersion: apps/v1
kind: Deployment
metadata:
 name: user-management-deployment
 labels:
  app: happy-paws  
spec:
 replicas: 3
 selector:
  matchLabels:
   name: user-management-deployment
   app: happy-paws
 template:
  metadata:
   name: user-management-deployment
   labels:
    name: user-management-deployment
    app: happy-paws
  spec:
   containers:
    - name: user-management
      image: docker/user-management
      ports:
       - containerPort: 9106

Service.yml

apiVersion: v1
kind: Service
metadata:
  name: user-management
  labels:
   name: user-management-service
   app: happy-paws
spec:
 type: LoadBalancer
 ports:
  - port: 9106
    targetPort: 9106
 selector:
  name: user-management-pod
  app: happy-paws

application.properties enter image description here, пожалуйста, помогите мне разобраться в проблеме.

ОБНОВЛЕНИЕ:

После обновления порта приложение начало работать

Работающие службы: user-order-detail LoadBalancer kubernetes ClusterIP управление заказами LoadBalancer управление пользователями LoadBalancer

пользователь- Детали заказа попадают в конечную точку, чтобы получить всех пользователей. Я получаю эту ошибку: Нет совпадений для имени виртуального хоста: управление пользователями **

String url = "user-management/user";
        InstanceInfo instance = eurekaClient.getNextServerFromEureka("user-management", false);
        Object response = restTemplate.getForObject(instance.getHomePageUrl() + url +"/" + userId, Object.class);

Ответы [ 2 ]

3 голосов
/ 29 марта 2020

Постарайтесь понять, что означает сервис в терминологии kubernetes. На высоком уровне это может быть объяснено как способ представить ваше приложение, которое выполняется внутри контейнера (которое работает внутри модуля (которое работает внутри сети)), внешнему миру.

Каждый из этих блоков может иметь свою собственную сеть. Отсюда и концепция Сервиса. Таким образом, вы можете указать, какой порт контейнера должен быть представлен миру, и как он должен быть представлен (тип службы, в вашем случае это LoadBalancer).

Так что, если вам нужен доступ к приложению, запущенному через порт 9106 внутри контейнера, вам нужно открыть этот порт.

spec:
 type: LoadBalancer
 ports:
  - port: 9106
    targetPort: 9106
1 голос
/ 29 марта 2020

попробуйте изменить все порты на 9106

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...