我需要知道如何将我的Kubernetes集群连接到在Kubernetes集群外的docker映像中运行的外部Server数据库。
目前,我的集群中有两个正在运行的豆荚,每个荚中都有一个从asp.net核心应用程序中创建的不同映像。有一个完全独立的( Kubernetes之外,但在我的机器localhost,1433)本地运行的对接者映像,承载了一个Server数据库。我需要我的Kubernetes吊舱中的应用程序才能到达和操作数据库。我尝试过创建YAML文件并配置不同的端口,但我不知道如何使其工作,也不知道如何在设置它之后测试它是否实际工作。我需要准确的步骤/命令来创建能够将连接从集群中的映像路由到DB和back的服务。
理想情况下,我希望我的kubernetes集群中的应用程序能够操作我已经设置的Server (在集群之外运行,但在我的机器上本地运行)。
发布于 2019-06-13 17:56:39
从本地停靠程序运行时,连接字符串不是本地机器。这是当地的码头“世界”,正好运行在您的机器上。
host.docker.internal:1433
以上是码头集装箱与您的本地机器交谈。显然,根据您公开它的方式,端口可能是不同的。
.
如果您试图让正在运行的容器与sql-server对话,sql-server也在码头世界中运行,则连接字符串如下所示:
ServerName:
my-mssql-service-deployment-name.$_CUSTOMNAMESPACENAME.svc.cluster.local
其中$_CUSTOMNAMESPACENAME可能是“默认的”,但您可能运行的是不同的命名空间。
mssql service- deployment是您的部署的名称(我在这里对它进行了剪短)
注意这里没有端口号。
这里记录了这一点:
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#services
发布于 2019-07-02 09:48:07
问题可能在于你所提供的服务。ClusterIP使您能够在集群内的豆荚之间进行最简单的连接。要连接到外部服务,只需将服务种类的定义更改为NodePort。
尝试更改服务定义:
#Service created in an attempt to contact external SQL Server DB
apiVersion: v1
kind: Service
metadata:
name: ext-sql-service
spec:
type: NodePort
ports:
- port: 1433
targetPort: 1433并执行命令:
$ kubectl apply -f your_service_definition_file_name.yaml 请记住在正确的命名空间中运行此命令,其中配置了您的部署。
错误的做法是将一个环境变量覆盖到容器上。使用"docker“,将环境变量值传递给容器。
当然,在执行docker命令的上下文中
$ docker run -d -p 1433:1433 --name sql -v "c:/Temp/DockerShared:/host_mount" -e SA_PASSWORD="aPasswordPassword" -e ACCEPT_EULA=Y mcr.microsoft.com/mssql/server:2017-latest使db-密码可见是不安全的。利用库伯奈特的秘密。
您可以在这里找到更多信息:库伯奈特斯秘密。
https://stackoverflow.com/questions/56584616
复制相似问题