ฉันจะทริกเกอร์งานตามกำหนดการของ Kubernetes ด้วยตนเองได้อย่างไร


115

ฉันได้สร้างงานตามกำหนดการของ Kubernetesซึ่งทำงานวันละสองครั้งตามกำหนดเวลา อย่างไรก็ตามฉันต้องการเรียกใช้ด้วยตนเองเพื่อวัตถุประสงค์ในการทดสอบ ฉันจะทำเช่นนี้ได้อย่างไร?

คำตอบ:


190

ปัญหา# 47538ที่@jdf กล่าวถึงถูกปิดแล้วและตอนนี้ทำได้แล้ว การใช้งานดั้งเดิมสามารถพบได้ที่นี่แต่ไวยากรณ์มีการเปลี่ยนแปลง

ด้วย kubectl v1.10.1 + คำสั่งคือ:

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

ดูเหมือนว่าจะเข้ากันได้ย้อนหลังกับคลัสเตอร์รุ่นเก่าเนื่องจากใช้ได้กับฉันใน v0.8.x


3
อย่าลืมตรวจสอบเวอร์ชันของ kubectl ตั้งแต่วันที่ 5/10/18 เวอร์ชันที่ติดตั้งผ่าน Google Cloud SDK ไม่มีคำสั่งนี้ gcloud components install kubectlจากนั้นkubernetes.io/docs/tasks/tools/install-kubectl
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: ดูคำตอบของ @ pedro_sland เนื่องจากฟีเจอร์นี้ได้รับการใช้งานแล้ว

คำตอบเดิมของฉันด้านล่างจะยังคงถูกต้องสำหรับ kubectl เวอร์ชันเก่าที่น้อยกว่า v1.10.1

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

นอกเหนือจากการสร้างงานใหม่ (ตามที่คำตอบอื่น ๆ แนะนำ) ไม่มีวิธีนี้ในปัจจุบัน ตอนนี้เป็นคำขอคุณสมบัติพร้อมกับ 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 ขอบคุณ!
lauksas


0

หากคุณต้องการทดสอบงานให้สร้างJob config จากCron Job (ScheduledJob) config และรันด้วยตนเองโดยใช้คำสั่งต่อไปนี้:

kubectl create -f ./job.yaml

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.