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

一、问题描述

我正在尝试在其他/或可以访问它的地方运行MongoDB Deployment+ 。到目前为止,我显然已经成功部署了它,但是每当我尝试从,或中访问它时,我都会得到(请注意,我正在使用而不是为了访问主机;并且我的超时时间为 30 秒):ServiceKubernetesPodsJobsContainersJobPodContainer0.0.0.0localhost


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

2.在本地,它似乎工作......

如果我尝试通过 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/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

它service是:


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


红糖糍粑
浏览 115回答 1
1回答

qq_遁去的一_1

您在集群内部和外部的连接体验Kubernetes会有所不同。在集群中,您应该引用MongoDB&nbsp;Podusing<service-name>.<namespace-name>.svc.cluster.local而不是0.0.0.0.&nbsp;所以,在你的情况下,host最终会是hello-svc.default.svc.cluster.local.另请注意,port应该将 引用为在集群中看到的NodePort,而不是用于从外部访问集群的 。在你的情况下,那将是27017.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python