Kubernetes-Bereitstellung – Starten Sie Pods nicht neu, wenn sich die Image-Prüfsumme nicht geändert hat

Kubernetes-Bereitstellung – Starten Sie Pods nicht neu, wenn sich die Image-Prüfsumme nicht geändert hat

Wir haben ein System, das derzeit docker-compose(effektiv) für die Bereitstellung von Containern verwendet wird docker-compose pull && docker-compose up, und sind dabei, das System auf Kubernetes zu konvertieren.

Wir haben CI/CD, das automatisch auf der Grundlage von Git-Tags, die in das Git-Repository übertragen werden, in die Produktion übergeht. Für die Inszenierung entwickeln wir einen Zweig weiter. Die Docker-Images werden erstellt und entweder mit dem Git-Produktionstag oder dem Namen des Git-Staging-Zweiges markiert.

Ist beim Deployment docker-composeintelligent genug, den Container nicht neu zu starten, wenn das Image tatsächlich dasselbe ist, d. h. zwei Produktions-Tags auf dasselbe Image verweisen.

Ich suche nach einer Möglichkeit, dasselbe in Kubernetes zu tun – wenn bei der Bereitstellung das tatsächliche Image, das für den Container des Pods verwendet wird, dasselbe ist wie das, das bereits ausgeführt wird (basierend auf der Image-Prüfsumme, nicht nur auf dem Image-Tag), sollte der Pod nicht neu gestartet werden müssen. Ist das möglich?

Danke

Antwort1

Wie ich in den Kommentaren erwähnt habe, sollte es mit sofort funktionieren imagePullPolicy:Always.

EntsprechendDokumentation

Container-Bilder

Die ImagePullPolicy und das Tag des Bildes wirken sich darauf aus, wann das Kubelet versucht, das angegebene Bild abzurufen.

imagePullPolicy:Stets: Jedes Mal, wenn der Kubelet einen Container startet, fragt der Kubelet das Container-Image-Register ab, um den Namen in einen Image-Digest aufzulösen. Wenn der Kubelet ein Container-Image mit genau diesem Digest lokal zwischengespeichert hat, verwendet der Kubelet sein zwischengespeichertes Image. Andernfalls lädt der Kubelet das Image mit dem aufgelösten Digest herunter (zieht es ab) und verwendet dieses Image, um den Container zu starten.

Hinweis: Um sicherzustellen, dass der Container immer dieselbe Version des Images verwendet, können Sie dessen Digest angeben. Ersetzen Sie : durch @ (z. B. image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2). Der Digest identifiziert eindeutig eine bestimmte Version des Images, sodass es von Kubernetes nie aktualisiert wird, sofern Sie den Digest-Wert nicht ändern.


Außerdem gibt es ein Tool namensimago, es lohnt sich, einen Blick darauf zu werfen. Imago überprüft laufende Pods mit SHA256 und startet einfach Ressourcen neu, die neuere Bilder verwenden müssen.

verwandte Informationen