我在 Kubernetes 上的 Tomcat 中部署 Java .war 应用程序时遇到了问题。
我有一个基于 tomcat:8.5.40-jre8 的 Docker 镜像,其中包含两个 Tomcat .war webapps,一个在 ROOT,另一个有自己的路径。当我在 Mac 上本地拉取并运行此 Docker 镜像时,一切正常。但是,当我将镜像部署到我们的 Microsoft Azure Kubernetes 服务时,ROOT webapp 仅响应 404。如果我将终端连接到正在运行的容器,我可以看到 Tomcat 已解压 .war 文件。
当我使用 Azure 门户更新 Kubernetes 版本时出现了此问题,但当我使用较低版本创建第二个 Azure Kubernetes 服务时,此问题仍然存在。
这似乎不是网络问题。当我将终端连接到 Kubernetes 上运行的映像并 curl localhost 时,我得到了 404,但是当我在本地机器上执行相同操作时,我得到了我期望的页面。
相同的 Docker 镜像之前已经运行过,并且集群现在运行另一个几乎相同的服务,没有任何问题。
为什么 Docker 映像在我的计算机上可以运行,但部署到 AKS 时却不行?
任何帮助都将不胜感激!敬请关注,
五
答案1
原来是应用程序在启动时出现了 ClassNotFoundException。这导致应用程序在 Kubernetes 升级后无法启动。
修复错误后,在 tomcat 的 localhost 日志中发现,应用程序再次运行。