访问kubernetes中的mongodb

g4c*_*nge 7 mongodb mean-stack kubernetes

我根据kubernetes教程创建了一个mongodb服务,http: //kubernetes.io/docs/getting-started-guides/meanstack/

现在我的问题是如何通过像Robomongo或类似客户端这样的客户端访问数据库本身?仅用于备份或浏览已输入的数据.

mongo-pod和服务只有一个内部端点和一个mount.

有没有办法安全地访问没有公共端点的此实例?内部URI是mongo:27***

lmc*_*iro 11

您可以使用kubectl port-forward mypod 27017:27017,然后仅将mongodb客户端连接到localhost:27017

如果要停止,只需单击Ctrl+C同一cmd窗口即可停止该过程。

  • 您还可以使用服务名称连接到Pod,将其用作`kubectl port-forward svc / mongodb 27018:27017`而不是podname,因此您不必查找不断变化的Pod名称 (6认同)

小智 7

当您在 kubernetes 中创建服务时,您可以为其命名,例如“mymongo”。创建服务后

kubernetes 的 DNS 服务(默认是开启的)将确保任何 pod 都可以通过它的名称发现这个 servixe。所以你可以设置你的uri

uri: mongodb://**mymongo**:27017/mong
Run Code Online (Sandbox Code Playgroud)

此外,服务 IP 和端口将在运行的 pod 中设置为环境变量。

MYMONGO_SERVICE_HOST

MYMONGO_SERVICE_PORT

事实上,我写了一篇博客,展示了一个带有 nodejs Web 服务器和 mongo 的应用程序的分步示例,可以进一步解释

http://codefresh.io/blog/kubernetes-snowboarding-everything-intro-kubernetes/

欢迎反馈!


g4c*_*nge 6

kubernetes cmd-line工具提供了这个功能,如@ainlolcat所述

kubectl get pods
Run Code Online (Sandbox Code Playgroud)

检索当前正在运行的pod名称,并使用:

kubectl exec -i mongo-controller-* bash
Run Code Online (Sandbox Code Playgroud)

你得到一个基本的bash,让你执行

mongo
Run Code Online (Sandbox Code Playgroud)

进入数据库以创建转储,等等.bash是非常基本的,没有完成等功能.我没有找到更好的shell的解决方案,但它完成了这项工作