如何解决在 Kubernetes pod 上运行 Arango Shell (Arangosh)
我已经在 Kubernetes 节点上设置了一个 arango 实例,这些节点安装在虚拟机上,如 arangoDB 文档 ArangoDB on Kubernetes 中所述。请记住,我跳过了 aranGolocalStorage
和 arangoDeploymentReplication
步骤。我可以在 get pods 中看到 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
因此没有连接到数据库。
任何有关这方面的线索将不胜感激。
解决方法
发布此社区 wiki 答案以指出此问题/问题已解决的 github 问题。
随意编辑/扩展。
链接到github:
我的问题是如何解决的:
要连接到 arangosh,对我有用的是在 server.endpoint 中使用 localhost:8529 ip-port 组合之前使用 ssl。这是有效的命令:
kubectl exec -it _arango_cluster_crdn_podname_ -- arangosh --server.endpoint ssl://localhost:8529
对于网页浏览器,由于我的外部访问是基于 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")
其他资源:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。