2016-04-28 11 views
0

Ich habe eine Deployment mit 3 Replikate eines Pods, auf dem das Bild 172.20.20.20:5000/my_app läuft, das sich in meiner privaten Registry befindet.Bild in einem Deployment-Pods aktualisieren

Ich möchte ein Rolling-Update in der Bereitstellung, wenn ich eine neue latest Version dieses Bildes in meine Registrierung drücken.

Ich schiebe das neue Bild auf diese Weise (Tag v3.0 bis spätestens):

$ docker tag 172.20.20.20:5000/my_app:3.0 172.20.20.20:5000/my_app 
$ docker push 172.20.20.20:5000/my_app 

Aber nichts passiert. Die Bilder der Pods werden nicht aktualisiert. Dies ist meine Bereitstellungsdefinition:

Gibt es eine Möglichkeit, das automatisch zu tun? Sollte ich einen Befehl wie rolling-update wie in ReplicaControllers ausführen?

Antwort

1

Um upgrade a Deployment müssen Sie die Bereitstellungsressource mit dem neuen Image ändern. Ändern Sie zum Beispiel 172.20.20.205000/my_app:v1 zu 172.20.20.205000/my_app:v2. Da Sie nur das Bild in der Docker-Registrierung ändern, wird die Änderung nicht bemerkt.

Wenn Sie die einzelnen Pods (manuell) beenden, wird sie vom Deployment neu gestartet. Da das Deployment-Image das "neueste" Tag angibt, wird Kubernetes aufgrund der implizierten "Always" ImagePullPolicy die neueste Version (jetzt "v3" in Ihrem Fall) herunterladen.

+0

Danke. Es hat mir sehr geholfen :) –

+0

Dann, wenn ich den Update-Prozess automatisieren möchte, muss ich die Pods manuell ausschalten? "Ja wirklich?" Check dies bitte: http://stackoverflow.com/questions/36920171/how-can-i-edit-a-deployment-without-modify-the-file-manual –

+0

@bigdestroyer Nein, wenn Sie verschiedene Image-Versionen verwenden die Bereitstellung wird alles für dich erledigen. Die Verwirrung liegt darin, dass Sie neue Versionen als "aktuell" in die Registrierung übertragen, da Sie kein Tag angeben. –

Verwandte Themen