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


回答:


185

問題#47538 言及@jdfは締め切らであり、これが可能になりました。元の実装はここにありますが、構文が変更されています。

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

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

それはv0.8.xで私のために働いたので、それは古いクラスターと後方互換性があるようです。


3
5/10/18現在、Google Cloud SDKを介してインストールされたバージョンでは、このコマンドを使用できません。kubectlのバージョンを確認してください。gcloud components install kubectlその後、kubernetes.io / docs / tasks / tools / install
Scott Jungwirth

18

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

1
「不要なフィールドの消去」についてのちょっとした追加。Kubernetesは*uidフィールドについて不満を言っており、このコマンドでフィールドを簡単に削除できますsed -i '/uid:.*/d' my_job.yaml
Aleksandr Podkutin

歴史の中にすでに仕事があるという仮定はしばしば成り立たない。
Andrew Savinykh

9

編集-2018年7月:この機能が実装されたため、@ pedro_slandの回答をご覧ください

以下の私の元の答えは、v1.10.1より前の古いバージョンのkubectlでは正しいままです

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

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


7

残念ながら、上記の構文例はいずれも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>

cronジョブの復元に関する問題のトラブルシューティングに最適です。ありがとうございます。
ラウクサ


0

あなたが仕事をテストしたい場合は、作成ジョブあなたから設定をcronジョブ(ScheduledJob)設定し、次のコマンドを使用して手動で実行します。

kubectl create -f ./job.yaml

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.