Kubernetes 上の Tomcat に Java .war アプリケーションをデプロイする際に問題が発生しています。
tomcat:8.5.40-jre8 に基づく Docker イメージがあり、2 つの Tomcat .war Web アプリケーションが含まれています。1 つは ROOT にあり、もう 1 つは独自のパスにあります。この Docker イメージを Mac でローカルに取得して実行すると、すべて正常に動作します。ただし、このイメージを Microsoft Azure Kubernetes サービスに展開すると、ROOT Web アプリケーションは 404 でのみ応答します。実行中のコンテナーにターミナルを接続すると、Tomcat が .war ファイルを解凍したことがわかります。
この問題は、Azure ポータルを使用して Kubernetes のバージョンを更新したときに発生し始めましたが、より低いバージョンで 2 番目の Azure Kubernetes サービスを作成しても、問題は依然として存在します。
ネットワークの問題ではないようです。Kubernetes で実行中のイメージにターミナルを接続して curl localhost を実行すると 404 が表示されますが、ローカル マシンで同じ操作を実行すると、期待どおりのページが表示されます。
同じ Docker イメージは以前にも動作しており、クラスターは現在もほぼ同一の別のサービスを問題なく実行しています。
Docker イメージが自分のマシンでは動作するのにもかかわらず、AKS にデプロイすると動作しないのはなぜでしょうか?
ご協力いただければ幸いです。よろしくお願いいたします。
五
答え1
アプリケーションの起動時に ClassNotFoundException が発生していたことが判明しました。このため、Kubernetes のアップグレード後にアプリケーションを起動できなくなりました。
tomcat の localhost ログで見つかったエラーを修正した後、アプリケーションが再び実行されます。