微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Kubernetes pod 上运行 Arango Shell (Arangosh)

如何解决在 Kubernetes pod 上运行 Arango Shell (Arangosh)

我已经在 Kubernetes 节点上设置了一个 arango 实例,这些节点安装在虚拟机上,如 arangoDB 文档 ArangoDB on Kubernetes 中所述。请记住,我跳过了 aranGolocalStoragearangoDeploymentReplication 步骤。我可以在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?