Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible de connecter le conteneur tomcat au conteneur de base de données mysql dans kubernetes ?

Vos fichiers YAML sont corrects. J'ai recréé tout l'environnement mentionné dans la question et j'ai un Tomcat sain avec l'application à l'état En cours d'exécution.
Si quelqu'un veut également le tester, le nom d'utilisateur/mot de passe du gestionnaire Tomcat est :

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

Aucune erreur SEVERE n'a été trouvée dans le journal tomcat, j'ai la réponse de l'application :

{"text":"Data-core"}

qui ressemble à une réponse correcte. J'ai également la séquence de table vide dans le noyau de données de la base de données Mysql.

Je peux supposer que vous avez eu une sorte de problème de connectivité, probablement causé par un travail incorrect de l'addon réseau Kubernetes (Calico/Flannel/etc.)

Comment résoudre ce problème :

  1. Pour vérifier la configuration, tous les pods peuvent être placés sur le même nœud en créant des PV pour les deux déploiements.
  2. Pour tester la connectivité aux ressources Mysql ou Tomcat, nous pouvons exécuter leurs pods et exécuter des tests à l'aide de commandes simples :

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

    ou exécutez simplement un pod supplémentaire pour vérifier si les services pointent correctement vers le pod mysql :

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

Pour le pod tomcat, nous pouvons utiliser les commandes suivantes pour vérifier les mots de passe des utilisateurs et la réponse de l'application :

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

ou utilisez un pod séparé avec curl ou wget pour vérifier si Tomcat Service et NodePort fonctionnent bien :

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

En utilisant les adresses IP de différents nœuds, vous pouvez également vérifier la connectivité du cluster, car le service NodePort ouvre le même port sur tous les nœuds du cluster, puis les règles iptables sur les nœuds transfèrent le trafic vers l'adresse IP du pod.
Si le pod est situé sur un nœud différent, Flannel /Calicot/etc. le plugin réseau le transmet au bon nœud et au pod.