【问题标题】:Disabling cronjob in Kubernetes在 Kubernetes 中禁用 cronjob
【发布时间】:2019-03-17 12:25:27
【问题描述】:

我已安排一个应用程序在 Kubernetes 中作为 Cronjob 运行。当有代码更改时,我也在更改 CronJob 的图像。

我正在寻找可以禁用当前运行的 CronJob 并使用最新映像版本部署新 CronJob 的选项。

如何在不删除 yaml 清单的情况下禁用 Kubernetes 中的 Cronjob?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    如果您想通过补丁暂停 cronjob,请使用:

    kubectl patch cronjobs <job-name> -p '{"spec" : {"suspend" : true }}'
    

    【讨论】:

    • 我正在尝试暂停使用上述命令,但收到错误错误:无法解析“'{spec”:yaml:发现流的意外结束
    • kubectl patch cronjobs &lt;job-name&gt; -p '{\"spec\" : {\"suspend\" : true }}'
    • @Zhongxia Zhou 补丁挂起为假
    • 一次性暂停所有 cronjobs kubectl get cronjobs | grep False | cut -d' ' -f 1 | xargs kubectl patch cronjobs -p '{"spec" : {"suspend" : true }}'
    【解决方案2】:

    编辑您当前的 cronjob 资源以包含 .spec.suspend field and set it to true。当前运行的所有作业都将完成,但未来的作业将暂停。

    如果您还需要停止当前正在运行的作业,则必须将其删除

    【讨论】:

      【解决方案3】:
      kubectl patch cronjobs job-name -p "{\"spec\" : {\"suspend\" : true }}"
      

      【讨论】:

        【解决方案4】:

        您可以使用对 Cron Job 格式有效但实际上该日期不应出现在日历日期(如 2 月 31 日)中的任何时间。

        * * 31 2 *
        

        【讨论】:

          【解决方案5】:

          带有命令行的选项 1

          $ kubectl patch cronjobs $(kubectl get cronjobs | awk '{ print $1 }' | tail -n +2) -p '{"spec" : {"suspend" : true }}'
          

          带有命令行的选项 2:

          $ kubectl get cronjobs | grep False | cut -d' ' -f 1 | xargs kubectl patch cronjobs -p '{"spec" : {"suspend" : true }}'
          

          选项 3 创建资源配额。我相信这是更清洁的选择。

          cat <<EOF | kubectl apply -f -
          # https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota
          apiVersion: v1
          kind: ResourceQuota
          metadata:
            name: limit-generic-resources
          spec:
            hard:
              pods: "0"
              count/persistentvolumeclaims : "0"
              count/services : "0"
              count/secrets : "0"
              count/configmaps : "0"
              count/replicationcontrollers : "0"
              count/deployments.apps : "0"
              count/replicasets.apps : "0"
              count/statefulsets.apps : "0"
              count/jobs.batch : "0"
              count/cronjobs.batch : "0"
          EOF
          

          【讨论】:

            猜你喜欢
            • 2021-05-11
            • 1970-01-01
            • 1970-01-01
            • 2021-07-05
            • 2021-07-19
            • 2021-10-23
            • 2018-07-31
            • 2021-08-27
            • 2020-11-20
            相关资源
            最近更新 更多