我有一个外部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!
请跑进所有这些步骤,如果您在任何地方遇到问题,请告诉我。