Kubernetes (Minikube): связь между клиентом и сервером - PullRequest
0 голосов
/ 05 июня 2018

Я управляю простым весенним микросервисным проектом с Minikube.У меня есть два проекта: lucky-word-client (на порту 8080) и lucky-word-server (на порту 8888).Но я не могу связать клиента с сервером.Фактически, если lucky-word-client связывается с lucky-word-server, результатом будет слово «Evviva», иначе слово «Default».Когда я запускаю на терминале: minikube service lucky-client вывод равен Default, а не Evviva.

Это файл Dockerfile сервера lucky-word:

FROM frolvlad/alpine-oraclejdk8 

ADD build/libs/common-config-server-0.0.1-SNAPSHOT.jar common-config-server.jar

EXPOSE 8888

ENTRYPOINT ["/usr/bin/java", "-Xmx128m", "-Xms128m"]

CMD ["-jar", "common-config-server.jar"]

Это файл Dockerfileклиента счастливого слова:

FROM frolvlad/alpine-oraclejdk8 

ADD build/libs/lucky-word-client-0.0.1-SNAPSHOT.jar lucky-word-client.jar

EXPOSE 8080

ENTRYPOINT ["/usr/bin/java", "-Xmx128m", "-Xms128m"]

CMD ["-jar", "-Dspring.profiles.active=italian", "lucky-word-client.jar"]

Это развертывание сервера счастливого слова:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: lucky-server
spec:
  selector:
      matchLabels:
        app: lucky-server
  replicas: 1
  template:
    metadata:
      labels:
        app: lucky-server
    spec:
      containers:
        - name: lucky-server
          image: lucky-server-img
          imagePullPolicy: Never
          ports:
            - containerPort: 8888

Это сервис сервера счастливого слова:

kind: Service
apiVersion: v1
metadata:
  name: lucky-server
spec:
  selector:
    app: lucky-server
  ports:
  - protocol: TCP
    port: 8888
  type: NodePort

Это развертывание клиента счастливых слов:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: lucky-client
spec:
  selector:
      matchLabels:
        app: lucky-client
  replicas: 1
  template:
    metadata:
      labels:
        app: lucky-client
    spec:
      containers:
        - name: lucky-client
          image: lucky-client-img
          imagePullPolicy: Never
          ports:
            - containerPort: 8080

Это служба клиента счастливых слов:

kind: Service
apiVersion: v1
metadata:
  name: lucky-client
spec:
  selector:
    app: lucky-client
  ports:
  - protocol: TCP
    port: 8080
  type: NodePort

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Как сказано в @uren, вы должны указать целевой порт в определении службы.

И вам нужно изменить URL-адрес конечной точки сервера, который клиент вызывает, чтобы отразить minikube_host_ip.Есть несколько способов добиться этого.Наивный метод был бы следующим.

Измените службу Kubernetes, чтобы сервер имел статический Nodeport следующим образом:

kind: Service
apiVersion: v1
metadata:
  name: lucky-server
spec:
  selector:
    app: lucky-server
  ports:
  - protocol: TCP
    port: 8080
    nodePort: 32002
  type: NodePort

А в коде вашего клиента просто измените конечную точку сервера следующим образом: http://{minikube_host_ip}:32002 Замените свой{minikube_host_ip} с ip-адресом хоста minikube здесь.

Но если вы не хотите жестко кодировать ip minikube, вы можете добавить его в качестве переменной среды в вашем сценарии развертывания Kuberenetes.И эта переменная окружения должна быть записана в вашем файле Docker.

0 голосов
/ 05 июня 2018

Ваши службы сейчас отправляют запросы на порт 80.Вам необходимо указать параметр targetPort.Должно выглядеть так:

kind: Service
apiVersion: v1
metadata:
  name: lucky-server
spec:
  selector:
    app: lucky-server
  ports:
  - protocol: TCP
    targetPort: 8888  #this is your container port. where to send the requests
    port: 8888   #this is the service port. it is running on svc-ip:8888
  type: NodePort

Вы должны сделать то же самое с другим сервисом.Также проверьте сервисный порт.Теперь он на 8080 и 8888. Возможно, вы нажали на них порт 80.

Возможно, есть и другие проблемы, но сейчас они наверняка вызывают проблемы.

...