【发布时间】: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