MySQL 来自 Docker/Kubernetes 的连接与连接字符串

MySQL Connection from Docker/Kubernetes with Connection String

开发 ASP.NET 核心 3.0 应用程序,具有集中式 MySQL 数据库。

我正在使用连接字符串,如下所示:

Server=mysql;Database=db-name;Uid=User;Pwd=Pass;SslMode=Preferred;persistsecurityinfo=false;

"mysql" 是一个内部 DNS 记录,它指向中央 MySQL 服务器。 在 Visual Studio 中,它工作正常。

现在想部署到kubernetes

我已经用 MSSQL 成功地做到了。我在 kubernetes 中创建了一个端点(ep),指向正确的 IP:

Name:         mysql
Namespace:    my_namespace
Labels:       <none>
...
Subsets:
  Addresses:          192.168.6.200
  NotReadyAddresses:  <none>
  Ports:
    Name   Port  Protocol
    ----   ----  --------
    mysql  3306  TCP

Events:  <none>

并且我创建了相应的 Kubernetes 服务:

Name:              mysql
Namespace:         my_namespace
Labels:            <none>
...
Selector:          <none>
Type:              ClusterIP
IP:                10.104.84.99
Port:              mysql  3306/TCP
TargetPort:        3306/TCP
Endpoints:         192.168.6.200:3306
Session Affinity:  None
Events:            <none>

所有这些看起来都像我用 MSSQL 做的。

而且我可以确认工作网络:

root@kubernetes-server:/application# kv exec application-7c85b5d9d8-9vxhb -- curl mysql:3306
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:04 --:--:--     0J
100   115    0   115    0     0     25      0 --:--:--  0:00:04 --:--:--    25#08S01Got packets out of order

"Got packets out of order" 肯定是来自 MySQL 服务器的响应。 我也可以通过 Wireshark 确认这一点。

但是申请不会运行。我收到错误:"Unable to connect to any of the specified MySQL hosts."

我是不是做错了什么?

你好,xola

知道了。 这不是连接字符串。 不幸的是,我没有看到该错误消息之前的错误。因为我们加密了连接字符串,所以我们有一个解密密钥。未正确设置解密密钥,因此应用程序希望使用加密的而不是解密的连接字符串来建立连接。

不过还是谢谢你!