【问题标题】:Run Arango Shell (Arangosh) on a Kubernetes pod在 Kubernetes pod 上运行 Arango Shell (Arangosh)
【发布时间】:2021-06-07 22:01:02
【问题描述】:

如 ArangoDB 文档ArangoDB on Kubernetes 中所述,我已在安装在 VM 上的 Kubernetes 节点上设置了 Arango 实例。请记住,我跳过了ArangoLocalStorageArangoDeploymentReplication 步骤。我可以在 get pod 中看到 agent、coordinators 和 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

因此没有连接到数据库。

任何有关这方面的线索将不胜感激。

【问题讨论】:

  • 您好,我尝试复制您的设置,但遇到了同样的错误。我无法使用来自Podarangosh 和来自另一台主机的python 代码连接到数据库。我想你也可以在kube-arangodb github 页面上提问:github.com/arangodb/kube-arangodb/issues
  • 嗨,我现在在kube-arangodb github 上创建了一个问题。由于我直接在 pod 上创建了 arangodb 环境而不是直接在 VM 上创建,因此希望您对一件事发表意见 - 如果我只是在主节点上安装数据库而不是执行 kubectl apply 安装过程,我的问题是否会部分解决?我知道在这种情况下该过程不会被容器化。
  • 抱歉,但我无法帮助您解决这个问题,因为我不知道 arangodb。我试图重现你的设置,看看 Kubernetes 端是否有任何问题。我认为它可以暂时作为一种解决方法提供帮助(直接提供),但我不能以任何方式保证它。

标签: kubernetes arangodb pyarango


【解决方案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

对于网页浏览器,由于我的外部访问是基于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")

其他资源:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2020-03-17
    • 2021-02-19
    相关资源
    最近更新 更多