Ошибка доступа к внешнему SQL серверу изнутри Minikube - PullRequest
1 голос
/ 20 марта 2020

У меня есть внешний SQL сервер (на Inte rnet, доступный из моей локальной системы), который я пытаюсь вызвать изнутри Minikube. Я не могу этого сделать. Я попытался Вызов внешней службы из Minikube

Я получаю ошибку "sqlalchemy.ex c .OperationalError: (pyms sql .OperationalError) (20009, сообщение об ошибке b'DB-Lib 20009, серьезность 9: \ nНе удается подключиться: Adaptive Server недоступен или не существует "


Я уже создал службу pod -> -> Конечные точки. Все мои кластеры находятся под входом. Пожалуйста, посмотрите приведенный ниже код для конфигурации, которую я выполнил.

В настоящее время я передаю DB HOST (1.1.1.1) в качестве переменной среды для POD и после этой конфигурации я пытаюсь передать имя службы (sql -server) вместо имени хоста БД, это правильно? Более того, я не могу пропинговать IP изнутри контейнера.

Может кто-нибудь, пожалуйста, помогите мне.

apiVersion: v1
kind: Endpoints
metadata:
  name: sql-server
subsets:
  - addresses:
      - ip: 1.1.1.1
    ports:
      - port: 1433
apiVersion: v1
kind: Service
metadata:
  name: sql-server
spec:
  type: ClusterIP
  ports:
    - port: 1433
      targetPort: 1433

1 Ответ

1 голос
/ 20 марта 2020

Я воспроизвел похожий сценарий в моей системе мини-кубов, и это решение работает, как описано. Я проведу вас через настройку и как устранить эту проблему.

У меня есть linux сервер (имя хоста http-сервер), и я установил на него http-сервер (apache2), который отправляет сообщение hello world:

user@http-server:~$ netstat -tan | grep ::80
tcp6       0      0 :::80                   :::*                    LISTEN     
user@minikube-server:~$ curl 10.128.15.209
Hello World!

Теперь, когда мы подтвердил, что моя служба доступна с компьютера, на котором установлен мини-куб, позволяет подключиться к виртуальной машине minikube и проверить, могу ли я получить доступ к этой службе http:

user@minikube-server:~$ minikube ssh
                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ curl 10.128.15.209
Hello World!

Отлично! Это выглядит хорошо. Если вы не можете получить доступ к своему сервису здесь, вы должны проверить свою сеть, что-то мешает вашему серверу minikube взаимодействовать с вашим сервисом.

Теперь давайте выйдем из этого мини-куба s sh и создадим нашу конечную точку:

Мой манифест конечной точки выглядит следующим образом:

apiVersion: v1
kind: Endpoints
metadata:
  name: http-server
subsets:
  - addresses:
      - ip: 10.128.15.209
    ports:
      - port: 80
user@minikube-server:~$ kubectl apply -f http-server-endpoint.yaml
endpoints/http-server configured

Давайте создадим нашу сервис:

apiVersion: v1
kind: Service
metadata:
  name: http-server
spec:
  ports:
    - port: 80
      targetPort: 80
user@minikube-server:~$ kubectl apply -f http-server-service.yaml
service/http-server created

Проверка, существует ли наш сервис, и сохраните его clusterIP для использования в письмах:

user@minikube-server:~$$ kubectl get service
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
http-server   ClusterIP   10.96.228.220   <none>        80/TCP    30m
kubernetes    ClusterIP   10.96.0.1       <none>        443/TCP   10d

Теперь пришло время проверить, можем ли мы получить доступ к нашему сервису из модуля. :

kubectl run ubuntu -it --rm=true --restart=Never --image=ubuntu bash

Эта команда создаст и откроет сеанс bash внутри модуля ubuntu.

В моем случае я установлю curl, чтобы проверить, могу ли я получить доступ к своему http-серверу. Вам может потребоваться установить mysql:

root@ubuntu:/# apt update; apt install -y curl

Проверка соединения с моей службой с помощью clusterIP:

root@ubuntu:/# curl 10.128.15.209:80
Hello World!

И, наконец, использование имени службы (DNS):

root@ubuntu:/# curl http-server
Hello World!

Пожалуйста, выполните все эти шаги и дайте мне знать, если у вас возникли проблемы с любым из них и где.

...