标签:grep present res spec tar 方式 label 替换 false
CronJob用于以时间为基准周期性地执行任务,这些自动化任务和运行在Linux或UNIX系统上的CronJob一样。CronJob对于创建定期和重复任务非常有用,例如执行备份任务、周期性调度程序接口、发送电子邮件等。
对于Kubernetes 1.8以前的版本,需要添加--runtime-config=batch/v2alpha1=true参数至APIServer中,然后重启APIServer和Controller Manager用于启用API,对于1.8以后的版本无须修改任何参数,可以直接使用,本节的示例基于1.8以上的版本。
创建CronJob有两种方式,一种是直接使用kubectl创建,一种是使用yaml文件创建。
[root@instance-gvpb80ao yaml]# cat cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster; sleep 10
restartPolicy: OnFailure
[root@instance-gvpb80ao yaml]# kubectl apply -f cronjob.yaml
cronjob.batch/hello created
[root@instance-gvpb80ao yaml]# kubectl get cronjobs.batch
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 <none> 4sCopy to clipboardErrorCopied
CronJob每次调用任务的时候会创建一个Pod执行命令,执行完任务后,Pod状态就会变成Completed。
[root@instance-gvpb80ao yaml]# kubectl get pod --show-labels | grep controller-uid
hello-1600448400-lr5v9 0/1 Completed 0 36s controller-uid=d0d61ba8-f6c7-4d4f-8013-3c38c8a30ff8,job-name=hello-1600448400
[root@instance-gvpb80ao yaml]# kubectl logs -f hello-1600448400-lr5v9
Fri Sep 18 17:00:13 UTC 2020
Hello from the Kubernetes clusterCopy to clipboardErrorCopied
删除CronJob
[root@instance-gvpb80ao yaml]# kubectl delete -f cronjob.yaml
cronjob.batch "hello" deletedCopy to clipboardErrorCopied
参数示意
apiVersion: v1
items:
- apiVersion: batch/v1beta1
kind: CronJob
metadata:
labels:
run: hello
name: hello
namespace: default
spec:
concurrencyPolicy: Allow
failedJobsHistoryLimit: 1
jobTemplate:
metadata:
creationTimestamp: null
spec:
template:
metadata:
creationTimestamp: null
labels:
run: hello
spec:
containers:
- args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
image: busybox
imagePullPolicy: Always
name: hello
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: OnFailure
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
schedule: ‘*/1 * * * *‘
successfulJobsHistoryLimit: 3
suspend: falseCopy to clipboardErrorCopied
其中各参数的说明如下,可以按需修改:
相对于Linux上的计划任务,Kubernetes的CronJob更具有可配置性,并且对于执行计划任务的环境只需启动相对应的镜像即可。比如,如果需要Go或者PHP环境执行任务,就只需要更改任务的镜像为Go或者PHP即可,而对于Linux上的计划任务,则需要安装相对应的执行环境。此外,Kubernetes的CronJob是创建Pod来执行,更加清晰明了,查看日志也比较方便。可见,Kubernetes的CronJob更加方便和简单。
标签:grep present res spec tar 方式 label 替换 false
原文地址:https://www.cnblogs.com/tcy1/p/13832496.html