如何(正确)在 Kubernetes 上部署 MongoDB 并从另一个 Pod/作业访问它?

2024-03-03

一、问题描述

我正在尝试运行MongoDB Deployment + Service on Kubernetes其他地方Pods/Jobs or Containers可以访问它。到目前为止,我显然已经成功地部署了它,但是每当我尝试从内部访问它时Job, Pod or Container,我得到(请注意,我正在使用0.0.0.0代替localhost为了访问主机;我的超时时间是 30 秒):

pymongo.errors.ServerSelectionTimeoutError: 0.0.0.0:30001: [Errno 111] Connection refused

2.在本地,它似乎有效......

如果我尝试通过Python CLI, it does看起来它确实有效:

>>> import pymongo
>>> client = pymongo.MongoClient(host='0.0.0.0', port=30001) # 'localhost' also works
>>> client.list_database_names()
['admin', 'config', 'local', 'test_db'] # 'test_db' is a db I had previously created

尝试访问时是否应该使用另一个主机地址MongoDB service? (如果是的话,它显示在哪里kubectl describe svc <service_name>?)

3. Deployment and Service配置

My MongoDB deployment(改编自Nigel Poulton 的 Kubernetes 书 https://rads.stackoverflow.com/amzn/click/com/B072TS9ZQZ) is:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mymongodb-dep
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-mongo
  minReadySeconds: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: hello-mongo
    spec:
      containers:
      - name: mongo
        image: mongo
        imagePullPolicy: IfNotPresent
        ports:
            - containerPort: 27017

And its service is:

apiVersion: v1
kind: Service
metadata:
  name: hello-svc
  labels:
    app: hello-mongo
spec:
  type: NodePort
  ports:
  - port: 27017
    nodePort: 30001
    protocol: TCP
  selector:
    app: hello-mongo

您的连接体验Kubernetes集群和外部会有所不同。

从集群内部,您应该引用MongoDB Pod using <service-name>.<namespace-name>.svc.cluster.local而不是0.0.0.0。所以,就你的情况而言,host最终会成为hello-svc.default.svc.cluster.local.

另请注意,port应该被引用为集群中看到的而不是NodePort,用于从外部访问集群。在你的情况下,那就是27017.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何(正确)在 Kubernetes 上部署 MongoDB 并从另一个 Pod/作业访问它? 的相关文章

随机推荐

  • Ada95 中的线程和信号量

    如何在 Ada95 中使用线程 我可以使用哪些函数来创建 销毁 停止和启动它们 我如何在这种语言中使用信号量 并发性内置于该语言中 因此您可以为任务 即线程 和受保护对象 即比信号量 互斥体 条件变量更强大 使用特定的 Ada 语法 这使得
  • 如何在按钮上添加图像(左)和文本

    如何在按钮上添加图像 左 和文本 举例说明 use android drawableLeft drawable image 在你的布局 xml 中 你也可以从代码中做到这一点 Drawable icon getContext getReso
  • 未调用委托方法“clickedButtonAtIndex:”

    我使用以下代码创建了一个带有两个按钮的警报视图 UIAlertView alertView UIAlertView alloc initWithTitle title message msg delegate nil cancelButto
  • 已删除的类会丢弃错误消息未知>:0:错误:没有这样的文件或目录:

    因此 我和一些朋友正在从事 bitbucket 项目 并且已经意识到 bitbucket 有时不会同步所有文件 但事情是这样的 我继续工作并创建了一个类 我基本上复制了一个旧的视图控制器 称为WelcomescreenViewControl
  • 如何在Unity中制作2D动画

    因此 我正在 Unity 中为 Android 和 iOS 儿童制作 3D 游戏 但我是游戏开发新手 规划资源确实很困难 我们需要创建 2D 动画 纸质角色 并且角色必须具有出色的动画细节 我们一直在考虑几种选择 我们可以创建逐帧动画 但我
  • 使用 AWS Cloudfront 的 hls.js CORS 存在 Cookie 问题

    我正在尝试使用 Cloudfront HLS 功能设置视频流 但我无法让 Hls js 在请求中发送我的凭据 cookie 我已经将 Cloudfront 配置为转发 cookie 和转发访问控制标头 我还设置了 S3 CORS 策略以包括
  • 什么时候在 Java 中使用可变参数?

    我害怕可变参数 我不知道用它们做什么 另外 让人们想传递多少参数就感觉很危险 适合使用它们的上下文示例是什么 Varargs are useful对于任何需要处理的方法不确定数量的物体 一个很好的例子是String format http
  • 使用正则表达式 python 查找电子邮件[重复]

    这个问题在这里已经有答案了 我想在文本文件中查找有效的电子邮件地址 这是我的代码 email re findall r a zA Z w line 但我的代码显然不包含 符号之前有数字的电子邮件地址 我的代码无法处理没有有效结尾的电子邮件地
  • docker build 和 docker run 后如何访问 my falcon 应用程序?

    作为后续问题Docker运行找不到可执行文件 uwsgi https stackoverflow com questions 49073975 docker run cannot find executable uwsgi 我已经成功执行了
  • 聚焦于 UISearchBar 但键盘不出现

    我已经阅读了很多关于如何在打开搜索视图时聚焦搜索栏以使键盘出现的解决方案 所有这些都是这样的 searchBar becomeFirstResponder mine is self searchDisplayController searc
  • 使用 ARC 在其自己的完成块中引用 NSOperation 对象

    我在将一些 NSOperation 代码转换为 ARC 时遇到困难 我的操作对象使用一个完成块 该完成块又包含一个更新主线程上的 UI 的 GCD 块 因为我从操作对象自己的完成块内部引用操作对象 所以我使用 weak 指针来避免内存泄漏
  • 具有字符串分类值的 OneHotEncoder

    我有以下 numpy 矩阵 M a 5 0 2 a 2 1 3 as b 1 2 3 as M np array M 我想对分类值进行编码 a b as 我尝试使用它进行编码OneHot编码器 http scikit learn org s
  • 使用 split/join 将字符串替换为数组

    我正在尝试替换的值item与数组中的值arr 但只有当我使用时我才会得到 arr 1 arr 2 如果我让arr 返回abcdefg 我是 PHP 程序员 我有一个最小的 JavaScript 的概念 有人能给我指点一下吗 var item
  • 如何将图像转换为字符流

    我发现图像可以存储为某种字符串 举个例子 我已经包含了一个带有图像的 ms word 部分 我保存了一个带有图像的word文件并将其保存为xml格式 当我在记事本中打开 xml 文件时 我得到以下部分 它必须是存储为某种文本流的图像 在 n
  • NODE.JS:致命错误 - JS 分配失败 - 解析大型 excel 文件时内存不足

    我正在使用nodejs使用模块 jsxlsx async 解析xlsx文件 并且值将存储在mongodb中 我的代码 xlsx file function err wb if err handling err get data array
  • 无法编辑 IORegistryEntry

    我正在 Mac 上创建一个软件 我想更改 IORegistryEntry 的值 我可以在 IORegistryExplorer 上查看它 但无法编辑它 所以我的理解是我必须通过代码来编辑它 这是我的代码 CFMutableDictionar
  • lambda 表达式的模式匹配

    21 Primitive recursion constructor 22 pr Int gt Int gt Int gt Int gt Int gt Int 23 pr f g xs 0 gt f xs 24 pr f g xs y 1
  • 为什么投影与平铺的比例值存在差异?

    使用d3 geo tile https github com d3 d3 plugins tree master geo tile插件 示例都在地图投影的比例和传递给tile 函数的比例之间存在差异 尤其 tile scale projec
  • 弹簧自动装配不起作用返回 null

    我现在正在学习春天 这是我的示例代码 我正在使用 jersey spring hibernate 和 mysql 作为 REST 服务 CustomerServiceImpl java这是 REST 端点 部分代码 package com
  • 如何(正确)在 Kubernetes 上部署 MongoDB 并从另一个 Pod/作业访问它?

    一 问题描述 我正在尝试运行MongoDB Deployment Service on Kubernetes其他地方Pods Jobs or Containers可以访问它 到目前为止 我显然已经成功地部署了它 但是每当我尝试从内部访问它时