gpt4 book ai didi

sql-server - 如何使用 docker desktop 将 kubernetes 集群连接到外部 SQL Server 数据库?

转载 作者:行者123 更新时间:2023-12-03 10:02:36 24 4
gpt4 key购买 nike

我需要知道如何将我的 Kubernetes 集群连接到在 Kubernetes 集群外部的 docker 镜像中运行的外部 SQL Server 数据库。

我的集群中目前有两个 pod 正在运行,每个 pod 中都有一个从 asp.net 核心应用程序创建的不同图像。有一个完全独立的(在 Kubernetes 之外,但在我的机器 localhost,1433 上本地运行)托管 SQL Server 数据库的 docker 镜像。我需要 Kubernetes pod 中的应用程序能够访问和操作该数据库。我已经尝试创建一个 YAML 文件并配置不同的端口,但我不知道如何让它工作,或者如何在设置后测试它是否真的工作。我需要确切的步骤/命令来创建能够将连接从集群中的图像路由到数据库并返回的服务。

  • Docker SQL Server 创建(提升的 powershell/docker 桌面):
    docker pull mcr.microsoft.com/mssql/server:2017-latest

    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
  • 定义.yaml
    #Pods in the cluster
    apiVersion: v1
    kind: Pod
    metadata:
    name: pod-1
    labels:
    app: podnet
    type: module
    spec:
    containers:
    - name: container1
    image: username/image1

    ---

    apiVersion: v1
    kind: Pod
    metadata:
    name: pod-2
    labels:
    app: podnet
    type: module
    spec:
    containers:
    - name: container2
    image: username/image2

    ---
    #Service created in an attempt to contact external SQL Server DB
    apiVersion: v1
    kind: Service
    metadata:
    name: ext-sql-service
    spec:
    ports:
    - port: 1433
    targetPort: 1433
    type: ClusterIP
    ---
    apiVersion: v1
    kind: Endpoints
    metadata:
    name: ext-sql-service
    subsets:
    - addresses:
    - ip: (Docker IP for DB Instance)
    ports:
    - port: 1433

  • 理想情况下,我希望我的 kubernetes 集群中的应用程序能够操作我已经设置的 SQL Server(在集群外部但在我的机器上本地运行)。

    最佳答案

    从本地 docker 运行时,您的连接字符串不是您的本地机器。
    它是本地 docker “world”,恰好在您的机器上运行。

    主机.docker.internal:1433

    以上是 docker 容器与您的本地机器对话。显然,端口可能会根据您公开它的方式而有所不同。

    ……

    如果您试图让正在运行的容器与也在 docker 世界中运行的 sql-server 通信,则该连接字符串如下所示:

    服务器名称:

    my-mssql-service-deployment-name.$_CUSTOMNAMESPACENAME.svc.cluster.local

    其中 $_CUSTOMNAMESPACENAME 可能是“默认”,但您可能正在运行不同的命名空间。

    my-mssql-service-deployment-name 是您的部署的名称(我在这里 stub )

    注意这里没有端口号。

    这记录在这里:

    https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#services

    关于sql-server - 如何使用 docker desktop 将 kubernetes 集群连接到外部 SQL Server 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56584616/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com