Kubernetes OSBA是连接AKS吊舱内Azure CosmosDB的唯一方法吗

Kubernetes OSBA是连接AKS吊舱内Azure CosmosDB的唯一方法吗,kubernetes,azure-cosmosdb,azure-aks,Kubernetes,Azure Cosmosdb,Azure Aks,我有一个JavaPod应用程序,它使用默认的连接字符串连接到CosmosDB。这个吊舱在我的本地迷你库布上运行得很好。但当我将其部署到AKS时,它存在连接异常 pod由于MongoDB错误而不断崩溃 等待匹配的服务器时,30000毫秒后超时。。。 群集状态的客户端视图为。。。xxx.documents.azure.com:10255 看起来它无法到达宇宙飞船。首先,我认为这是因为默认的网络安全规则阻止了传出端口10255。然后我向该资源组添加一个NSG。在端口10255上添加传出规则。这并不能解

我有一个JavaPod应用程序,它使用默认的连接字符串连接到CosmosDB。这个吊舱在我的本地迷你库布上运行得很好。但当我将其部署到AKS时,它存在连接异常

pod由于MongoDB错误而不断崩溃

等待匹配的服务器时,30000毫秒后超时。。。 群集状态的客户端视图为。。。xxx.documents.azure.com:10255

看起来它无法到达宇宙飞船。首先,我认为这是因为默认的网络安全规则阻止了传出端口10255。然后我向该资源组添加一个NSG。在端口10255上添加传出规则。这并不能解决问题

然后我偶然发现了这篇文章。 这是唯一的办法吗?我必须使用OSBA访问公共宇宙数据库吗

从Azure门户复制连接字符串

mongodb://mycompany:some_base64_encrypted_stuff@mycompany.documents.azure.com:10255/?ssl=true&replicaSet=globaldb

更新:
原来spring boot starter 2.1.0使用的是mongodb驱动程序3.8.2。 mongodb驱动程序将:27017追加到我的连接字符串中。我已将其更新为3.10.2。现在连接字符串是正确的。我在Kubernetes运行的程序给了我未知的hostexception mydoc.documents.azure.com。 我猜在windows中构建docker映像,然后在alpine上运行它可能会导致问题

更新:
我想我已经接近答案了。问题来自kubernetes星系团。我的集群包含两个节点。我创建了另一个具有单个节点的集群。将我的程序部署到它,它将毫无错误地连接到CosmosDB。
但是我不知道如何调试kubernetes群集。

如果使用网络策略,可以使用示例网络策略来允许所有出口流量:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
spec:
  podSelector: {}
  egress:
  - {}
  policyTypes:
  - Egress
如果您不使用网络策略,连接应该可以正常工作,您不需要OSBA。您可以稍后对网络策略进行微调,使其更具限制性


注:如果您在某些设置中使用istio,您的出站请求也将成为阻止程序,您需要考虑这一点

您不需要NSG上公开的出站端口,您是否使用网络策略(在kubernetes中,而不是在azure中)?哦,我需要修改kubernetes网络策略?怎么做?我没有使用任何网络策略。也不使用istio。我能弄明白为什么我的吊舱无法到达宇宙飞船。我将尝试添加您提供的出口策略。添加策略后。我的pod给了我未知主机异常。mydb.documents.azure.com。我需要在AKS中设置DNS吗?不,默认情况下它应该工作,您是如何创建AKS的?kube系统中的所有POD都在运行吗?我有默认名称空间和一个完全干净的测试名称空间。默认情况下运行的服务是kubernetes,helloworld,已经运行了30天。我在测试名称空间中部署了我的CosmosDB测试吊舱。我使用Azure portal创建集群。但这并没有真正的帮助。无论如何,如果您不知道kubernetes中的网络策略是什么,那么您很可能不会使用它们。因此,网络智能出站流量没有被阻止,请检查您的cosmos连接字符串