sql >> データベース >  >> RDS >> Mysql

tomcatコンテナをkubernetesのmysqlデータベースコンテナに接続できませんか?

    YAMLファイルは正しいです。質問に記載されている環境全体を再作成し、アプリケーションを実行状態にして正常なTomcatを取得しました。
    誰かがテストしたい場合、Tomcatマネージャーのユーザー名/パスワードは次のとおりです。

     username="the-manager" password="needs-a-new-password-here"
    

    Tomcatログに重大なエラーは見つかりませんでした。アプリケーションからの応答があります:

    {"text":"Data-core"}
    

    これは正しい応答のように見えます。Mysqlデータベースのデータコアにも空のテーブルシーケンスがあります。

    おそらくKubernetesネットワークアドオン(Calico / Flannelなど)の誤った動作が原因で、何らかの接続の問題が発生したと推測できます。

    トラブルシューティングの方法:

    1. セットアップを確認するには、両方の展開用にPVを作成することで、すべてのポッドを同じノードに配置できます。
    2. 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。ネットワークプラグインはそれを正しいノードとポッドに配信します。




    1. MySQLのテーブル定義の最後にVARCHAR列を配置する必要がありますか?

    2. クライアントから送信されたリクエストは、@DateTimeFormatを使用して構文的に正しくありませんでした

    3. E-BusinessSuite12.2での主要なテクノロジーの変更

    4. PDOを使用したPHPでの各登録ユーザーのデータの取得と表示