使用Python驱动程序访问EKS上的“锡拉”

2024-05-29 04:10:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Kubernetes的新手。最近,我被要求在AWS上设置“锡拉”。我按照教程在EKS(http://operator.docs.scylladb.com/master/eks.html)上部署了“锡拉”。一切都很顺利

然后,我按照另一个相关教程(http://operator.docs.scylladb.com/master/generic.html)中的访问数据库部分进行操作

我能够运行前两个步骤的命令:

kubectl exec -n scylla -it scylla-cluster-us-east-1-us-east-1a-0 -- cqlsh
> DESCRIBE KEYSPACES;
kubectl -n scylla describe service scylla-cluster-client

但是,我不知道如何执行最后一步,即:

Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. Here’s an example using the Python Driver:

from cassandra.cluster import Cluster
cluster = Cluster(['scylla-cluster-client.scylla.svc'])
session = cluster.connect()

脚本无法解析scylla-cluster-client.scylla.svc。 因此,我也尝试了不同的IP,但是遇到了cassandra.cluster.NoHostAvailable错误

此外,我发现pip在通过连接到集群之后没有安装

kubectl exec -n scylla -it scylla-cluster-us-east-1-us-east-1a-0 -- /bin/bash

有人能帮我解决使用Python驱动程序的连接问题吗

如果您能告诉我:

  1. 为什么scylla-cluster-client.scylla.svc不适合我
  2. kubectl exec -n ...和Cassandra驱动程序之间有什么不同
  3. 我应该使用哪些IP?我注意到有来自Kubernetes的集群IP、来自Kubernetes的内部IP和来自AWS的EC2机器的公共IP。如果需要公共IP,我是否需要打开AWS上的端口(例如9042)?如何使它更安全

提前谢谢


Tags: ipclientawshttpdocs教程operatorkubernetes
1条回答
网友
1楼 · 发布于 2024-05-29 04:10:13
  1. scylla-cluster-client.scylla.svc是一个k8s可解析DNS地址,因此只能从托管在同一集群(和命名空间)上的POD工作。你不能从外面用它
  2. kubectlexec在其中一个“锡拉”吊舱上运行命令,因此实际上您是在“锡拉”节点本身上运行该命令,并连接到该节点上的localhost。相反,scylla-cluster-client.scylla.svc正在远程连接(但在k8s网络内)
  3. 您不需要使用IP-使用scylla-cluster-client.scylla.svcDNS名称。如果你想使用IP地址,你可以手动解析DNS名称,或者使用k8s API读取“锡拉吊舱”的IP地址,但是没有理由这么做。 如果你想从集群外部连接,你需要一个公共服务或者类似的东西——基本上是一个k8s托管代理。理论上,你可以允许公共播客,但那是非常不可取的

相关问题 更多 >

    热门问题