我有一个试图从Minikube内部调用的外部SQL服务器(在可从本地系统访问的Internet上)。我无法做到这一点。我试过了 Calling an external service from within Minikube
我得到的错误是“ sqlalchemy.exc.OperationalError:(pymssql.OperationalError)(20009,b'DB-Lib错误消息20009,严重性9:\ n无法连接:Adaptive Server不可用或没有不存在“
我已经创建了pod->服务->端点。我所有的集群都处于侵入状态。请参阅以下代码,了解我已完成的配置。
当前,我将DB HOST(1.1.1.1)作为环境变量传递给POD,并且在此配置之后,我试图传递服务名(sql-server)而不是DB Host Name是否正确? 而且,我无法从容器内部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
答案 0 :(得分:1)
我在我的minikube系统中重现了类似的情况,并且该解决方案按上述方式工作。我将引导您完成安装程序以及如何解决此问题。
我有一个linux服务器(主机名为http-server),并在其上安装了一个http服务器(apache2),该服务器提供问候消息:
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容器内创建并打开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!
请执行所有这些步骤,如果您在任何地方都遇到问题,请告诉我。