为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2022-06-07 18:47:52
一、问题描述我正在尝试在其他/或可以访问它的地方运行MongoDB Deployment+ 。到目前为止,我显然已经成功部署了它,但是每当我尝试从,或中访问它时,我都会得到(请注意,我正在使用而不是为了访问主机;并且我的超时时间为 30 秒):ServiceKubernetesPodsJobsContainersJobPodContainer0.0.0.0localhostpymongo.errors.ServerSelectionTimeoutError: 0.0.0.0:30001: [Errno 111] Connection refused2.在本地,它似乎工作......如果我尝试通过 a 访问它Python CLI,它看起来确实有效:>>> 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和Service配置我的MongoDB deployment(改编自Nigel Poulton 的 Kubernetes Book)是:apiVersion: apps/v1kind: Deploymentmetadata:  name: mymongodb-depspec:  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它service是:apiVersion: v1kind: Servicemetadata:  name: hello-svc  labels:    app: hello-mongospec:  type: NodePort  ports:  - port: 27017    nodePort: 30001    protocol: TCP  selector:    app: hello-mongo
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

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

在集群中,您应该引用MongoDB Podusing<service-name>.<namespace-name>.svc.cluster.local而不是0.0.0.0. 所以,在你的情况下,host最终会是hello-svc.default.svc.cluster.local.

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


查看完整回答
反对 回复 2022-06-07
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号