开发ASP。NET Core 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 order"是MySQL服务器的一个响应。我也可以通过Wireshark确认这一点。
但该应用程序将不会运行。我得到错误:"Unable to connect to any of the specified MySQL hosts."
我做错什么了吗?
问候,xola
明白了。这不是连接字符串。不幸的是,我没有看到错误消息之前的错误。由于我们对连接字符串进行了加密,因此我们有一个用于解密的密钥。解密密钥设置不正确,因此应用程序希望使用加密的连接字符串而不是解密的连接字符串来设置连接。
但无论如何还是要谢谢你!