【发布时间】:2019-07-22 08:14:45
【问题描述】:
我正在尝试通过 kubectl 访问 mongodb 副本集,因此我不会将其暴露在互联网上,我无法使用 OpenVPN,因为 Calico 会阻止它。
所以我正在使用这个脚本:
export MONGO_POD_NAME1=$(kubectl get pods --namespace develop -l "app=mongodb-replicaset" -o jsonpath="{.items[0].metadata.name}")
export MONGO_POD_NAME2=$(kubectl get pods --namespace develop -l "app=mongodb-replicaset" -o jsonpath="{.items[1].metadata.name}")
export MONGO_POD_NAME3=$(kubectl get pods --namespace develop -l "app=mongodb-replicaset" -o jsonpath="{.items[2].metadata.name}")
echo $MONGO_POD_NAME1, $MONGO_POD_NAME2, $MONGO_POD_NAME3
kubectl port-forward --namespace develop $MONGO_POD_NAME1 27020:27017 & p3=$!
kubectl port-forward --namespace develop $MONGO_POD_NAME2 27021:27017 & p4=$!
kubectl port-forward --namespace develop $MONGO_POD_NAME3 27022:27017 & p5=$!
wait -n
[ "$?" -gt 1 ] || kill "$p3" "$p4" "$p5"
wait
我的连接字符串如下所示:
mongodb://LOGIN:PW@localhost:27020,localhost:27021,localhost:27022/animedb?replicaSet=rs0
但是,我仍然无法连接到我的 mongodb 副本集,它说:
connection error: { MongoNetworkError: failed to connect to server
[anime-data-develop-mongodb-replicaset-0.anime-data-develop-mongodb-replicaset.develop.svc.cluster.local:27017]
on first connect [MongoNetworkError: getaddrinfo ENOTFOUND
anime-data-develop-mongodb-replicaset-0.anime-data-develop-mongodb-replicaset.develop.svc.cluster.local
anime-data-develop-mongodb-replicaset-0.anime-data-develop-mongodb-replicaset.develop.svc.cluster.local:27017]
但如果我使用直接连接,我仍然可以连接到每个节点!
这里可能有什么问题?如何连接 mongodb 进行开发?
【问题讨论】:
-
不太了解连接到 mongodb,但您可以尝试从终端运行端口转发到单个 pod 以查看会发生什么。另外,如果那是您来自 mongo 的日志,那么它似乎可能还没有完全正确地设置和运行。
标签: mongodb kubernetes google-kubernetes-engine kubectl project-calico