Kubernetes используют внешние сервисы внутри Pod - PullRequest
0 голосов
/ 30 октября 2018

im Запуск Kubernetes (minikube) в Windows через Virtualbox. На моем хост-сервисе запущены службы, которые я не хочу размещать в своем кластере Kubernetes. Как я могу получить доступ к этим службам из моих модулей?

Я новичок в Kubernetes, я надеюсь, что эти вопросы не глупо задавать.

Я пытался создать конечную точку службы +, но она не работала:

kind: Endpoints
apiVersion: v1
metadata:
  name: vetdb
subsets:
- addresses:
  - ip: 192.168.99.100
  ports:
  - port: 3307

kind: Service
apiVersion: v1
metadata:
  name: vetdb
spec:
  selector:
    app: vetdb
  type: ClusterIP
  ports:
  - port: 3306
    targetPort: 3307

Я запустил образ Ubuntu внутри того же кластера, на котором модуль должен работать позже, и проверил соединение:

$ root@my-shell-7766cd89c6-rtxt2:/# curl vetdb:3307 --output test
Host '192.168.99.102' is not allowed to connect to this MariaDB serverroot@my-shell

Это тот же вывод, который я запускаю (кроме других Host-IP)

curl 192.168.99.100:3307

на моем хост-компьютере ==> Itworks.

Но я не могу получить доступ к хосту изнутри моих микросервисов, где мне действительно нужен доступ к URL.

$ kubectl get pods
NAME                        READY     STATUS             RESTARTS   AGE
eureka-77f949499-g2l82      1/1       Running            0          2h
my-shell-7766cd89c6-rtxt2   1/1       Running            0          2h
vet-ms-54b89f9c86-29psf     1/1       Running            10         18m
vet-ms-67c774fd9b-2fnjc     0/1       CrashLoopBackOff   7          18m

Ответ Curl, который я разместил выше, был от Pod: my-shell-7766cd89c6-rtxt2 Но мне нужно получить доступ к vetdb с vet-ms-*

$ kubectl logs -f vet-ms-67c774fd9b-2fnjc
...
Caused by: java.net.UnknownHostException: vetdb
...

Настройки URL Spring, которые я пробовал

spring.profiles.datasource.url: jdbc:mysql://vetdb:3307/vetdb?useSSL=false&allowPublicKeyRetrieval=true
spring.profiles.datasource.url: jdbc:mysql://vetdb:3306/vetdb?useSSL=false&allowPublicKeyRetrieval=true
spring.profiles.datasource.url: jdbc:mysql://vetdb/vetdb?useSSL=false&allowPublicKeyRetrieval=true

ребята



Edit: // я разрешил каждому хосту подключаться к БД, чтобы удалить эту ошибку

Host '192.168.99.102' is not allowed to connect to this MariaDB

но я все еще получаю Исключение Та же Неизвестная Хост внутри моих Микросервисов.

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, что тест изображений Ubuntu здесь наиболее информативен.

Из сообщения об ошибке я думаю, что проблема в конфиге MySQL. Вы должны настроить сервер на прослушивание порта IP-адреса вашего хоста (то есть не localhost или socketfile).

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

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