通过Python连接托管在Kubernetes Pod上的ArangoDB集群

bybem2ql  于 2022-12-09  发布在  Go
关注(0)|答案(2)|浏览(141)

我有一个3节点的系统,在这个系统上我托管了一个基本的ArangoDB集群,这个集群有3个dbserver。我使用的是Python-arango库,它说要连接到集群,我们需要向ArangoClient类提供端口为8529的IP列表。我的Python代码在另一个pod中运行。
使用Arangosh,我可以使用localhost:8529配置访问协调器pod。但是,在Arangosh上,我一次只能访问一个协调器pod。由于Arango是一个集群,我希望以一种循环方式同时连接到所有三个协调器pod。现在,根据Kubernetes文档中MongoDB的情况,我可以将的列表提供<pod_name.service_name>给MongoClient,它将获得连接。我正在尝试与Arango协调器pod类似的操作。但这似乎不起作用。Arango文档中的示例只指向编写“localhost-1”、“localhost-2”等。
总而言之,我不知道如何识别Arango协调器的IP地址。我尝试使用协调器的内部IP地址,尝试使用 http://pod_name.8529,尝试使用Web UI中显示的协调器的端点(以ssl开头,但我已将ssl替换为http),但都没有成功。
我将感激在这方面的任何帮助。请让我知道,如果需要一些额外的信息。我被这个问题困了一个星期了。

v8wbuo2f

v8wbuo2f1#

如果您执行以下操作:https://www.arangodb.com/2018/12/deploying-arangodb-3-4-on-kubernetes/
有一个YAML配置文件,它正在创建多个POD。您的应用程序应该如何使用Kubernetes service与ArragoDB连接。
因此,您的应用程序将连接到Kubernetes服务,默认情况下,Kubernets服务管理RoundRobin负载平衡。
在示例中,您可以看到它正在创建三个服务

my-arangodb-cluster          ClusterIP      10.11.247.191   <none>           8529/TCP         46m
my-arangodb-cluster-ea       LoadBalancer   10.11.241.253   35.239.220.180   8529:31194/TCP   46m
my-arangodb-cluster-int      ClusterIP      None            <none>           8529/TCP         46m

服务my-arangodb-cluster-ea是公开的。而服务my-arangodb-cluster可以使用应用程序在内部访问。
你的心流会像这样

Application > Arango service (Round robin) > Arango Pods
tv6aics1

tv6aics12#

我猜您可以使用上面提到的LoadBalancer连接到它们,在这种情况下,k8将在协调器Pod之间平衡您的请求,或者您可以为每个协调器显式创建服务,并以您想要的方式在python客户机配置中使用它们的IP地址

相关问题