我用kubernetes(terraform)在google云平台上部署了一个cassandra集群。
cassandra集群运行得很好,我正在运行一些命令 kubectl exec -it cassandra-0 bash
数据正在传播到所有其他节点,所有节点都工作正常。
当我跑的时候 host cassandra
我看到了:
cassandra.default.svc.cluster.local has address 10.32.1.4
cassandra.default.svc.cluster.local has address 10.32.1.5
cassandra.default.svc.cluster.local has address 10.32.3.12
在这里之前,一切正常。
但现在我有个问题不知道怎么解决。我有一个谷歌云功能,我想连接到这个数据库,并插入一些数据。
最好的方法是什么?我想我不应该把数据库暴露在互联网上。但当我尝试将云功能连接到 cassandra.default.svc.cluster.local
我看不到服务器。
我用 cluster_ip = "None"
关于Cassandra服务
更新:添加了以下信息:
我的谷歌云功能是:
exports.helloGET = function helloGET (req, res) {
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['cassandra.default.svc.cluster.local'], localDataCenter: 'DC1', keyspace: 'my_bd_name' });
const query = 'SELECT * FROM User';
client.execute(query)
.then(result => console.log('Users: ', dump(result.rows)));
res.send('Cassandra loaded... :' + dump(result.rows));
};
1条答案
按热度按时间amrnrhlw1#
需要完整的srv记录。
srv记录
srv记录是为作为正常或无头服务一部分的命名端口创建的。对于每个指定的端口,srv记录的格式如下
_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local
. 对于常规服务,解析为端口号和域名:my-svc.my-namespace.svc.cluster.local
. 对于无头服务,它解析为多个答案,每个支持服务的pod对应一个答案,并且包含表单pod的端口号和域名auto-generated-name.my-svc.my-namespace.svc.cluster.local
.在您的例子中,您创建了一个无头服务(使用时没有集群ip)
cluster_ip = "None"
)需要找到auto-generated-name
的auto-generated-name.cassandra.default.svc.cluster.local
.