【发布时间】: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