如何通过cronjob清理mongoDB在kubernetes中的所有日志文件?


  • 我有一个应用程序,通过部署服务工作,并通过Nginx-Ingress-controller与世界通信。

  • 这个应用程序连接到MongoDB数据库。

  • 我要求创建一个cronjob,每天午夜清理一次所有的MongoDB日志。

"添加一个CronJob来清除所有MongoDB日志每天午夜一次-我们想要的用干净的日志开始新的一天!">

我使用Helm来创建Nginx-INgress-controller,以及MongoDB。

有人知道我应该向CronJob添加哪些命令吗?

提前感谢。:)

代码:

apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
对于MongoDB,我使用I helm - artifact hub命令:
  • helm repo add bitnami https://charts.bitnami.com/bitnami
  • 链接到repo- https://artifacthub.io/packages/helm/bitnami/mongodb.

插入到test-mongodb.yaml中的值:

architecture: replicaset
replicaCount: 3
persistence:
storageClass: "standard"
auth:
rootPassword: password
password: password
database: echo
username: koren

如果您想管理日志由于Kubernetes也存储stdin,日志Kubernetes自动管理日志循环,但是如果您的应用程序mongoD日志内部存储在PVC文件系统或你可能需要旋转它daily.

你可以配置mongoD,而不是配置用于删除作业的特殊作业。旋转日志配置文件

/var/log/mongodb/*.log {
daily
missingok
rotate 5
compress
dateext
delaycompress
copytruncate
notifempty
}

示例:https://www.percona.com/blog/2018/09/27/automating-mongodb-log-rotation/

但是,如果您希望运行清除PVC中的日志的作业文件系统或您可以创建侧车容器。

我没有测试过,但是你可以创建简单的代码并在Kubernetes中作为Cronjob运行它,该节点JS或任何脚本将连接到MongoDB简单地管理数据库和轮换日志

db.adminCommand( { logRotate : server } )

连接到DB并旋转日志文档:

https://docs.mongodb.com/manual/tutorial/rotate-log-files/

我认为这将是一个简单的程序,将建立连接并运行旋转查询。

最新更新