Sie können Ihren Pod mit einer Nachfrist konfigurieren (z. B. 30 Sekunden oder mehr, abhängig von der Startzeit des Containers und der Bildgröße) und festlegen "imagePullPolicy: "Always"
. Und verwenden kubectl delete pod pod_name
. Ein neuer Container wird erstellt und das neueste Bild automatisch heruntergeladen. Anschließend wird der alte Container beendet.
Beispiel:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
Ich verwende derzeit Jenkins für automatisierte Builds und Image-Tagging und es sieht ungefähr so aus:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
Ein weiterer Trick besteht darin, zunächst auszuführen:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
und dann:
kubectl set image deployment/my-deployment mycontainer=myimage
Es wird tatsächlich das fortlaufende Update auslösen, aber stellen Sie sicher, dass Sie auch imagePullPolicy: "Always"
festgelegt haben.
Aktualisieren:
Ein weiterer Trick, den ich gefunden habe, bei dem Sie den Bildnamen nicht ändern müssen, besteht darin, den Wert eines Feldes zu ändern, das ein fortlaufendes Update auslöst, wie z terminationGracePeriodSeconds
. Sie können tun dies mit kubectl edit deployment your_deployment
oder kubectl apply -f your_deployment.yaml
oder einen Patch wie folgt aus:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
Stellen Sie einfach sicher, dass Sie immer den Zahlenwert ändern.