Ich muss den Container laufen lassen 5 Minuten nach der kubectl
'Terminierung. Es muss etwas arbeiten, bevor es zerstört wird. Es scheint, dass Kubernetes enthält genau das, was ich brauche:Graceful pod Terminierung
terminationGracePeriodSeconds: 300
so definiert ich es in meiner yaml. Ich habe aktualisiert RCs
, aktuelle Pods zu löschen, so dass neue erstellt wurden und jetzt kann ich sehen, dass ein Pod genau diese Einstellung über get pod xyz -o=yaml
enthält.
Leider, als ich versuchte, rolling-update
zu tun, wurde der ursprüngliche Pod nach genau 1 Minute, nicht nach 5 Minuten getötet. Ich mache SSH auf dem Zielcomputer und ich konnte sehen, dass das Andockfenster den Container nach dieser Zeit terminierte.
Ich habe versucht zu untersuchen, wie das Feature funktioniert. Ich fand schließlich die Dokumentation zu kubectl delete
, wo es eine Vorstellung über anmutigen Abschlusszeitraum:
http://kubernetes.io/docs/user-guide/pods/
Standardmäßig wird alle Löschungen sind anmutig innerhalb von 30 Sekunden. Der Befehl kubectl delete unterstützt die Option -grace-period =, mit der ein Benutzer den Standardwert überschreiben und seinen eigenen Wert angeben kann. Der Wert 0 gibt an, dass der Löschvorgang sofort erfolgen soll, und entfernt den Pod sofort in der API, sodass ein neuer Pod mit demselben Namen erstellt werden kann. Auf die Knoten Schoten, die sofort nach wie vor beenden gesetzt wird Kraft eine kleine Gnadenfrist gegeben werden, bevor sie getötet
Also nahm ich eine Schote, nginx, und versuchen Sie es mit grace-period=30
zu löschen. Es stellte sich heraus, dass der ursprüngliche Pod sofort gelöscht wurde und get pods
zeigte, dass der neue gestartet wurde.
Also keine 30 Sekunden. Was mache ich falsch? Es scheint, dass alle Pods kubernetes diese Werte nicht berücksichtigen. Bitte beachte, dass ich Kubernetes v1.2.2
Ich fand auch dieses Problem https://github.com/kubernetes/kubernetes/issues/24695 wo der Reporter gleiches Problem hatte und er löste es auf die gleiche Art und Weise verwendet wird. So z.B. 300 Sekunden sind nicht zu viel für kubernetes.
Während dies theoretisch die Frage beantworten könnte, [wäre es vorzuziehen] (// meta.stackoverflow.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. – Draken