工作负载 job和crontab - nicoleShuaihui/k8s GitHub Wiki

工作负载(4)-Job和Cronjob

Job:批处理任务

Cronjob:定时批处理

创建Cronjob

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  creationTimestamp: null
  generateName: reload-prometheus
  namespace: 【pg-allen-job】
  name: reload-prometheus
  labels:
    app: reload-prometheus
spec:
  concurrencyPolicy: Replace    # 并发策略。默认值Replace。
  failedJobsHistoryLimit: 2      # 保留的失败记录数。为了减少资源消耗,不建议配置过大。
  schedule: '*/3 * * * *'   # 定时任务的crontab时间配置,按 <minute> <hour> <day of month> <month> <day of week>格式填写。
  startingDeadlineSeconds: 60   # job启动超时时间。
  successfulJobsHistoryLimit: 5   # 保留的成功记录数。为了减少资源消耗,不建议配置过大。
  suspend: false      # 若job未执行完毕,是否挂起后续job。默认值false。
  jobTemplate:
    spec:
      backoffLimit: 3    # 重启次数限制,重启达到次数后,则不再重启。
      template:
        metadata:
          labels:
            app: reload-prometheus
        spec:
          containers:
          - command:        # 定时执行的命令。需要确保命令在容器内能够正常执行。
            - curl
            args:
            - -X
            - PUT
            - --connect-timeout
            - "10"
            - -m
            - "60"
            - https://xxx.xxx.com/paas/ops/reload-prometheus
            image: 172.30.10.185:15000/common/curl-alpine:3.8
            imagePullPolicy: IfNotPresent
            name: reload-prometheus
            resources:
              limits:
                cpu: 800m
                memory: 100Mi
              requests:
                cpu: 100m
                memory: 10Mi
          dnsPolicy: Default
          hostNetwork: true
          restartPolicy: Never   # 重启策略。

等待数分钟,即可查看状态:

# kubectl get cronjob -n pg-allen-job
NAME                SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
reload-prometheus   */3 * * * *   False     0        39s             7m13s

# kubectl get job -n pg-allen-job
NAME                           COMPLETIONS   DURATION   AGE
reload-prometheus-1586920500   1/1           10s        40s

# kubectl get po -n pg-allen-job
NAME                                 READY   STATUS      RESTARTS   AGE
reload-prometheus-1586920500-2qg8b   0/1     Completed   0          48s

# kubectl logs -f reload-prometheus-1586920500-2qg8b -n pg-allen-job
... ...

研究完毕。删除创建的cronjob:

# kubectl delete cronjob reload-prometheus -n pg-allen-job --cascade=true
cronjob.batch "reload-prometheus" deleted

删除cronjob时,若添加--cascade=true,则会级联删除job和pod。

扩展阅读:

⚠️ **GitHub.com Fallback** ⚠️