क्या यह kubernetes नौकरी को फिर से चलाने के लिए संभव है?


35

मेरे पास कुबेरनेट्स नौकरी विन्यास है:

---
apiVersion: batch/v1
kind: Job
metadata:
  name: dbload
  creationTimestamp: 
spec:
  template:
    metadata:
      name: dbload
    spec:
      containers:
      - name: dbload
        image: sdvl3prox001:7001/pbench/tdload
        command: ["/opt/pbench/loadTpcdsData.sh",  "qas0063", "dbc", "dbc", "1"]
      restartPolicy: Never
      imagePullSecrets: 
        - name: pbenchregkey
status: {}

जब मैं kubectl create -f dbload-deployment.yml --recordनौकरी करता हूं और एक पॉड बनता है, डॉकटर कंटेनर पूरा होने के लिए चलता है और मुझे यह दर्जा मिलता है:

$ kubectl get job dbload
NAME      DESIRED   SUCCESSFUL   AGE
dbload    1         1            1h
$ kubectl get pods -a
NAME           READY     STATUS      RESTARTS   AGE
dbload-0mk0d   0/1       Completed   0          1h

यह नौकरी वन टाइम डील है और मुझे इसे फिर से हासिल करने में सक्षम होना चाहिए। अगर मैं इसे kubectl createकमांड से रीरुन करने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है

$ kubectl create -f dbload-deployment.yml --record
Error from server: error when creating "dbload-deployment.yml": jobs.batch "dbload" already exists

बेशक मैं कर सकता हूं kubectl delete job dbloadऔर फिर दौड़ सकता हूं kubectl createलेकिन मैं सोच रहा हूं कि क्या मैं किसी तरह पहले से मौजूद नौकरी को फिर से जागृत कर सकता हूं?

जवाबों:


22

नहीं, कुबेरनेट्स नौकरी को फिर से चलाने का कोई तरीका नहीं है। आपको पहले इसे हटाने की आवश्यकता है।


23

आप स्वयं के साथ नौकरी की जगह एक पुनर्मिलन अनुकरण कर सकते हैं:

  • kubectl get job "your-job" -o json | kubectl replace --force -f -

यदि आपको ऑटो-जनरेट किए गए लेबल या चयनकर्ताओं के कारण त्रुटियाँ मिलती हैं, तो आप उन्हें jq से हटा सकते हैं या संपादित कर सकते हैं:

  • kubectl get job "your-job" -o json | jq 'del(.spec.selector)' | jq 'del(.spec.template.metadata.labels)' | kubectl replace --force -f -

1
नौकरी जॉन्स की एक प्रति को पहले एक फ़ाइल में सहेजने की जोरदार सिफारिश करेंगे। kubectl replaceइसे पुनः बनाने में त्रुटियों को चलाने से पहले नौकरी को हटा देता है।
जेरेमी हुइस्कैम्प

पहले जसन को बचाओ और फिर बहलाना !!
गहरी

14

आप निर्दिष्ट करके बताई गई त्रुटि से भी बच सकते हैं

metadata: generateName: dbload

इसके बजाय बस name

उस स्थिति में, इस yaml फ़ाइल के साथ आपके द्वारा सबमिट किए गए प्रत्येक कार्य में एक विशिष्ट नाम होगा जो कुछ इस तरह दिखाई देगा dbloada1b2c। तो फिर तुम तय कर सकते हैं कि क्या आप पुराने नौकरियों हटाने की आवश्यकता है, लेकिन आप नहीं होगा है यह करने के लिए।


मेरा मानना ​​है कि जननाम केवल तरह = फली और नौकरी पर लागू होता है।
14:51 बजे user518066

2
नहीं, यह ObjectMeta का एक मानक हिस्सा है और फली और नौकरी दोनों पर लागू होता है: k8s संदर्भ । मैं हर समय इसका उपयोग कर रहा हूं, यह वही है जो मैं कर रहा हूं।
vp124 14

1
इस डोज के लिए आपका बहुत-बहुत धन्यवाद। बस प्रलेखन के लिए यह केवल साथ काम करता हैkubectl create
ओहमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.