cronjob 控制器

Cronjob是比job控制器更加高级的一种控制器类型。Cronjob基于job,并且增加了时间调度

(1)在未来的某个指定时间运行一次Job,比如执行某个临时的任务

(2)周期性的运行job,比如定期备份、清理系统文件

CronJob的模板

[root@master ~]# vi cronjobv1.yaml

apiVersion: batch/v1beta1  #此控制器目前只存在于beta1

kind: CronJob

metadata:

  name: String

  namespace: String

  labels:      #元数据的标签列表

    key:       #标签的键值对

  annotations: #自定义注解列表 

    key: value   #定义多个注解的键值对

spec:

  schedule: #指定的任务运行周期,格式和Cron类似

  jobTemplate: {JobTemplate}   #job的模板

  startingDeadSeconds: int  #启动job的期限(秒为单位),若执行时间超出期限,Job则认定为失败,没有指定则>没有期限

  concurrencyPolicy: Allow/Forbid/Replace   #如果上一个周期的Job未执行完毕,而下一个周期已经开始,在这种

并发的场景下采用的策略。默认为Allow,允许并发运行Job;Forbid禁止并发运行,如果上一个周期的Job未执行完毕>,下一个Job直接忽略掉;Replace表示取消正在运行的Job,用一个新的来替换

  suspend: boolean  #如果设置未True,上一个Job的周期为执行完成,下一周期已经开始,则后续所有的执行都会被挂起

  successfulJobsHistoryLimit: int  #保留多少条执行成功的Job记录,默认为3

  failedJobsHistoryLimit: int  ##保留多少条执行失败的Job记录,默认为1

[root@master ~]# vi testcronjobv1.yaml

apiVersion: batch/v1beta1  #此控制器目前只存在于beta1

kind: CronJob

metadata:

  name: testcronjob

spec:

  schedule: "*/1 * * * *"

  jobTemplate: 

    spec:

      template:

        spec:

          restartPolicy: Never

          containers:

          - name: testcronjob

            image: busybox

            imagePullPolicy: IfNotPresent

            command: ['sh','-c']

            args: ['echo "Start Job!";sleep 20; echo "Job Done!"']

[root@master ~]# kubectl  apply -f testcronjobv1.yaml

Warning: batch/v1beta1 CronJob is deprecated in v1.21+, unavailable in v1.25+; use batch/v1 CronJob

cronjob.batch/testcronjob created

[root@master ~]# kubectl  get CronJob

NAME          SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE

testcronjob   */1 * * * *   False     1        3s              58s

[root@master ~]# kubectl  get job

NAME                   COMPLETIONS   DURATION   AGE

testcronjob-28078629   1/1           23s        106s

testcronjob-28078630   1/1           21s        46s

其他控制器的使用(ReplicationController ReplicaSet

两者之间并无差异,只是名字不同,Controller是最早的控制版本,后来被Set取代,到了Deployment控制器出现,两者很少单独使用。

[root@master ~]# cat testdeployment.yaml

apiVersion: apps/v1              

kind: ReplicaSet                 

metadata:    

  name: testdeployment           

spec:                          

  replicas: 3                

  selector:                       

    matchLabels:

      example: deploymentnginx

  template:

    metadata:

      labels:

        example: deploymentnginx

    spec:

      containers:

      - name: nginx

        image: nginx:1.7.9

        ports:

        - containerPort: 80

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值