Skip to content

Commit 4ebf6b1

Browse files
committed
structure change
1 parent f34e176 commit 4ebf6b1

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

content/en/docs/concepts/workloads/controllers/cron-jobs.md

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ weight: 80
1414

1515
A _CronJob_ creates {{< glossary_tooltip term_id="job" text="Jobs" >}} on a repeating schedule.
1616

17-
One CronJob object is like one line of a _crontab_ (cron table) file on a Unix system. It runs a job periodically on a given schedule, written in [Cron](https://en.wikipedia.org/wiki/Cron) format.
17+
CronJob is meant for performing regular scheduled actions such as backups, report generation, and so on. One CronJob object is like one line of a _crontab_ (cron table) file on a Unix system. It runs a job periodically on a given schedule, written in [Cron](https://en.wikipedia.org/wiki/Cron) format.
1818

19-
Cron jobs have limitations and idiosyncrasies.
19+
CronJobs have limitations and idiosyncrasies.
2020
For example, in certain circumstances, a single cron job can create multiple jobs. See the [limitations](#cron-job-limitations) below.
2121

2222
When the control plane creates new Jobs and (indirectly) Pods for a CronJob, the `.metadata.name`
@@ -31,21 +31,7 @@ characters. This is because the CronJob controller will automatically append
3131
length of a Job name is no more than 63 characters.
3232

3333
<!-- body -->
34-
35-
## CronJob
36-
37-
CronJobs are meant for performing regular scheduled actions such as backups,
38-
report generation, and so on. Each of those tasks should be configured to recur
39-
indefinitely (for example: once a day / week / month); you can define the point
40-
in time within that interval when the job should start.
41-
42-
{{< note >}}
43-
If you modify a CronJob, the changes you make will apply to new jobs that start to run after your modification
44-
is complete. Jobs (and their Pods) that have already started continue to run without changes.
45-
That is, the CronJob does _not_ update existing jobs, even if those remain running.
46-
{{< /note >}}
47-
48-
### Example
34+
## Example
4935

5036
This example CronJob manifest prints the current time and a hello message every minute:
5137

@@ -54,6 +40,7 @@ This example CronJob manifest prints the current time and a hello message every
5440
([Running Automated Tasks with a CronJob](/docs/tasks/job/automated-tasks-with-cron-jobs/)
5541
takes you through this example in more detail).
5642

43+
## Writing a CronJob spec
5744
### Schedule
5845
The `.spec.schedule` is a required field and follows the [Cron](https://en.wikipedia.org/wiki/Cron) syntax below:
5946

@@ -96,10 +83,6 @@ Other than the standard syntax, some macros like `@monthly` can also be used:
9683
| @daily (or @midnight) | Run once a day at midnight | 0 0 * * * |
9784
| @hourly | Run once an hour at the beginning of the hour | 0 * * * * |
9885

99-
{{< caution >}}
100-
Historically you may find the `.spec.schedule` field can be set with a timezone like `CRON_TZ=UTC * * * * *`. This way is not recommended any more and you should consider use the `.spec.timeZone` field as described below.
101-
{{< /caution >}}
102-
10386
To generate CronJob schedule expressions, you can also use web tools like [crontab.guru](https://crontab.guru/).
10487

10588
### Job Template
@@ -161,7 +144,7 @@ none of the corresponding kind of jobs after they finish.
161144

162145
For another way to clean up jobs automatically, see [Clean up finished jobs automatically](/docs/concepts/workloads/controllers/job/#clean-up-finished-jobs-automatically).
163146

164-
## Time zones
147+
### Time zones
165148

166149
For CronJobs with no time zone specified, the kube-controller-manager interprets schedules relative to its local time zone.
167150

@@ -175,10 +158,24 @@ timezone).
175158
When you have the feature enabled, you can set `.spec.timeZone` to the name of a valid [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For example, setting
176159
`.spec.timeZone: "Etc/UTC"` instructs Kubernetes to interpret the schedule relative to Coordinated Universal Time.
177160

161+
{{< caution >}}
162+
Historically you may find the `.spec.schedule` field can be set with a timezone like `CRON_TZ=UTC * * * * *` or `TZ=UTC * * * * *`. This way is not recommended any more and you should consider use the `.spec.timeZone` field as described above.
163+
{{< /caution >}}
164+
178165
A time zone database from the Go standard library is included in the binaries and used as a fallback in case an external database is not available on the system.
179166

180167
## CronJob limitations {#cron-job-limitations}
181168

169+
### Name limitations
170+
When creating the manifest for a CronJob resource, make sure the name you provide is a valid DNS subdomain name. The name must be no longer than 52 characters. This is because the CronJob controller will automatically append 11 characters to the job name provided and there is a constraint that the maximum length of a Job name is no more than 63 characters.
171+
172+
### Modifying a CronJob
173+
If you modify a CronJob, the changes you make will apply to new jobs that start to run after your modification
174+
is complete. Jobs (and their Pods) that have already started continue to run without changes.
175+
That is, the CronJob does _not_ update existing jobs, even if those remain running.
176+
177+
### How a CronJob schedules
178+
182179
A CronJob creates a job object _about_ once per execution time of its schedule. We say "about" because there
183180
are certain circumstances where two jobs might be created, or no job might be created. We attempt to make these rare,
184181
but do not completely prevent them. Therefore, jobs should be _idempotent_.

0 commit comments

Comments
 (0)