Arhn - архитектура программирования

Ошибка доступа к внешнему серверу SQL изнутри Minikube

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

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


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

В настоящее время я передаю 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

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

У меня есть Linux-сервер (имя хоста http-server), и я установил на нем 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, давайте подключимся к виртуальной машине minikube и проверим, могу ли я получить доступ к этой http-службе:

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

$ curl 10.128.15.209
Hello World!

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

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

Мой манифест конечной точки выглядит так:

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!

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

20.03.2020
  • работает нормально. Это правильная установка. Произошла ошибка в конфигурации сети. Теперь это решено. Спасибо, что помогли мне. 20.03.2020
  • Рад, что это сработало, попробуйте принять ответ. 20.03.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..