从Minikube内部访问外部SQL服务器时出错



我有一个外部SQL服务器(在可以从本地系统访问的互联网上(,我正试图从Minikube内部调用它。我做不到。我试过从Minikube 内调用外部服务

我得到的错误是"sqlalchemy.exc.OperationalError:(pymssql.OperationalError((20009,b'DB-Lib错误消息20009,严重性9:\n无法连接:自适应服务器不可用或不存在">


我已经创建了pod-->服务-->端点。我所有的集群都被入侵了。请参阅下面的代码,了解我所做的配置。

目前,我正在将DB HOST(1.1.1.1(作为环境变量传递给POD,在进行此配置后,我正在尝试传递服务名称(sql server(而不是DB主机名,这是正确的吗?此外,我无法从容器内部ping 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

我在我的minikube系统中复制了一个类似的场景,这个解决方案按描述工作。我将引导您完成设置以及如何解决此问题。

我有一个linux服务器(主机名http服务器(,并在其中安装了一个http服务器(apache2(,它提供一条helloworld消息:

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

现在我们确认我的服务可以从安装了minikube的机器上访问,让我们连接到minikube VM,检查我是否可以访问这个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

此命令将在ubuntu pod中创建并打开bash会话。

在我的情况下,我将安装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!

请跑进所有这些步骤,如果您在任何地方遇到问题,请告诉我。

相关内容

  • 没有找到相关文章

最新更新