在 Kubernetes 中访问 Mongodb
Access to Mongodb in Kubernetes
我根据 Kubernetes tutorial 创建了一个 Mongodb 服务。
现在我的问题是如何使用像 Robomongo 或类似客户端这样的客户端访问数据库本身?仅用于备份或探索已输入的数据。
mongo-pod 和服务只有一个内部端点和一个挂载。
有什么方法可以在没有 public 端点的情况下安全地访问此实例?
内部 URI 是 mongo:27***
kubernetes 命令行工具提供此功能,如@ainlolcat 所述
kubectl get pods
检索当前 运行 并且具有:
的 pod 名称
kubectl exec -i mongo-controller-* bash
你得到一个基本的bash,它可以让你执行
mongo
进入数据库创建转储,等等。 bash 非常基础,没有完成等功能。我还没有找到更好的解决方案 shell,但它可以完成工作
当您在 kubernetes 中创建服务时,您会为其命名,例如 "mymongo"。创建服务后
kubernetes 的 DNS 服务(默认开启)将确保任何 pod 仅通过其名称即可发现此 servixe。所以你可以像
这样设置你的 uri
uri: mongodb://**mymongo**:27017/mong
此外,服务 IP 和端口将在 运行 pod 中设置为环境变量。
MYMONGO_SERVICE_HOST
MYMONGO_SERVICE_PORT
我实际上写了一个博客,展示了一个带有 nodejs 网络服务器的应用程序的逐步示例,mongo 可以进一步解释
http://codefresh.io/blog/kubernetes-snowboarding-everything-intro-kubernetes/
欢迎反馈!
您可以使用 kubectl port-forward mypod 27017:27017
,然后将您的 mongodb 客户端连接到 localhost:27017
。
如果你想停止,只需在同一个命令 window 上点击 Ctrl+C
来停止进程。
@grchallenge 的回答是正确的,但从 2021 年起已弃用
所有新人请使用
kubectl exec mongo-pod-name -i -- bash
我根据 Kubernetes tutorial 创建了一个 Mongodb 服务。
现在我的问题是如何使用像 Robomongo 或类似客户端这样的客户端访问数据库本身?仅用于备份或探索已输入的数据。
mongo-pod 和服务只有一个内部端点和一个挂载。
有什么方法可以在没有 public 端点的情况下安全地访问此实例?
内部 URI 是 mongo:27***
kubernetes 命令行工具提供此功能,如@ainlolcat 所述
kubectl get pods
检索当前 运行 并且具有:
的 pod 名称kubectl exec -i mongo-controller-* bash
你得到一个基本的bash,它可以让你执行
mongo
进入数据库创建转储,等等。 bash 非常基础,没有完成等功能。我还没有找到更好的解决方案 shell,但它可以完成工作
当您在 kubernetes 中创建服务时,您会为其命名,例如 "mymongo"。创建服务后
kubernetes 的 DNS 服务(默认开启)将确保任何 pod 仅通过其名称即可发现此 servixe。所以你可以像
这样设置你的 uriuri: mongodb://**mymongo**:27017/mong
此外,服务 IP 和端口将在 运行 pod 中设置为环境变量。
MYMONGO_SERVICE_HOST
MYMONGO_SERVICE_PORT
我实际上写了一个博客,展示了一个带有 nodejs 网络服务器的应用程序的逐步示例,mongo 可以进一步解释
http://codefresh.io/blog/kubernetes-snowboarding-everything-intro-kubernetes/
欢迎反馈!
您可以使用 kubectl port-forward mypod 27017:27017
,然后将您的 mongodb 客户端连接到 localhost:27017
。
如果你想停止,只需在同一个命令 window 上点击 Ctrl+C
来停止进程。
@grchallenge 的回答是正确的,但从 2021 年起已弃用
所有新人请使用
kubectl exec mongo-pod-name -i -- bash