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

使用Python驱动程序访问EKS上的“锡拉”,python,kubernetes,cassandra,amazon-eks,scylla,Python,Kubernetes,Cassandra,Amazon Eks,Scylla,我是Kubernetes的新手。最近,我被要求在AWS上设置“锡拉”。我按照教程在EKS()上部署了“锡拉”。一切都很顺利 然后,我在另一个相关教程()中访问了数据库部分 我能够运行前两个步骤的命令: kubectl exec-n scylla-it scylla-cluster-us-east-1-us-east-1a-0--cqlsh >描述键空间; kubectl-n锡拉描述服务锡拉集群客户端 但是,我不知道如何执行最后一步,即: Kubernetes集群内运行的吊舱可以使用此服务连接

我是Kubernetes的新手。最近,我被要求在AWS上设置“锡拉”。我按照教程在EKS()上部署了“锡拉”。一切都很顺利

然后,我在另一个相关教程()中访问了数据库部分

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

kubectl exec-n scylla-it scylla-cluster-us-east-1-us-east-1a-0--cqlsh
>描述键空间;
kubectl-n锡拉描述服务锡拉集群客户端
但是,我不知道如何执行最后一步,即:

Kubernetes集群内运行的吊舱可以使用此服务连接到“锡拉”。下面是一个使用Python驱动程序的示例:

来自cassandra.cluster导入集群
cluster=cluster(['scylla-cluster-client.scylla.svc']))
session=cluster.connect()
脚本无法解析
锡拉群集客户端.scylla.svc
。 因此,我也尝试了不同的IP,但遇到了
cassandra.cluster.NoHostAvailable
错误

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

kubectl exec-n scylla-it scylla-cluster-us-east-1-us-east-1a-0--/bin/bash
有人能帮我解决使用Python驱动程序的连接问题吗

如果您能告诉我:

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

  • scylla cluster client.scylla.svc
    是一个k8s可解析DNS地址,因此仅适用于托管在同一集群(和命名空间)上的POD。你不能从外面用它
  • kubectl
    exec在其中一个“锡拉”吊舱上运行命令,因此实际上您是在“锡拉”节点本身上运行该命令,并连接到该节点上的
    localhost
    。相反,
    scylla cluster client.scylla.svc
    正在远程连接(但在k8s网络内)
  • 您不需要使用IP—使用
    scylla cluster client.scylla.svc
    DNS名称。如果你想使用IP地址,你可以手动解析DNS名称,或者使用k8s API读取“锡拉吊舱”的IP地址,但是没有理由这么做。 如果你想从集群外部连接,你需要一个公共服务或者类似的东西——基本上是一个k8s托管代理。理论上,你可以允许公共播客,但那是非常不可取的

  • 谢谢你的回答。实际上,我想从集群外部进行连接,您能在回答中详细说明如何设置“k8s托管代理”吗?我试图将
    scylla cluster client
    的服务类型更改为
    LoadBalance
    ,但这是不允许的。如果您试图从开发人员计算机进行连接,一种简单而安全的方法是