我在Kubernetes节点上设置了一个Arango实例,这些节点安装在虚拟机上,正如ArangoDB文档中提到的那样。请记住,我跳过了ArangoLocalStorage
和ArangoDeploymentReplication
步骤。我可以在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