我已经在Kubernetes节点上设置了一个Arango示例,这些节点安装在一个VM上,如ArangoDB文档ArangoDB on Kubernetes中所述。请记住,我跳过了ArangoLocalStorage
和ArangoDeploymentReplication
步骤。我可以在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。
任何关于这方面的线索都将不胜感激。
1条答案
按热度按时间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
:其他资源: