ฉันได้สร้างงานตามกำหนดการของ Kubernetesซึ่งทำงานวันละสองครั้งตามกำหนดเวลา อย่างไรก็ตามฉันต้องการเรียกใช้ด้วยตนเองเพื่อวัตถุประสงค์ในการทดสอบ ฉันจะทำเช่นนี้ได้อย่างไร?
ฉันได้สร้างงานตามกำหนดการของ Kubernetesซึ่งทำงานวันละสองครั้งตามกำหนดเวลา อย่างไรก็ตามฉันต้องการเรียกใช้ด้วยตนเองเพื่อวัตถุประสงค์ในการทดสอบ ฉันจะทำเช่นนี้ได้อย่างไร?
คำตอบ:
ปัญหา# 47538ที่@jdf กล่าวถึงถูกปิดแล้วและตอนนี้ทำได้แล้ว การใช้งานดั้งเดิมสามารถพบได้ที่นี่แต่ไวยากรณ์มีการเปลี่ยนแปลง
ด้วย kubectl v1.10.1 + คำสั่งคือ:
kubectl create job --from=cronjob/<cronjob-name> <job-name>
ดูเหมือนว่าจะเข้ากันได้ย้อนหลังกับคลัสเตอร์รุ่นเก่าเนื่องจากใช้ได้กับฉันใน v0.8.x
คุณสามารถสร้างงานง่ายๆโดยยึดตาม 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
*uid
ฟิลด์และคุณสามารถลบออกได้อย่างง่ายดายด้วยคำสั่งนี้sed -i '/uid:.*/d' my_job.yaml
แก้ไข - กรกฎาคม 2018: ดูคำตอบของ @ pedro_sland เนื่องจากฟีเจอร์นี้ได้รับการใช้งานแล้ว
คำตอบเดิมของฉันด้านล่างจะยังคงถูกต้องสำหรับ kubectl เวอร์ชันเก่าที่น้อยกว่า v1.10.1
================================================== ======================
นอกเหนือจากการสร้างงานใหม่ (ตามที่คำตอบอื่น ๆ แนะนำ) ไม่มีวิธีนี้ในปัจจุบัน ตอนนี้เป็นคำขอคุณสมบัติพร้อมกับ kubernetes ซึ่งสามารถติดตามได้ที่นี่: https://github.com/kubernetes/kubernetes/issues/47538
ขออภัยไม่มีไวยากรณ์ตัวอย่างด้านบนที่ใช้งานได้ใน 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>
ฉันได้สร้างยูทิลิตี้ cmd ขนาดเล็กเพื่อความสะดวกในการทำเช่นนั้นและระงับและยกเลิกการระงับ cronjobs
มีตัวเลือกในการทริกเกอร์งาน cron ด้วยตนเองในแท็บนี้ในแดชบอร์ด k8s
gcloud components install kubectl
จากนั้นkubernetes.io/docs/tasks/tools/install-kubectl