1
1
---
2
- title : Running Automated Tasks with a CronJob
2
+ title : CronJobを使用して自動化タスクを実行する
3
3
min-kubernetes-server-version : v1.21
4
- reviewers :
5
- - chenopis
6
4
content_type : task
7
5
weight : 10
8
6
---
9
7
10
8
<!-- overview -->
11
9
12
- CronJobs was promoted to general availability in Kubernetes v1.21. If you are using an older version of
13
- Kubernetes, please refer to the documentation for the version of Kubernetes that you are using,
14
- so that you see accurate information. Older Kubernetes versions do not support the ` batch/v1 ` CronJob API.
10
+ CronJobは、Kubernetes v1.21で一般利用(GA)に昇格しました。古いバージョンのKubernetesを使用している場合、正確な情報を参照できるように、使用しているバージョンのKubernetesのドキュメントを参照してください。古いKubernetesのバージョンでは、` batch/v1 ` CronJob APIはサポートされていません。
15
11
16
- You can use a {{< glossary_tooltip text="CronJob" term_id="cronjob" >}} to run {{< glossary_tooltip text="Jobs" term_id="job" >}} on a time-based schedule.
17
- These automated jobs run like [ Cron] ( https://en.wikipedia.org/wiki/Cron ) tasks on a Linux or UNIX system.
12
+ {{< glossary_tooltip text="CronJob" term_id="cronjob" >}}を使用すると、{{< glossary_tooltip text="Job" term_id="job" >}}を時間ベースのスケジュールで実行できるようになります。この自動化されたJobは、LinuxまたはUNIXシステム上の[ Cron] ( https://en.wikipedia.org/wiki/Cron ) のように実行されます。
18
13
19
- Cron jobs are useful for creating periodic and recurring tasks, like running backups or sending emails.
20
- Cron jobs can also schedule individual tasks for a specific time, such as if you want to schedule a job for a low activity period.
21
-
22
- Cron jobs have limitations and idiosyncrasies.
23
- For example, in certain circumstances, a single cron job can create multiple jobs.
24
- Therefore, jobs should be idempotent.
25
-
26
- For more limitations, see [ CronJobs] ( /docs/concepts/workloads/controllers/cron-jobs ) .
14
+ CronJobは、バックアップやメールの送信など、定期的なタスクや繰り返しのタスクを作成する時に便利です。CronJobはそれぞれのタスクを、たとえばアクティビティが少ない期間など、特定の時間にスケジューリングすることもできます。
27
15
16
+ CronJobには制限と特性があります。たとえば、特定の状況下では、1つのCronJobが複数のJobを作成する可能性があるため、Jobは冪等性を持つようにしなければいけません。
28
17
18
+ 制限に関する詳しい情報については、[ CronJob] ( /ja/docs/concepts/workloads/controllers/cron-jobs ) を参照してください。
29
19
30
20
## {{% heading "prerequisites" %}}
31
21
32
-
33
22
* {{< include "task-tutorial-prereqs.md" >}}
34
23
35
-
36
-
37
24
<!-- steps -->
38
25
39
- ## Creating a Cron Job
26
+ ## CronJobを作成する
40
27
41
- Cron jobs require a config file.
42
- This example cron job config ` .spec ` file prints the current time and a hello message every minute:
28
+ CronJobには設定ファイルが必要です。次の例のCronJobの` .spec ` は、現在の時刻とhelloというメッセージを1分ごとに表示します。
43
29
44
30
{{< codenew file="application/job/cronjob.yaml" >}}
45
31
46
- Run the example CronJob by using this command:
32
+ 次のコマンドで例のCronJobを実行します。
47
33
48
34
``` shell
49
35
kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml
50
36
```
51
- The output is similar to this:
37
+
38
+ 出力は次のようになります。
52
39
53
40
```
54
41
cronjob.batch/hello created
55
42
```
56
43
57
- After creating the cron job, get its status using this command:
44
+ CronJobを作成したら、次のコマンドで状態を取得します。
58
45
59
46
``` shell
60
47
kubectl get cronjob hello
61
48
```
62
- The output is similar to this:
49
+
50
+ 出力は次のようになります。
63
51
64
52
```
65
53
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
66
54
hello */1 * * * * False 0 <none> 10s
67
55
```
68
56
69
- As you can see from the results of the command, the cron job has not scheduled or run any jobs yet.
70
- Watch for the job to be created in around one minute:
57
+ コマンドの結果からわかるように、CronJobはまだスケジュールされておらず、まだ何のJobも実行していません。約1分以内にJobが作成されるのを見てみましょう。
71
58
72
59
``` shell
73
60
kubectl get jobs --watch
74
61
```
75
- The output is similar to this:
62
+
63
+ 出力は次のようになります。
76
64
77
65
```
78
66
NAME COMPLETIONS DURATION AGE
@@ -81,135 +69,107 @@ hello-4111706356 0/1 0s 0s
81
69
hello-4111706356 1/1 5s 5s
82
70
```
83
71
84
- Now you've seen one running job scheduled by the "hello" cron job.
85
- You can stop watching the job and view the cron job again to see that it scheduled the job:
72
+ "hello"CronJobによってスケジュールされたJobが1つ実行中になっていることがわかります。Jobを見るのをやめて、再度CronJobを表示して、Jobがスケジュールされたことを確認してみます。
86
73
87
74
``` shell
88
75
kubectl get cronjob hello
89
76
```
90
- The output is similar to this:
77
+
78
+ 出力は次のようになります。
91
79
92
80
```
93
81
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
94
82
hello */1 * * * * False 0 50s 75s
95
83
```
96
84
97
- You should see that the cron job ` hello ` successfully scheduled a job at the time specified in ` LAST SCHEDULE ` . There are currently 0 active jobs, meaning that the job has completed or failed.
85
+ CronJob ` hello ` が、 ` LAST SCHEDULE ` で指定された時間にJobを正しくスケジュールしたことが確認できるはずです。現在、activeなJobの数は0です。つまり、Jobは完了または失敗したことがわかります。
98
86
99
- Now, find the pods that the last scheduled job created and view the standard output of one of the pods.
87
+ それでは、最後にスケジュールされたJobの作成と、Podの1つの標準出力を表示してみましょう。
100
88
101
89
{{< note >}}
102
- The job name and pod name are different.
90
+ Jobの名前とPodの名前は異なります。
103
91
{{< /note >}}
104
92
105
93
``` shell
106
- # Replace "hello-4111706356" with the job name in your system
94
+ # "hello-4111706356" の部分は、あなたのシステム上のJobの名前に置き換えてください。
107
95
pods=$( kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items[* ].metadata.name})
108
96
```
109
- Show pod log:
97
+
98
+ Podのログを表示します。
110
99
111
100
``` shell
112
101
kubectl logs $pods
113
102
```
114
- The output is similar to this:
103
+
104
+ 出力は次のようになります。
115
105
116
106
```
117
107
Fri Feb 22 11:02:09 UTC 2019
118
108
Hello from the Kubernetes cluster
119
109
```
120
110
121
- ## Deleting a Cron Job
111
+ ## CronJobの削除
122
112
123
- When you don't need a cron job any more, delete it with ` kubectl delete cronjob <cronjob name> ` :
113
+ CronJobが必要なくなったときは、 ` kubectl delete cronjob <cronjob name> ` で削除します。
124
114
125
115
``` shell
126
116
kubectl delete cronjob hello
127
117
```
128
118
129
- Deleting the cron job removes all the jobs and pods it created and stops it from creating additional jobs.
130
- You can read more about removing jobs in [ garbage collection] ( /docs/concepts/workloads/controllers/garbage-collection/ ) .
119
+ CronJobを削除すると、すべてのJobと、そのJobが作成したPodが削除され、追加のJobの作成が停止されます。Jobの削除について詳しく知りたい場合は、[ ガベージコレクション] ( /ja/docs/concepts/workloads/controllers/garbage-collection/ ) を読んでください。
131
120
132
- ## Writing a Cron Job Spec
121
+ ## CronJobのSpecを書く
133
122
134
- As with all other Kubernetes configs, a cron job needs ` apiVersion ` , ` kind ` , and ` metadata ` fields. For general
135
- information about working with config files, see [ deploying applications] ( /docs/tasks/run-application/run-stateless-application-deployment/ ) ,
136
- and [ using kubectl to manage resources] ( /docs/concepts/overview/working-with-objects/object-management/ ) documents.
123
+ すべてのKubernetesの設定と同じように、CronJobにも` apiVersion ` 、` kind ` 、` metadata ` のフィールドが必要です。設定ファイルの扱い方についての一般的な情報については、[ アプリケーションのデプロイ] ( /ja/docs/tasks/run-application/run-stateless-application-deployment/ ) と[ kubectlを使用してリソースを管理する] ( /ja/docs/concepts/overview/working-with-objects/object-management/ ) を読んでください。
137
124
138
- A cron job config also needs a [ ` .spec ` section ] ( https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status ) .
125
+ CronJobの設定には、 [ ` .spec ` セクション ] ( https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status ) も必要です。
139
126
140
127
{{< note >}}
141
- All modifications to a cron job, especially its ` . spec` , are applied only to the following runs.
128
+ CronJobの特に ` spec ` へのすべての修正は、それ以降の実行にのみ適用されます。
142
129
{{< /note >}}
143
130
144
131
### Schedule
145
132
146
- The ` .spec.schedule ` is a required field of the ` .spec ` .
147
- It takes a [ Cron] ( https://en.wikipedia.org/wiki/Cron ) format string, such as ` 0 * * * * ` or ` @hourly ` , as schedule time of its jobs to be created and executed.
133
+ ` .spec.schedule ` は、` .spec ` には必須のフィールドです。` 0 * * * * ` や` @hourly ` などの[ Cron] ( https://en.wikipedia.org/wiki/Cron ) 形式の文字列を取り、Jobの作成と実行のスケジュール時間を指定します。
148
134
149
- The format also includes extended ` vixie cron ` step values. As explained in the
150
- [ FreeBSD manual] ( https://www.freebsd.org/cgi/man.cgi?crontab%285%29 ) :
135
+ フォーマットには` vixie cron ` のステップ値(step value)も指定できます。[ FreeBSDのマニュアル] ( https://www.freebsd.org/cgi/man.cgi?crontab%285%29 ) では次のように説明されています。
151
136
152
- > Step values can be used in conjunction with ranges. Following a range
153
- > with ` /<number> ` specifies skips of the number's value through the
154
- > range. For example, ` 0-23/2 ` can be used in the hours field to specify
155
- > command execution every other hour (the alternative in the V7 standard is
156
- > ` 0,2,4,6,8,10,12,14,16,18,20,22 ` ). Steps are also permitted after an
157
- > asterisk, so if you want to say "every two hours", just use ` */2 ` .
137
+ > ステップ値は範囲指定と組み合わせて使用できます。範囲の後ろに` /<number> ` を付けると、範囲全体で指定したnumberの値ごとにスキップすることを意味します。たとえば、` 0-23/2 ` をhoursフィールドに指定すると、2時間毎にコマンド実行を指定することになります(V7標準では代わりに` 0,2,4,6,8,10,12,14,16,18,20,22 ` と指定する必要があります)。ステップはアスタリスクの後ろにつけることもできます。そのため、「2時間毎に実行」したい場合は、単純に` */2 ` と指定できます。
158
138
159
139
{{< note >}}
160
- A question mark ( ` ? ` ) in the schedule has the same meaning as an asterisk ` * ` , that is, it stands for any of available value for a given field.
140
+ スケジュール内の疑問符 ` ? ` はアスタリスク ` * ` と同じ意味を持ちます。つまり、与えられたフィールドには任意の値が使えるという意味になります。
161
141
{{< /note >}}
162
142
163
143
### Job Template
164
144
165
- The ` .spec.jobTemplate ` is the template for the job, and it is required.
166
- It has exactly the same schema as a [ Job] ( /docs/concepts/workloads/controllers/job/ ) , except that it is nested and does not have an ` apiVersion ` or ` kind ` .
167
- For information about writing a job ` .spec ` , see [ Writing a Job Spec] ( /docs/concepts/workloads/controllers/job/#writing-a-job-spec ) .
145
+ ` .spec.jobTemplate ` はJobのテンプレートであり、必須です。[ Job] ( /docs/concepts/workloads/controllers/job/ ) と完全に同一のスキーマを持ちますが、フィールドがネストされている点と、` apiVersion ` と` kind ` が存在しない点だけが異なります。Jobの` .spec ` を書くための情報については、[ JobのSpecを書く] ( /docs/concepts/workloads/controllers/job/#writing-a-job-spec ) を参照してください。
168
146
169
147
### Starting Deadline
170
148
171
- The ` .spec.startingDeadlineSeconds ` field is optional.
172
- It stands for the deadline in seconds for starting the job if it misses its scheduled time for any reason.
173
- After the deadline, the cron job does not start the job.
174
- Jobs that do not meet their deadline in this way count as failed jobs.
175
- If this field is not specified, the jobs have no deadline.
149
+ ` .spec.startingDeadlineSeconds ` フィールドはオプションです。何かの理由でスケジュールに間に合わなかった場合に適用される、Jobの開始のデッドライン(締め切り)を秒数で指定します。デッドラインを過ぎると、CronJobはJobを開始しません。この場合にデッドラインに間に合わなかったJobは、失敗したJobとしてカウントされます。もしこのフィールドが指定されなかった場合、Jobはデッドラインを持ちません。
176
150
177
- If the ` .spec.startingDeadlineSeconds ` field is set (not null), the CronJob
178
- controller measures the time between when a job is expected to be created and
179
- now. If the difference is higher than that limit, it will skip this execution.
151
+ ` .spec.startingDeadlineSeconds ` フィールドがnull以外に設定された場合、CronJobコントローラーはJobの作成が期待される時間と現在時刻との間の時間を計測します。もしその差が制限よりも大きかった場合、その実行はスキップされます。
180
152
181
- For example, if it is set to ` 200 ` , it allows a job to be created for up to 200
182
- seconds after the actual schedule.
153
+ たとえば、この値が` 200 ` に設定された場合、実際のスケジュールの最大200秒後までに作成されるJobだけが許可されます。
183
154
184
155
### Concurrency Policy
185
156
186
- The ` .spec.concurrencyPolicy ` field is also optional.
187
- It specifies how to treat concurrent executions of a job that is created by this cron job.
188
- The spec may specify only one of the following concurrency policies:
157
+ ` .spec.concurrencyPolicy ` フィールドもオプションです。このフィールドは、このCronJobで作成されたJobの並列実行をどのように扱うかを指定します。specには以下のconcurrency policyのいずれかを指定します。
189
158
190
- * ` Allow ` (default ): The cron job allows concurrently running jobs
191
- * ` Forbid ` : The cron job does not allow concurrent runs; if it is time for a new job run and the previous job run hasn't finished yet, the cron job skips the new job run
192
- * ` Replace ` : If it is time for a new job run and the previous job run hasn't finished yet, the cron job replaces the currently running job run with a new job run
159
+ * ` Allow ` (デフォルト ): CronJobがJobを並列に実行することを許可します。
160
+ * ` Forbid ` : CronJobの並列実行を禁止します。もし新しいJobの実行時に過去のJobがまだ完了していなかった場合、CronJobは新しいJobの実行をスキップします。
161
+ * ` Replace ` : もし新しいJobの実行の時間になっても過去のJobの実行が完了していなかった場合、CronJobは現在の実行中のJobを新しいJobで置換します。
193
162
194
- Note that concurrency policy only applies to the jobs created by the same cron job.
195
- If there are multiple cron jobs, their respective jobs are always allowed to run concurrently.
163
+ concurrent policyは、同じCronJobが作成したJobにのみ適用されます。もし複数のCronJobがある場合、それぞれのJobの並列実行は常に許可されます。
196
164
197
165
### Suspend
198
166
199
- The ` .spec.suspend ` field is also optional.
200
- If it is set to ` true ` , all subsequent executions are suspended.
201
- This setting does not apply to already started executions.
202
- Defaults to false.
167
+ ` .spec.suspend ` フィールドもオプションです。このフィールドを` true ` に設定すると、すべての後続の実行がサスペンド(一時停止)されます。この設定はすでに実行開始したJobには適用されません。デフォルトはfalseです。
203
168
204
169
{{< caution >}}
205
- Executions that are suspended during their scheduled time count as missed jobs.
206
- When ` .spec.suspend ` changes from ` true ` to ` false ` on an existing cron job without a [ starting deadline] ( #starting-deadline ) , the missed jobs are scheduled immediately.
170
+ スケジュールされた時間中にサスペンドされた実行は、見逃されたJob(missed job)としてカウントされます。[ starting deadline] ( #starting-deadline ) が設定されていない既存のCronJob` .spec.suspend ` が` true ` から` false ` に変更されると、見逃されたJobは即座にスケジュールされます。
207
171
{{< /caution >}}
208
172
209
- ### Jobs History Limits
210
-
211
- The ` .spec.successfulJobsHistoryLimit ` and ` .spec.failedJobsHistoryLimit ` fields are optional.
212
- These fields specify how many completed and failed jobs should be kept.
213
- By default, they are set to 3 and 1 respectively. Setting a limit to ` 0 ` corresponds to keeping none of the corresponding kind of jobs after they finish.
214
-
173
+ ### Job History Limit
215
174
175
+ ` .spec.successfulJobsHistoryLimit ` と` .spec.failedJobsHistoryLimit ` フィールドはオプションです。これらのフィールドには、完了したJobと失敗したJobをいくつ保持するかを指定します。デフォルトでは、それぞれ3と1に設定されます。リミットを` 0 ` に設定すると、対応する種類のJobを実行完了後に何も保持しなくなります。
0 commit comments