我遵循了有关如何在 Kubernetes 中将Microsoft SqlServer 部署为 Azure Kubernetes 服务上的容器的官方文档。我注意到了几件事,这与以下内容有关:
Kubernetes 中的两个容器
当我执行时kubectl get pods
显示 2 个 mssql 实例,其中一个Running
和一个Pending
. 即使我删除了所有 pod kubectl delete pods -l app=mssql
,Kubernetes 也会重新创建两个 pod。
偶尔会下降
当我在某些时候使用我的应用程序时,我开始收到错误:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:40 - 无法打开与 SQL Server 的连接)
和
与服务器成功建立连接,但在登录前握手期间发生错误。(提供者:TCP 提供者,错误:35 - 捕获到内部异常)---> System.IO.IOException:无法从传输连接中读取数据:连接被对等方重置。
除了添加容器限制之外,我没有做任何与官方文档不同的事情。我相信容器甚至没有达到这些限制。我让 Kubernetes 在 2 个 4GB 的虚拟机上运行,当我添加 SqlServer 时,我添加了第三个 4GB 虚拟机,这样 Kubernetes 就有足够的 CPU 和内存来使用。
resources:
requests:
cpu: 300m
memory: 2.5Gi
limits:
cpu: 400m
memory: 3Gi
登录失败
最后但并非最不重要的一点是,如果我kubectl logs mssql-xyz
有时运行,我会在日志中看到以下内容:
2020-10-28 13:24:16.83 用户 'sa' 的登录登录失败。原因:密码与提供的登录名不匹配。[客户端:10.240.0.4] 2020-10-28 13:24:18.09 登录错误:18456,严重性:14,状态:8。
显然,我的应用程序中的密码是正确的。可能和其他错误有关,我不知道...
对这一切有什么想法吗?我怎样才能使它工作稳定而没有任何错误?