【问题标题】:Kubernetes Not Scheduling CronJobKubernetes 没有调度 CronJob
【发布时间】:2022-01-20 07:45:47
【问题描述】:

我正在运行一个 microk8s 实例,并试图让 CronJob 每 60 秒运行一次,但它根本不起作用。我的理解是 CronJob 不需要任何手动干预来启动它们,但是这个系统已经运行了一个多月,我没有看到 cron 作业的 pod(处于 any 状态) ,所以我决定尝试使用k create job --from=cronjob/health-status-cron health-status-cron 手动启动它。手动启动后,作业成功完成:

health-status-cron-2hh96                   0/1     Completed   0          17h

我希望 Kubernetes 会开始安排未来的作业,但它没有。以下是我的清单(其中一些是用 Helm 模板化的,但这不重要):

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: health-status-cron
  namespace: {{ .Values.global.namespace }}
  labels:
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/release-name: {{ .Release.Name }}
    app.kubernetes.io/release-namespace: {{ .Release.Namespace }}
spec:
  schedule: "* * * * *"
  concurrencyPolicy: Replace
  successfulJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: health-status-cron
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - /usr/bin/curl -k http://restfulservices/api/system-health
          restartPolicy: OnFailure

另外值得注意的是,根据以下内容,该作业尚未安排 35 天:

$ k -ntango get cronjobs
NAME                   SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
health-status-cron     * * * * *   False     0        35d             36d

在这一点上,我完全不知道我做错了什么,也不知道为什么这个特定的工作没有运行。非常感谢任何帮助。

编辑:我最终炸毁了整个命名空间并重新部署。不幸的是,我仍然不知道根本原因,但现在一切似乎都正常了。

【问题讨论】:

    标签: kubernetes cron microk8s


    【解决方案1】:

    您可以检查其他几件事:

    1. 您是否有任何处于“失败”状态的 cron pod?如果这样做,请检查这些 pod 以了解原因。
    2. 它曾经工作过然后突然停止了吗?
    3. cronjob 资源在事件中是否有任何内容? kubectl describe cronjob health-status-cron -n tango
    4. 您的 cron 运行的代码是否需要超过 1 分钟才能完成?如果是这样,您的日程安排过于激进,您可能希望放宽日程安排
    5. cronjob 控制器也有一些限制,您可能需要检查:https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#cron-job-limitations。特别是“错过的工作”的概念。如果 cronjob 控制器“错过”调度 100 个或更多作业,它将“冻结”该作业并且不再安排它。您是否会在不使用集群或类似集群时对其进行缩减?
    6. 集群中是否安装了任何自定义/第三方 webhook 或插件?这些可能会干扰 pod 创建。
    7. 您是否在命名空间中创建了任何作业kubectl get jobs -n tango 如果您发现大量作业对象,请检查它们以了解它们为什么没有生成 pod。

    我在 2020 年遇到了一个有点类似的问题(文章中有我在 Kubernetes 项目本身提出的问题的链接):https://blenderfox.com/2020/08/07/the-snowball-effect-in-kubernetes/

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 2019-09-13
      • 1970-01-01
      • 2020-07-18
      • 2020-12-16
      • 2021-05-16
      • 2020-11-20
      • 2020-10-02
      相关资源
      最近更新 更多