Tus archivos YAML son correctos. He recreado todo el entorno mencionado en la pregunta y tengo un Tomcat saludable con la aplicación en estado de ejecución.
Si alguien también quiere probarlo, el nombre de usuario y la contraseña del administrador de Tomcat son:
username="the-manager" password="needs-a-new-password-here"
No se encontraron errores GRAVES en el registro de Tomcat, obtuve la respuesta de la aplicación:
{"text":"Data-core"}
que parece la respuesta correcta. También tengo la secuencia de la tabla vacía en el núcleo de datos de la base de datos Mysql.
Puedo suponer que has tenido algún tipo de problema de conectividad, probablemente causado por un trabajo incorrecto del complemento de red de Kubernetes (Calico/Flannel/etc.)
Cómo solucionarlo:
- Para verificar la configuración, todos los pods se pueden colocar en el mismo nodo creando PV para ambos despliegues allí.
-
Para probar la conectividad a los recursos de Mysql o Tomcat, podemos ejecutar sus pods y ejecutar pruebas usando comandos simples:
$ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
o simplemente ejecute un pod adicional para verificar si los servicios apuntan correctamente al pod mysql:
$ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
Para tomcat pod, podemos usar los siguientes comandos para verificar las contraseñas de los usuarios y la respuesta de la aplicación:
$ 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/
o use un módulo separado con curl
o wget
para verificar si Tomcat Service y NodePort funcionan 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/
Al usar direcciones IP de diferentes nodos, también puede verificar la conectividad del clúster porque el servicio NodePort abre el mismo puerto en todos los nodos del clúster y luego las reglas de iptables en los nodos reenvían el tráfico a la IP del pod.
Si el pod está ubicado en el nodo diferente, Flannel /Calicó/etc. el complemento de red lo envía al nodo correcto y al Pod.