Pla*_*ato 6 portforwarding kubernetes cockroachdb
根据文档,我已经设置并部署了包含三个CockroachDB pod的Kubernetes状态集.我的最终目标是在不需要使用kubectl的情况下查询数据库.我的中间目标是查询数据库而不实际炮轰到数据库pod中.
我将一个端口从一个端口转发到我的本地机器,并尝试连接:
$ kubectl port-forward cockroachdb-0 26257
Forwarding from 127.0.0.1:26257 -> 26257
Forwarding from [::1]:26257 -> 26257
# later, after attempting to connect:
Handling connection for 26257
E0607 16:32:20.047098 80112 portforward.go:329] an error occurred forwarding 26257 -> 26257: error forwarding port 26257 to pod cockroachdb-0_mc-red, uid : exit status 1: 2017/06/07 04:32:19 socat[40115] E connect(5, AF=2 127.0.0.1:26257, 16): Connection refused
$ cockroach node ls --insecure --host localhost --port 26257
Error: unable to connect or connection lost.
Please check the address and credentials such as certificates (if attempting to
communicate with a secure cluster).
rpc error: code = Internal desc = transport is closing
Failed running "node"
Run Code Online (Sandbox Code Playgroud)
有人设法完成这个吗?
从Kubernetes集群内部,您可以通过连接cockroachdb-publicDNS名称与数据库通信.在文档中,这对应于示例命令:
kubectl run cockroachdb -it --image=cockroachdb/cockroach --rm --restart=Never -- sql --insecure --host=cockroachdb-public
Run Code Online (Sandbox Code Playgroud)
当该命令使用CockroachDB映像时,您使用的任何Postgres客户端驱动程序都应该能够cockroachdb-public在与Kubernetes集群一起运行时连接.
从Kubernetes集群外部连接到数据库将需要公开该cockroachdb-public服务.细节将在某种程度上取决于您的Kubernetes集群的部署方式,因此我建议您查看他们的文档:https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#exposing-
服务
如果您感到好奇,转发端口26257无法正常工作的原因是,只有当pod中的进程正在侦听localhost时,来自pod的端口转发才有效,但是statefulset配置中的CockroachDB进程已设置监听pod的主机名(通过--host标志配置).
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |