2016-11-16 2 views
1

Ich verwende Google Cloud, um meine Docker Bilder & Host meine Kubernetes Cluster zu speichern. Ich frage mich, wie ich kann kubernetes ziehen Sie den Container, der die letzten hat Tag jedes Mal, wenn ein neues geschoben wird.Wie können wir Kubernetes so einstellen, dass Container automatisch gewechselt werden, wenn ein neuer Container gedrückt wird?

Ich dachte imagePullPolicy war der Weg zu gehen, aber es scheint nicht die Arbeit zu tun (ich kann etwas verpassen). Hier ist mein Container spec:

"name": "blah", 
"image": "gcr.io/project-id/container-name:latest", 
"imagePullPolicy": "Always", 
"env": [...] 

Im Moment ich habe, zu löschen und die Installationen neu erstellen, wenn ich ein neues Docker Bild hochladen.

Antwort

2

Kubernetes es selbst wird nie auf Container Image-Update im Repository ausgelöst werden. Sie benötigen eine Art CI/CD-Pipeline in Ihren Werkzeugen. Außerdem rate ich dringend davon ab, die Verwendung von :latest zu vermeiden, da sich Ihr Container im Laufe der Zeit ändert. Es ist meiner Meinung nach viel besser, eine Art Versionierung zu verwenden. Sei es semantisch wie image:1.4.3 commit basiert image:<gitsha> oder wie ich image:<gitsha>-<pushid> verwende, wo Push ist ein sequentiell aktualisierter Wert für jeden Push zu Repo (so dass Etikett ändert, auch wenn ich aus dem gleichen Build neu laden).

Mit einer solchen Versionierung, wenn Sie Bild in Ihrem Manifest ändern, wird der Einsatz eines Roll Update erhalten, wie erwartet.

Wenn Sie bei image:latest bleiben möchten, können Sie Ihrer Pod-Vorlage ein Label mit Version hinzufügen. Wenn Sie es also stoßen, wird es gerollt. Sie können Pods auch manuell nacheinander beenden oder (wenn Sie sich Ausfallzeiten leisten können) können Sie die Bereitstellung auf 0 Replikate und zurück auf N

skalieren
Verwandte Themen