Bagaimana saya bisa memicu Pekerjaan Terjadwal Kubernetes secara manual?

Jawaban:

187

Masalah # 47538 yang @jdf sebutkan sekarang sudah ditutup dan sekarang mungkin. Implementasi asli dapat ditemukan di sini tetapi sintaksnya telah berubah.

Dengan kubectl v1.10.1 + perintahnya adalah:

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

Tampaknya kompatibel dengan cluster yang lebih lama seperti yang berfungsi untuk saya di v0.8.x.

pedro_sland
sumber
3
Pastikan untuk memeriksa versi kubectl Anda, mulai 5/10/18, versi yang diinstal melalui Google Cloud SDK tidak memiliki perintah ini. gcloud components install kubectllalu kubernetes.io/docs/tasks/tools/install-kubectl
Scott Jungwirth
18

Anda dapat membuat pekerjaan sederhana berdasarkan ScheduledJob Anda. Jika Anda sudah menjalankan ScheduledJob, ada pekerjaan dalam sejarah.

kubectl get jobs

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

Ekspor salah satu pekerjaan ini:

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

Kemudian edit yaml sedikit, hapus beberapa bidang yang tidak perlu dan jalankan secara manual:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml
Camil
sumber
1
Hanya tambahan kecil tentang "menghapus beberapa bidang yang tidak perlu". Kubernetes mengeluh tentang *uidfield dan Anda dapat menghapusnya dengan mudah dengan perintah inised -i '/uid:.*/d' my_job.yaml
Aleksandr Podkutin
Asumsi bahwa sudah ada pekerjaan dalam sejarah seringkali tidak berlaku.
Andrew Savinykh
9

EDIT - Juli 2018: lihat jawaban @ pedro_sland karena fitur ini telah diterapkan

Jawaban asli saya di bawah ini akan tetap benar untuk versi kubectl yang lebih lama kurang dari v1.10.1

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

Selain menciptakan pekerjaan baru (seperti yang disarankan jawaban lain), tidak ada cara saat ini untuk melakukan ini. Ini adalah permintaan fitur dalam kubernetes sekarang yang dapat dilacak di sini: https://github.com/kubernetes/kubernetes/issues/47538

jdf
sumber
7

Sayangnya, tidak ada sintaks contoh di atas yang berfungsi di Google Kubernetes Engine (GCP). Selain itu, dokumen GKE itu sendiri salah. :(

Di Kubernetes 1.10.6.gke-2, sintaks yang berfungsi adalah

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
Joseph Lust
sumber
luar biasa untuk memecahkan masalah dengan ketahanan cron jobs, terima kasih!
lauksas
0

Jika Anda ingin menguji pekerjaan, buat konfigurasi Pekerjaan dari konfigurasi Cron Job (ScheduledJob) Anda dan jalankan secara manual menggunakan perintah berikut:

kubectl create -f ./job.yaml
Kamran
sumber
0

Ada opsi untuk memicu pekerjaan cron secara manual di dalam tab ini di dasbor k8s

Lihat gambar

borja garcia
sumber