ArangoDB 在Kubernetes pod上运行Arango Shell(Arangosh)

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

我已经在Kubernetes节点上设置了一个Arango示例,这些节点安装在一个VM上,如ArangoDB文档ArangoDB on Kubernetes中所述。请记住,我跳过了ArangoLocalStorageArangoDeploymentReplication步骤。我可以在get pod中看到3个pod,每个pod包含代理、协调器和数据库服务器。
但是,arango-cluster-ea service将外部IP显示为挂起。我可以使用主节点的IP地址和服务端口访问Web UI,连接到DB并进行更改。但是我无法访问Arango shell,也无法使用Python代码连接到DB。我使用主节点IP和服务中arango-cluster-ea所示的服务端口,尝试将Python代码连接到DB。类似地,对于arangosh,我尝试使用以下代码:

kubectl exec -it *arango-cluster-crdn-pod-name* -- arangosh --service.endpoint tcp://masternodeIP:8529

在Python中,由于Connection类调用在try块中,它会转到except块。在Arangosh中,它会打开Arango shell并显示错误:

Cannot connect to tcp://masternodeIP:port

因此不连接到DB。
任何关于这方面的线索都将不胜感激。

vq8itlhq

vq8itlhq1#

发布此社区wiki答案以指出此问题/疑问已解决的github问题。
请随意编辑/展开。
链接到github:


以下是我的问题解决方法:
要连接到arangosh,我的做法是在server. endpoint中使用localhost:8529 ip-port组合之前使用ssl。

  • kubectl exec -it _arango_cluster_crdn_podname_ -- arangosh --server.endpoint ssl://localhost:8529

对于Web浏览器,由于我的外部访问是基于NodePort类型的,所以我输入了主节点的IP和生成的30000级端口号(在我的示例中,是31200)。
对于Python,在PyArango的Connection类的情况下,当我使用arango-cluster-ea服务时,它工作正常。

  • conn = Connection(arangoURL='https://arango-cluster-ea:8529', verify= False, username = 'root', password = 'XXXXX') verify=False标志对于忽略SSL有效性非常重要,否则将再次引发错误。

希望这能解决其他人的问题,如果他们面临类似的问题。
我已经测试了以下解决方案,我已经成功连接到数据库通过:

  • localhost中删除arangosh
Connected to ArangoDB 'http+ssl://localhost:8529, version: 3.7.12 [SINGLE, server], database: '_system', username: 'root'
  • Python代码
from pyArango.connection import *
conn = Connection(arangoURL='https://ABCD:8529', username="root", password="password",verify= False )
db = conn.createDatabase(name="school")

其他资源:

相关问题