You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Percona MongoDB Operator如何创建mongod与Filebeat共享的emptyDir卷

emptyDir共享卷配置方法(适配Percona MongoDB Operator场景)
  • 先定义共享emptyDir卷:直接改StatefulSet的话就在spec.template.spec.volumes字段下加,走Operator配置的话就在CR的replset额外卷配置段下加,卷名可以直接叫mongo-logs,emptyDir默认用节点临时存储,基础配置不用加额外参数:
volumes:
- name: mongo-logs
  emptyDir: {}
  • 给mongod主容器配挂载:找到mongod容器的volumeMounts配置段,把mongo-logs卷挂到mongod的日志输出目录就行,Percona官方MongoDB镜像默认日志存在/var/log/mongodb/路径下,挂载配置参考:
volumeMounts:
- name: mongo-logs
  mountPath: /var/log/mongodb/

如果你的mongod之前改了自定义日志输出路径,这里的mountPath必须和实际日志路径完全一致,不然日志写不进共享卷,Filebeat自然采不到。

  • 给Filebeat sidecar配挂载:找到同Pod里Filebeat容器的volumeMounts配置段,挂同一个mongo-logs卷就行,Filebeat只需要读日志,建议加个只读标记,避免sidecar误删改日志文件:
volumeMounts:
- name: mongo-logs
  mountPath: /var/log/mongodb/
  readOnly: true

踩坑提醒:如果挂载后报权限拒绝,直接在Pod级别的securityContext里加fsGroup: 1001就行。Percona MongoDB镜像默认用UID/GID 1001的用户运行,加了这个配置kubelet会自动把挂载目录的组权限赋给对应ID,刚好满足mongod写日志、Filebeat读日志的权限要求,不用手动进容器改目录权限:

securityContext:
  fsGroup: 1001
  • 别直接改rs0对应的StatefulSet资源:Percona Operator会周期性调谐管理的资源,你手动改的StatefulSet配置过几分钟就会被Operator覆盖回去。所有卷、sidecar的配置都要写到PerconaServerMongoDB自定义资源的对应配置段里,让Operator自动生成最终的StatefulSet配置,改完等Pod滚动重建就生效。

内容的提问来源于stack exchange,提问作者Naama L Ackerman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:54:34