如何将google云函数连接到kubernetes集群中的cassandra数据库

pjngdqdw  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(403)

我用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));
};
amrnrhlw

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-nameauto-generated-name.cassandra.default.svc.cluster.local .

相关问题