Mysql
 sql >> Database >  >> RDS >> Mysql

Impossibile connettere il contenitore Tomcat al contenitore del database mysql in kubernetes?

I tuoi file YAML sono corretti. Ho ricreato l'intero ambiente menzionato nella domanda e ho un Tomcat sano con l'applicazione nello stato In esecuzione.
Se qualcuno vuole anche testarlo, nome utente/password del gestore Tomcat sono:

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

Non sono stati trovati errori GRAVI nel registro Tomcat, ho ricevuto la risposta dall'applicazione:

{"text":"Data-core"}

che sembra una risposta corretta. Ho anche la sequenza di tabelle vuota nel data-core del database Mysql.

Posso immaginare che tu abbia avuto qualche tipo di problema di connettività, probabilmente causato da un lavoro errato del componente aggiuntivo di rete Kubernetes (Calico/Flannel/ecc.)

Come risolverlo:

  1. Per controllare la configurazione, tutti i pod possono essere posizionati sullo stesso nodo creando lì PV per entrambi i deployment.
  2. Per testare la connettività alle risorse Mysql o Tomcat possiamo eseguire sui loro pod ed eseguire test utilizzando semplici comandi:

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

    oppure esegui semplicemente un pod aggiuntivo per verificare se i servizi puntano correttamente al pod mysql:

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

Per Tomcat pod possiamo utilizzare i seguenti comandi per controllare le password degli utenti e la risposta dell'applicazione:

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

oppure usa un pod separato con curl o wget per verificare se Tomcat Service e NodePort funzionano bene:

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

Utilizzando IP di nodi diversi puoi controllare anche la connettività del cluster perché NodePort Service apre la stessa porta su tutti i nodi del cluster e quindi le regole iptables sui nodi inoltrano il traffico all'IP del Pod.
Se il pod si trova sul nodo diverso, Flannel /Calico/ecc. plug-in di rete lo consegna al nodo corretto e al Pod.