Ich habe Probleme beim Bereitstellen einer Java .war-Anwendung in Tomcat auf Kubernetes.
Ich habe ein Docker-Image basierend auf tomcat:8.5.40-jre8, das zwei Tomcat .war-Webanwendungen enthält, eine im ROOT-Bereich und eine mit eigenem Pfad. Wenn ich dieses Docker-Image lokal auf meinen Mac hole und ausführe, funktioniert alles einwandfrei. Wenn ich das Image jedoch in unserem Microsoft Azure Kubernetes Service bereitstelle, antwortet die ROOT-Webanwendung nur mit einer 404. Wenn ich ein Terminal mit dem laufenden Container verbinde, kann ich sehen, dass Tomcat die .war-Datei entpackt hat.
Das Problem begann, als ich die Kubernetes-Version über das Azure-Portal aktualisierte, aber als ich einen zweiten Azure Kubernetes-Dienst mit einer niedrigeren Version erstellte, besteht das Problem weiterhin.
Es scheint kein Netzwerkproblem zu sein. Wenn ich ein Terminal mit dem laufenden Image auf Kubernetes und curl localhost verbinde, erhalte ich eine 404, aber wenn ich dasselbe auf meinem lokalen Computer mache, erhalte ich die erwartete Seite.
Das gleiche Docker-Image hat zuvor funktioniert und der Cluster führt derzeit einen anderen, fast identischen Dienst ohne Probleme aus.
Wie ist es möglich, dass das Docker-Image auf meinem Computer funktioniert, aber nicht, wenn es im AKS bereitgestellt wird?
Für jede Hilfe wäre ich sehr dankbar! Mit freundlichen Grüßen,
V
Antwort1
Es stellte sich heraus, dass die Anwendung beim Start eine ClassNotFoundException hatte. Dies führte dazu, dass die Anwendung nach dem Kubernetes-Upgrade nicht mehr gestartet werden konnte.
Nach der Behebung des Fehlers, der im Localhost-Protokoll von Tomcat gefunden wurde, läuft die Anwendung wieder.