คุณสามารถกำหนดค่าฝักของคุณด้วยระยะเวลาผ่อนผัน (ตัวอย่างเช่น 30 วินาทีหรือมากกว่าขึ้นอยู่กับเวลาเริ่มต้นของภาชนะบรรจุและขนาดของภาพ) "imagePullPolicy: "Always"
และการตั้งค่า และการใช้งานkubectl delete pod pod_name
. คอนเทนเนอร์ใหม่จะถูกสร้างขึ้นและดาวน์โหลดรูปภาพล่าสุดโดยอัตโนมัติจากนั้นคอนเทนเนอร์เก่าจะสิ้นสุดลง
ตัวอย่าง:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
ฉันกำลังใช้ Jenkins สำหรับการสร้างและการแท็กรูปภาพโดยอัตโนมัติและมีลักษณะดังนี้:
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}}}}'
ตรวจสอบให้แน่ใจว่าคุณเปลี่ยนค่าตัวเลขอยู่เสมอ