• kubernetes 配置示例


    1. Job 定义示例

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      parallelism: 2
      completions: 4
      template:
        spec:
          containers:
          - name: pi
            image: resouer/ubuntu-bc
            command: ["sh", "-c", "echo 'scale=1000; 4*a(1)' | bc -l "]
          restartPolicy: Never
    # job 的重试次数  
      backoffLimit: 4
    # 设置最长运行时间(单位:秒),一旦超过这个时间,这个 Job 的所有 Pod 都会被中止
      activeDeadlineSeconds: 100

    在 Job 对象中,负责并行控制的参数有两个:

    1. spec.parallelism,它定义的是一个 Job 在任意时间最多可以启动多少个 Pod 同时运行;
    2. spec.completions,它定义的是 Job 至少要完成的 Pod 数目,即 Job 的最小完成数。

    2. CronJob 定义示例

    apiVersion: batch/v1
    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
              restartPolicy: OnFailure

    定时任务的特殊性,很可能某个 Job 还没有执行完,另外一个新 Job 就产生了。这时候,你可以通过 spec.concurrencyPolicy 字段来定义具体的处理策略。比如:
    1. concurrencyPolicy=Allow,这也是默认情况,这意味着这些 Job 可以同时存在;
    2. concurrencyPolicy=Forbid,这意味着不会创建新的 Pod,该创建周期被跳过;
    3. concurrencyPolicy=Replace,这意味着新产生的 Job 会替换旧的、没有执行完的 Job。


    而如果某一次 Job 创建失败,这次创建就会被标记为“miss”。当在指定的时间窗口内,miss 的数目达到 100 时,那么 CronJob 会停止再创建这个 Job。这个时间窗口,可以由 spec.startingDeadlineSeconds 字段指定。比如 startingDeadlineSeconds=200,意味着在过去 200 s 里,如果 miss 的数目达到了 100 次,那么这个 Job 就不会被创建执行了。


  • 相关阅读:
    linux 常用命令
    restframeword之视图,解析器
    restframework之序列化
    restframeword之APIview
    MongoDB
    redis
    mysql优化
    (java)图片像素的操作
    关于java AudioInputStream播放短音频没声音的问题
    java向文件中追加内容的一种简单方式
  • 原文地址:https://www.cnblogs.com/langfanyun/p/15056160.html
Copyright © 2020-2023  润新知