Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Tomcat-Container kann nicht mit MySQL-Datenbankcontainer in Kubernetes verbunden werden?

Ihre YAML-Dateien sind korrekt. Ich habe die gesamte in der Frage erwähnte Umgebung neu erstellt und ich habe einen gesunden Tomcat mit der Anwendung im Status Running.
Wenn jemand es auch testen möchte, Tomcat-Manager-Benutzername/Passwort sind:

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

Im Tomcat-Protokoll wurden keine SCHWERWIEGENDEN Fehler gefunden, ich habe die Antwort von der Anwendung erhalten:

{"text":"Data-core"}

was wie eine korrekte Antwort aussieht. Ich habe auch die leere Tabellensequenz im Datenkern der Mysql-Datenbank.

Ich kann vermuten, dass Sie ein Verbindungsproblem hatten, das wahrscheinlich durch eine fehlerhafte Arbeit des Kubernetes-Netzwerk-Add-Ons (Calico/Flannel/etc.) verursacht wurde.

Fehlerbehebung:

  1. Um die Einrichtung zu überprüfen, können alle Pods auf demselben Knoten platziert werden, indem dort PV für beide Bereitstellungen erstellt wird.
  2. Um die Konnektivität zu Mysql- oder Tomcat-Ressourcen zu testen, können wir ihre Pods ausführen und Tests mit einfachen Befehlen ausführen:

    $ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
    

    oder führen Sie einfach einen zusätzlichen Pod aus, um zu überprüfen, ob die Dienste korrekt auf den mysql-Pod zeigen:

    $ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
    

Für den Tomcat-Pod können wir die folgenden Befehle verwenden, um die Benutzerpasswörter und die Anwendungsantwort zu überprüfen:

   $ 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/

oder verwenden Sie einen separaten Pod mit curl oder wget um zu überprüfen, ob Tomcat Service und NodePort gut funktionieren:

   $ 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/

Durch die Verwendung von IPs verschiedener Knoten können Sie auch die Cluster-Konnektivität überprüfen, da der NodePort-Dienst denselben Port auf allen Cluster-Knoten öffnet und dann die iptables-Regeln auf den Knoten den Datenverkehr an die IP des Pods weiterleiten.
Wenn sich der Pod auf dem anderen Knoten befindet, Flannel /Calico/etc. Netzwerk-Plug-in liefert es an den richtigen Knoten und an den Pod.