我们有一种情况,当Kubernetes达到容器的最大内存限制时,它将杀死Mongo容器。尽管它希望K8能够以这种方式工作,但是感觉Mongo不会重复使用其内存,因为即使用户负载和事务相同,它也会一天天增加内存使用量,所以该怎么检查才能限制Mongo达到容器的最大内存,或定期刷新Mongo内存。
我试图增加内存,以帮助豆荚在K8杀死它之前继续运行几天
"containers": [
{
"name": "mongo",
"image": "dockercentral.com:5870/com.public/mongodb:3.6",
"ports": [
{
"containerPort": 27017,
"protocol": "TCP"
}
]
"resources": {
"limits": {
"cpu": "1",
"memory": "24Gi"
},
"requests": {
"cpu": "250m",
"memory": "24Gi"
}
}
"name": "MONGO_SECURITY",
"value": "true"
}
],
"resources": {
"limits": {
"cpu": "500m",
"memory": "1Gi"
},
"requests": {
"cpu": "150m",
"memory": "256Mi"
}
},
答案 0 :(得分:0)
基于MongoDB,Inc.的 Stennie 在评论中写的内容。
kube .yaml中的此命令对我有用:
command:
- "sh"
- "-c"
- >
echo "storage:" >> /etc/mongod.conf;
echo " wiredTiger:" >> /etc/mongod.conf;
echo " engineConfig:" >> /etc/mongod.conf;
echo " cacheSizeGB: 2" >> /etc/mongod.conf;
echo "replication:" >> /etc/mongod.conf;
echo " replSetName: YOUR_REPL_NAME" >> /etc/mongod.conf;
mongod --config /etc/mongod.conf;
还有一种在运行时进行设置的方法:
db.adminCommand( { "setParameter": 1, "wiredTigerEngineRuntimeConfig":"cache_size=2G"})
它也可以正常工作,但是通过kuberneties yaml文件看起来更容易,因为要发出命令,您必须等到mongo启动并运行。
注意: 确保您的:
resources:
limits:
memory:
允许额外的1G 用于系统。