我是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驱动程序的连接问题吗
如果您能告诉我:
kubectl exec -n ...
和Cassandra驱动程序之间有什么不同李>提前谢谢
scylla-cluster-client.scylla.svc
是一个k8s可解析DNS地址,因此只能从托管在同一集群(和命名空间)上的POD工作。你不能从外面用它kubectl
exec在其中一个“锡拉”吊舱上运行命令,因此实际上您是在“锡拉”节点本身上运行该命令,并连接到该节点上的localhost
。相反,scylla-cluster-client.scylla.svc
正在远程连接(但在k8s网络内)scylla-cluster-client.scylla.svc
DNS名称。如果你想使用IP地址,你可以手动解析DNS名称,或者使用k8s API读取“锡拉吊舱”的IP地址,但是没有理由这么做。 如果你想从集群外部连接,你需要一个公共服务或者类似的东西——基本上是一个k8s托管代理。理论上,你可以允许公共播客,但那是非常不可取的李>相关问题 更多 >
编程相关推荐