web-dev-qa-db-ja.com

Kubernetesのスケジュールされたジョブを手動でトリガーするにはどうすればよいですか?

Kubernetes Scheduled Job を作成しました。これは、スケジュールに従って1日に2回実行されます。ただし、テスト目的で手動でトリガーしたいと思います。これどうやってするの?

71
aknuds1

問題 #47538 @jdfが言及されたことは現在クローズされており、これが可能になりました。元の実装は here にありますが、構文は変更されています。

Kubectl v1.10.1 +のコマンドは次のとおりです。

kubectl create job --from=cronjob/<cronjob-name> <job-name>

V0.8.xで動作したため、古いクラスターとの下位互換性があるようです。

115
pedro_sland

ScheduledJobに基づいて簡単なジョブを作成できます。すでにScheduledJobを実行している場合、履歴にジョブがあります。

kubectl get jobs

NAME               DESIRED   SUCCESSFUL   AGE
hello-1477281595   1         1            11m
hello-1553106750   1         1            12m
hello-1553237822   1         1            9m

次のジョブのいずれかをエクスポートします。

kubectl get job hello-1477281595 -o yaml > my_job.yaml

次に、yamlを少し編集して、いくつかの不要なフィールドを消去し、手動で実行します。

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml
13
Camil

編集-2018年7月:@pedro_slandの answer を参照してください。この機能は現在実装されています。

以下の元の答えは、v1.10.1未満のkubectlの古いバージョンでも正しいままです。

================================================== =======================

(他の回答が示唆しているように)新しいジョブを作成することは別として、これを行う現在の方法はありません。ここで追跡できるのは、kubernetesの機能リクエストです: https://github.com/kubernetes/kubernetes/issues/47538

9
jdf

残念ながら、上記の構文例はいずれもGoogle Kubernetes Engine(GCP)で機能しません。また、GKEドキュメント自体が間違っています。 :(

Kubernetes 1.10.6.gke-2では、作業構文は

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
4
Joseph Lust

それを行うためだけでなく、cronジョブを一時停止および一時停止解除するための便利な小さなcmdユーティリティを作成しました。

https://github.com/iJanki/kubecron

3
iJanki

ジョブをテストする場合は、 Cron Job (ScheduledJob)構成から Job 構成を作成し、次のコマンドを使用して手動で実行します。

kubectl create -f ./job.yaml
1
Kamran