क्रॉनजॉब के साथ स्वचालित कार्य चलाना
यह पेज दिखाता है कि कैसे Kubernetes CronJob ऑब्जेक्ट का उपयोग करके स्वचालित कार्य चलाए जाते हैं।
शुरू करने से पहले
आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप minikube की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:
क्रॉनजॉब बनाना
क्रॉन जॉब्स को एक कॉन्फ़िग फ़ाइल की आवश्यकता होती है। यहाँ एक क्रॉनजॉब के लिए मैनिफेस्ट है जो हर मिनट एक साधारण डेमो कार्य चलाता है:
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
इस कमांड का उपयोग करके उदाहरण क्रॉनजॉब चलाएं:
kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml
आउटपुट इस तरह का होगा:
cronjob.batch/hello created
क्रॉनजॉब बनाने के बाद, इस कमांड का उपयोग करके इसकी स्थिति प्राप्त करें:
kubectl get cronjob hello
आउटपुट इस तरह का होगा:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 <none> 10s
जैसा कि आप कमांड के परिणामों से देख सकते हैं, क्रॉन जॉब ने अभी तक कोई जॉब शेड्यूल या चलाया नहीं है। लगभग एक मिनट में जॉब के बनने के लिए देखें:
kubectl get jobs --watch
आउटपुट इस तरह का होगा:
NAME COMPLETIONS DURATION AGE
hello-4111706356 0/1 0s
hello-4111706356 0/1 0s 0s
hello-4111706356 1/1 5s 5s
अब आपने "hello" क्रॉन जॉब द्वारा शेड्यूल किया गया एक चलता हुआ जॉब देखा है। आप जॉब को देखना बंद कर सकते हैं और क्रॉन जॉब को फिर से देख सकते हैं यह देखने के लिए कि इसने जॉब को शेड्यूल किया:
kubectl get cronjob hello
आउटपुट इस तरह का होगा:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 50s 75s
आपको दिखाई देगा कि क्रॉन जॉब hello
ने LAST SCHEDULE
में निर्दिष्ट समय पर सफलतापूर्वक एक जॉब शेड्यूल किया। वर्तमान में 0 सक्रिय जॉब हैं, जिसका अर्थ है कि जॉब पूरा हो गया है या विफल हो गया है।
अब, पिछले शेड्यूल किए गए जॉब द्वारा बनाए गए पॉड्स को ढूंढें और एक पॉड का स्टैंडर्ड आउटपुट देखें।
टिप्पणी:
जॉब का नाम पॉड के नाम से अलग है।# "hello-4111706356" को अपने सिस्टम में जॉब नाम से बदलें
pods=$(kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items[*].metadata.name})
पॉड लॉग दिखाएं:
kubectl logs $pods
आउटपुट इस तरह का होगा:
Fri Feb 22 11:02:09 UTC 2019
Hello from the Kubernetes cluster
क्रॉनजॉब हटाना
जब आपको क्रॉन जॉब की और आवश्यकता नहीं होती है, तो इसे kubectl delete cronjob <cronjob name>
के साथ हटा दें:
kubectl delete cronjob hello
क्रॉन जॉब को हटाने से इसके द्वारा बनाए गए सभी जॉब और पॉड हट जाते हैं और यह अतिरिक्त जॉब बनाना बंद कर देता है। आप गारबेज कलेक्शन में जॉब हटाने के बारे में और पढ़ सकते हैं।