在Kubernetes pod上运行ArangoShell(Arangosh)



我在Kubernetes节点上设置了一个Arango实例,这些节点安装在虚拟机上,正如ArangoDB文档中提到的那样。请记住,我跳过了ArangoLocalStorageArangoDeploymentReplication步骤。我可以在get pod中看到代理、协调器和dbserver各3个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外壳并显示错误:

Cannot connect to tcp://masternodeIP:port

从而不连接到DB。

如有任何线索,我们将不胜感激。

发布这个社区wiki答案,指出这个问题/问题已经解决的github问题。

请随意编辑/展开。


github:链接

  • Github.com:Arangodb:Kube-Arangodb:问题:734

以下是我的问题是如何解决的:

为了连接到arangosh,对我来说有效的方法是在使用server.endpoint中的localhost:8529 ip端口组合之前使用ssl

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

对于web浏览器,由于我的外部访问是基于NodePort类型的,所以我输入了主节点的IP和生成的30000级端口号(在我的情况下,它是31200(。

对于Python,在PyArango的Connection类的情况下,当我使用arango集群ea服务时,它就起作用了。我在连接呼叫中输入了以下线路:

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

如果其他人面临类似的问题,希望这能解决他们的问题。


我测试了以下解决方案,并通过成功连接到数据库

  • arangosh来自localhost
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")

其他资源:

  • Arangodb.com:教程:Python教程
  • Arangodb.com:文档:稳定:教程Kubernetes

最新更新