【问题标题】:How to connect mongodb service by MONGO_URL when the db service is clusterIP?db服务为clusterIP时如何通过MONGO_URL连接mongodb服务?
【发布时间】:2020-01-02 07:02:30
【问题描述】:

我将一个流星应用程序分为 2 个容器:应用程序和节点。在docker的世界里,app可以连接节点成功,但是在kubernetes中,我就遇到了困难。

我的想法是先启动mongodb并创建mongodb服务,然后创建app连接mongodb服务,但不知道如何让app使用MONGO_URL连接服务的clusterIP。

所以,我有一个显示如下的应用程序部署,

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: app
  name: mycloud
spec:
  replicas: 1
  selector:
    matchLabels:
     app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: app
        image: yufang/cloud_docker_app
        ports:
        - containerPort: 3000
        env:
        - name: MONGO_URL
          value: mongodb://localhost:27017/meteor # here comes the key point. How to specify the service's ip? or use the selector to specify the service's label?
        - name: PORT
          value: "3000"
       - name: ROOT_URL
          value: http://localhost

服务描述如下,

apiVersion: v1
kind: Service
metadata:
 name: mongo
 labels:
  name: mongo
spec:
 ports:
  - port: 27017
    targetPort: 27017
 clusterIP: None
 selector:
  app: mongo

感谢任何想法。

【问题讨论】:

  • MongoDB是在同一个集群上运行还是在集群外运行?
  • 使用服务名。服务的重点是将名称绑定到可能更改的 IP。即:mongodb://mongo:27017
  • 服务和mongo在同一个节点/机器上,感谢@bserdar的帮助
  • 方法有多种,选择适合自己的。描述 MongoDB 服务并获取 pod IP 并将其用作 mongo 主机。或者您也可以使用已经由 KubeDNS 管理的服务名称进行连接。您还可以创建一个新的服务发现记录以将其指向 mongo 服务并使用它来连接到 mongo 实例

标签: kubernetes yaml


【解决方案1】:

如果mongodb和mycloud在同一个命名空间,那么可以使用http://mongodb:27017

如果它们位于不同的命名空间中,那么您可以使用 FQDN http://mongodb.namespace.svc.cluster.local:27017

参考:https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2019-01-03
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2022-07-14
    相关资源
    最近更新 更多