我想检查我的mongo数据库,不确定我的应用程序是把数据放在哪个数据库。基本上,我已经使用API(部署在gke中)配置了一个非常简单的tasks应用程序,它反过来连接到同一个gke集群中的mongo数据库。应用程序工作正常。这个链接link
下面是我的应用yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: tasksapp
labels:
app: tasksapp
spec:
replicas: 1
selector:
matchLabels:
app: tasksapp
template:
metadata:
labels:
app: tasksapp
spec:
containers:
- name: tasksapp
image: myimage/1.0
ports:
- containerPort: 5000
imagePullPolicy: Always
连接到数据库的python代码段--->This没有用户名/密码。不确定它正在连接到哪个数据库(即使在代码中它显示为“dev”)。这就是为什么我想检查mongo db pod。
from bson.objectid import ObjectId
import socket
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://mongo:27017/dev"
mongo = PyMongo(app)
db = mongo.db
@app.route("/")
def index():
hostname = socket.gethostname()
return jsonify(
message="Welcome to Tasks app! I am running inside {} pod!".format(hostname)
)
mongo db部署yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo
spec:
selector:
matchLabels:
app: mongo
template:
metadata:
labels:
app: mongo
spec:
containers:
- name: mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: storage
mountPath: /data/db
volumes:
- name: storage
persistentVolumeClaim:
claimName: mongo-pvc
问题是当我登录到mongo的pod时,mongo命令无法识别,如下所示?
kubectl exec -it mongo-869f6488c8-jnkgp -- /bin/bash
root@mongo-869f6488c8-jnkgp:/# cd home
root@mongo-869f6488c8-jnkgp:/home# ls
root@mongo-869f6488c8-jnkgp:/home# mongo
bash: mongo: command not found
2条答案
按热度按时间bzzcjhmw1#
您的部署没有指定image标记,因此将运行最新版本的mongo(当前为v6)。
v6 mongo不包含这个遗留的
mongo
shell;已替换为mongosh
尽管如此,Ernani提出的观点也是相关的。
wsxa1bj12#
首先,不建议将MongoDB作为
Deployment
运行,而且有些人通常会避免在Kubernetes中使用有状态应用程序,例如数据库,因为它可能会导致许多问题,并且很难管理。一些托管服务确实有帮助,例如Atlas for MongoDB。考虑到这个环境是用于测试目的或自我管理,我会使用Helm chart**(在开发模式下)(如Bitnami的)或更优雅和高级的Operator(如MongoDB Community Operator)(在生产环境下,如果我真的知道我在做什么,并关心PVC的保留模式,常量备份等)运行Mongo**
除此之外,对于您的实际用例,它取决于您正在部署应用程序的
namespace
和Mongo的StatefulSet/Deployment/Pod
。如果您只是在
default
命名空间中部署它,请确保将Python应用程序中Mongodb的主机名指向MongoDB端口上的<mongodb-svcname>.default.svc.cluster.local
,通常默认为27017
所以,如果你的服务名为
mongodb-svc
,为了让你的Python应用能够连接到它,你应该使用mongodb-svc.default.svc.cluster.local:27017
作为它的有效主机名。确保
<service-name>
和<namespace>
都匹配,并且不要忘记端口