YAMLファイルは正しいです。質問に記載されている環境全体を再作成し、アプリケーションを実行状態にして正常なTomcatを取得しました。
誰かがテストしたい場合、Tomcatマネージャーのユーザー名/パスワードは次のとおりです。
username="the-manager" password="needs-a-new-password-here"
Tomcatログに重大なエラーは見つかりませんでした。アプリケーションからの応答があります:
{"text":"Data-core"}
これは正しい応答のように見えます。Mysqlデータベースのデータコアにも空のテーブルシーケンスがあります。
おそらくKubernetesネットワークアドオン(Calico / Flannelなど)の誤った動作が原因で、何らかの接続の問題が発生したと推測できます。
トラブルシューティングの方法:
- セットアップを確認するには、両方の展開用にPVを作成することで、すべてのポッドを同じノードに配置できます。
-
MysqlまたはTomcatリソースへの接続をテストするには、ポッドを実行し、簡単なコマンドを使用してテストを実行します。
$ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
または、追加のポッドを実行して、サービスがmysqlポッドを正しく指しているかどうかを確認します。
$ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
Tomcatポッドの場合、次のコマンドを使用して、ユーザーのパスワードとアプリケーションの応答を確認できます。
$ kubectl exec -ti tomcat-pod-name -- cat /usr/local/tomcat/conf/tomcat-users.xml
$ kubectl exec -ti tomcat-pod-name -- curl http://localhost:8080/data-core-0.0.1-SNAPSHOT/
または、curl
で別のポッドを使用します またはwget
TomcatサービスとNodePortが正常に機能するかどうかを確認するには:
$ kubectl run curl -it --rm --image=appropriate/curl --restart=Never -- curl http://tomcat:8080/data-core-0.0.1-SNAPSHOT/
$ curl http://Cluster.Node.IP:30000/data-core-0.0.1-SNAPSHOT/
異なるノードのIPを使用すると、NodePort Serviceがすべてのクラスターノードで同じポートを開き、ノードのiptablesルールがトラフィックをポッドのIPに転送するため、クラスター接続も確認できます。
ポッドが異なるノードにある場合は、フランネル/ Calico/etc。ネットワークプラグインはそれを正しいノードとポッドに配信します。