我使用 openshift 命令创建了一个作业;
oc create job <my-job> --from=cronjob/<my-cronjob>
,但它不会自动创建 Pod。我找不到这里缺少什么。可能需要更改
my-cronjob
的 yaml 上的某些内容。所以这是 yaml;
kind: CronJob
apiVersion: batch/v1
metadata:
annotations:
meta.helm.sh/release-name: xxx
meta.helm.sh/release-namespace: xxx
resourceVersion: '7504720716'
name: my-cronjob
uid: xxxx
creationTimestamp: '2023-02-17T14:27:25Z'
generation: 3
managedFields:
- manager: helm
operation: Update
apiVersion: batch/v1
time: '2023-04-19T09:06:08Z'
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
.: {}
'f:meta.helm.sh/release-name': {}
'f:meta.helm.sh/release-namespace': {}
'f:labels':
.: {}
'f:app.kubernetes.io/managed-by': {}
'f:spec':
'f:concurrencyPolicy': {}
'f:failedJobsHistoryLimit': {}
'f:jobTemplate':
'f:spec':
'f:template':
'f:spec':
'f:containers':
'k:{"name":"my-job"}':
.: {}
'f:envFrom': {}
'f:image': {}
'f:imagePullPolicy': {}
'f:name': {}
'f:resources':
.: {}
'f:limits':
.: {}
'f:cpu': {}
'f:ephemeral-storage': {}
'f:memory': {}
'f:requests':
.: {}
'f:cpu': {}
'f:ephemeral-storage': {}
'f:memory': {}
'f:terminationMessagePath': {}
'f:terminationMessagePolicy': {}
'f:dnsPolicy': {}
'f:restartPolicy': {}
'f:schedulerName': {}
'f:securityContext': {}
'f:terminationGracePeriodSeconds': {}
'f:schedule': {}
'f:successfulJobsHistoryLimit': {}
'f:suspend': {}
- manager: kube-controller-manager
operation: Update
apiVersion: batch/v1
time: '2023-08-16T08:05:04Z'
fieldsType: FieldsV1
fieldsV1:
'f:status':
'f:lastScheduleTime': {}
subresource: status
- manager: Mozilla
operation: Update
apiVersion: batch/v1
time: '2023-12-05T09:10:40Z'
fieldsType: FieldsV1
fieldsV1:
'f:spec':
'f:jobTemplate':
'f:spec':
'f:template':
'f:spec':
'f:containers':
'k:{"name":"my-job"}':
'f:command': {}
namespace: ifxbertsearch-staging
labels:
app.kubernetes.io/managed-by: Helm
spec:
schedule: 0 1 * * *
concurrencyPolicy: Forbid
suspend: true
jobTemplate:
metadata:
creationTimestamp: null
spec:
template:
metadata:
creationTimestamp: null
spec:
containers:
- name: my-job
image: >-
xxx
command:
- python
- main.py
- '49'
envFrom:
- configMapRef:
name: env-variables
resources:
limits:
cpu: '4'
ephemeral-storage: 10Mi
memory: 5Gi
requests:
cpu: '2'
ephemeral-storage: 10Mi
memory: 3Gi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
restartPolicy: Never
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
status: {}
所以我需要弄清楚,为什么 cronjob 不创建作业将在其上运行的 pod。
您的 CronJob 已暂停:
spec:
suspend: true
根据文档:
您可以通过设置来暂停 CronJob 的作业执行 可选 .spec.suspend 字段设置为 true。该字段默认为 false。
此设置不会影响 CronJob 已经执行的作业 开始了。
如果您将该字段设置为 true,则所有后续执行都会 暂停(它们仍保持计划状态,但 CronJob 控制器不会 启动作业来运行任务),直到您取消暂停 CronJob。
它还会影响从该 CronJob 手动创建的任何作业,因此您需要在 CronJob 资源中删除该行:)