आप अपने पॉड को एक ग्रेस अवधि (उदाहरण के लिए 30 सेकंड या अधिक, कंटेनर स्टार्टअप समय और छवि आकार पर निर्भर करता है) और सेट के साथ कॉन्फ़िगर कर सकते हैं "imagePullPolicy: "Always"
। और उपयोग करें kubectl delete pod pod_name
। एक नया कंटेनर बनाया जाएगा और नवीनतम छवि स्वचालित रूप से डाउनलोड की जाएगी, फिर पुराने कंटेनर को समाप्त कर दिया जाएगा।
उदाहरण:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
मैं वर्तमान में स्वचालित बिल्ड और इमेज टैगिंग के लिए जेनकिन्स का उपयोग कर रहा हूं और यह कुछ इस तरह दिखता है:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
एक और ट्रिक है इंटेलीली रन करने के लिए:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
और फिर:
kubectl set image deployment/my-deployment mycontainer=myimage
यह वास्तव में रोलिंग-अपडेट को ट्रिगर करेगा लेकिन सुनिश्चित करें कि आपने भी imagePullPolicy: "Always"
सेट किया है।
अपडेट करें:
एक और चाल मैंने पाया, जहां आपको छवि का नाम नहीं बदलना है, एक फ़ील्ड का मान बदलना है जो रोलिंग अपडेट को ट्रिगर करेगा, जैसे terminationGracePeriodSeconds
। आप इस का उपयोग कर सकते kubectl edit deployment your_deployment
या kubectl apply -f your_deployment.yaml
या इस तरह एक पैच का उपयोग कर:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
बस सुनिश्चित करें कि आप हमेशा संख्या मान को बदलते हैं।