使用k8s cronjob ,清除应用生成的日志文件
目前应用日志,tomcat日志 统一输出到 /data/logs/pod名字/ 目录下,并且/data/logs 目录挂载到cephfs上, tomcat 日志使用 cronolog进行日志切割
使用 cronjob 创建一个pod,在每天2点开始 清除日志。
apiVersion: batch/v1beta1 kind: CronJob metadata: name: cleanlog namespace: testihospital spec: concurrencyPolicy: Forbid schedule: "0 2 * * *" jobTemplate: spec: template: spec: containers: - name: cleanlog image: busybox volumeMounts: - name: logs mountPath: /data/logs command: ["/bin/sh"] args: ["-c","find /data/logs/ -type f -mtime +30 -name '*.log' | xargs rm -rf"] volumes: - name: logs persistentVolumeClaim: claimName: cephfs-mount2-pvc restartPolicy: OnFailure successfulJobsHistoryLimit: 1
successfulJobsHistoryLimit 字段指定应保留多少已完成和失败的作业, 显示完成 pod的数量
concurrencyPolicy : cron作业不允许并发运行; 如果是时候运行新作业并且之前的作业尚未完成,则cron作业会跳过新作业
创建cron作业后,使用以下命令获取其状态
[root@master1 crontab]# kubectl get cronjob hello -n testihospital NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE hello */1 * * * * False 0 44s 20m
cron作业尚未安排或运行任何作业
[root@master1 ~]# kubectl get jobs --watch -n testihospital NAME COMPLETIONS DURATION AGE hello-1543827720 1/1 6s 35s
pod的状态如下