1、公司es用来做EFK存容器日志,但是容器日志过于庞大,es磁盘空间动不动就满了,经常需要登录es机器手动去调es接口删除历史索引,过于繁琐
2、本着能懒就懒的原则,做一个一劳永与的操作,更改灵活就解放双手了,美滋滋
3、废话不多说,直接上yaml
- 关键词: k8s、cronjob、es index
#设置定时删除es索引pod
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: es-delete-job
namespace: xxxx
spec:
schedule: "10 1 * * *" #定时时间,注意时区,所以这里+8h,所以早上9点10执行
successfulJobsHistoryLimit: 1 #最大保留成功的pod
failedJobsHistoryLimit: 0
startingDeadlineSeconds: 30 #下一个pod会在30s后把上一个pod删了,保留自己
concurrencyPolicy: Forbid #禁止并发
jobTemplate:
spec:
template:
spec:
containers:
- name: es-delete-job
image: ubuntu:23.04 #这里随便选了个镜像,有curl命令即可
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- |
curl -XDELETE --user elastic:xxxxx -s "http://es-log:9200/xxx-$(date +"%Y.%m.%d" -d "18 days ago")" #es地址、密码、删除18天前的索引名称,索引开头为xxx
curl -XDELETE --user elastic:xxxxx -s "http://es-log:9200/aaaaaa-$(date +"%Y.%m.%d" -d "18 days ago")"
restartPolicy: OnFailure