1

如 ArangoDB 文档ArangoDB on Kubernetes中所述,我已经在 Kubernetes 节点上设置了一个 Arango 实例,这些实例安装在 VM上。请记住,我跳过了ArangoLocalStorageandArangoDeploymentReplication步骤。我可以在 get pod 中看到代理、协调器和 dbserver 各 3 个 pod。

arango-cluster-ea service但是,将外部 IP 显示为待处理。我可以使用主节点的 IP 地址和服务端口来访问 Web UI,连接到数据库并进行更改。但是我无法访问 Arango shell,也无法使用我的 Python 代码连接到数据库。我正在使用服务中显示的主节点 IP 和服务端口arango-cluster-ea来尝试使 Python 代码连接到数据库。同样,对于 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

因此没有连接到数据库。

任何有关此的线索将不胜感激。

4

1 回答 1

1

发布此社区 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 有效性很重要,否则它将再次引发错误。

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


我已经测试了以下解决方案,并且成功地通过以下方式连接到数据库:

  • 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")

其他资源:

于 2021-06-21T07:11:25.297 回答