2016-05-31 7 views
1

Ich habe einen Replikations-Controller mit einem Replikat mit einem Geheimnis. Wie kann ich den (einzigen) Pod - ohne Ausfallzeit - mit dem neuesten geheimen Wert aktualisieren oder neu erstellen, wenn der geheime Wert geändert wird?Kubernetes rollendes Update im Falle eines geheimen Updates

Meine aktuelle Problemumgehung besteht darin, die Anzahl der Replikate im Replikations-Controller zu erhöhen, die alten Pods zu löschen und die Anzahl der Replikate auf ihren ursprünglichen Wert zurückzusetzen.

Gibt es einen Befehl oder ein Flag, um ein laufendes Update zu veranlassen, das das gleiche Containerbild und denselben Tag behält? Wenn ich versuche, dies zu tun, lehnt es meinen Versuch mit der folgenden Meldung:

error: Specified --image must be distinct from existing container image 

Antwort

2

Ein paar Fragen #9043 und #13488 das Problem beschreiben recht gut, und ich vermute, ein rollender Update Ansatz eventuate wird in Kürze (wie die meisten Dinge in Kubernetes), obwohl für 1.3.0 unwahrscheinlich. Dasselbe gilt für die Aktualisierung von ConfigMaps.

Kubernetes ein Rolling Update tun, wenn etwas in der Spezifikation Einsatz pod geändert wird (z. B. typischerweise image auf eine neue Version), so ist one suggested workaround eine Umgebungsvariable in der Bereitstellung pod spec zu setzen (zB. RESTART_)

Wenn Sie Ihre geheime/configmap aktualisiert haben, erhöhen Sie den Wert für env in Ihrer Bereitstellung (über kubectl apply oder patch oder edit), und Kubernetes startet ein fortlaufendes Update Ihrer Bereitstellung.

Beispiel Deployment-Spezifikation:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: test-nginx 
spec: 
    replicas: 2 
    template: 
    metadata: 
    spec: 
     containers: 
     - name: nginx 
     image: "nginx:stable" 
     ports: 
     - containerPort: 80 
     - mountPath: /etc/nginx/conf.d 
      name: config 
      readOnly: true 
     - mountPath: /etc/nginx/auth 
      name: tokens 
      readOnly: true 
     env: 
     - name: RESTART_ 
      value: "13" 
     volumes: 
     - name: config 
      configMap: 
      name: test-nginx-config 
     - name: tokens 
      secret: 
      secretName: test-nginx-tokens 

Zwei Tipps:

  • Ihre Umgebung Variablenname kann nicht mit einem _ beginnen oder es verschwindet auf magische Weise irgendwie.
  • , wenn Sie eine Nummer für Ihren Neustart Variable verwenden, müssen Sie es in Anführungszeichen
0

Wenn ich richtig verstehe, sollte Deployment sein, was Sie wollen.

Die Bereitstellung unterstützt rollendes Update für fast alle Felder in der Pod-Vorlage. Siehe

http://kubernetes.io/docs/user-guide/deployments/

+0

Deployment wickeln wird nicht helfen, da es keine Änderung in .spec.template ist. Der geheime Name ist gleich, aber der Wert wird geändert –

Verwandte Themen