2016-04-17 8 views
0

Ich benutze Fabric8, um den Status eines Kuberenetes Pod mit dem folgenden Code zu erhalten.Wie identifiziere ich einen terminierenden Pod in kubernetes mit Java

KubernetesHelper.getPodStatusText(pod); 

Ich deploy eine App innerhalb eines Containers und es gibt eine Eins-zu-Eins-Zuordnung zwischen einem Container und Pod. Meine Anforderung besteht darin, die Anwendung erneut bereitzustellen. Nach dem Löschen des Pods überprüfe ich den Status und die Methode gibt beim Löschen den Status "Running" zurück.

Ich kann nicht feststellen, dass der Pod gelöscht wurde, da die neu bereitgestellte App auch den Status "Running" zurückgibt. Gibt es andere Variablen eines Pods, die zur Identifizierung eines gesunden Pods gegenüber einem terminierenden Pod verwendet werden können?

Antwort

1

Eine Möglichkeit, dies durchzuführen, besteht darin, ein rollendes Upgrade durchzuführen. Dadurch wird sichergestellt, dass Ihre implementierte Anwendung keine Ausfallzeit verursacht (neue Pods werden gestartet, bevor alte Pods gestoppt werden). Eine Einschränkung besteht darin, dass Sie einen Replikationscontroller oder einen Replikationssatz dafür verwenden müssen. Bei den meisten Rolling-Bereitstellungen wird lediglich das Image des Containers für die neue Version der Software aktualisiert.

Sie können dies durch Java über fabric8Kubernetes Java client tun. Here ist ein Beispiel:

client.replicationControllers() 
    .inNamespace("thisisatest") 
    .withName("nginx-controller") 
    .rolling().updateImage("nginx"); 

Sie können eine beliebige Konfiguration des Controllers Replikation ändern (Repliken, Umgebungsvariablen, etc). Der Anruf wird zurückgegeben, wenn Ihre Pods mit der neuen Version Ready & die alten Replikation & Pods wurden gestoppt & gelöscht.

Verwandte Themen