Twoje pliki YAML są poprawne. Odtworzyłem całe środowisko wymienione w pytaniu i mam sprawnego Tomcata z aplikacją w stanie Running.
Jeśli ktoś też chce ją przetestować, nazwa użytkownika/hasło menedżera Tomcat to:
username="the-manager" password="needs-a-new-password-here"
W dzienniku tomcat nie znaleziono POWAŻNYCH błędów, otrzymałem odpowiedź z aplikacji:
{"text":"Data-core"}
co wygląda na poprawną odpowiedź. Mam również pustą sekwencję tabeli w bazie danych Mysql.
Domyślam się, że miałeś jakiś problem z łącznością, prawdopodobnie spowodowany niepoprawną pracą dodatku sieciowego Kubernetes (Calico/Flannel/etc.)
Jak go rozwiązać:
- Aby sprawdzić konfigurację, wszystkie pody można umieścić w tym samym węźle, tworząc PV dla obu tam wdrożeń.
-
Aby przetestować łączność z zasobami Mysql lub Tomcat, możemy uruchomić ich pody i uruchomić testy za pomocą prostych poleceń:
$ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
lub po prostu uruchom dodatkowy pod, aby sprawdzić, czy usługi poprawnie wskazują na pod mysql:
$ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
W przypadku tomcat pod możemy użyć następujących poleceń, aby sprawdzić hasła użytkowników i odpowiedzi aplikacji:
$ 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/
lub użyj oddzielnego poda z curl
lub wget
aby sprawdzić, czy usługa Tomcat i NodePort działają dobrze:
$ 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/
Używając adresów IP różnych węzłów, możesz również sprawdzić łączność klastra, ponieważ usługa NodePort otwiera ten sam port we wszystkich węzłach klastra, a następnie reguły iptables na węzłach przekazują ruch do adresu IP poda.
Jeśli pod znajduje się na innym węźle, flanelowe /Calico/itd. wtyczka sieciowa dostarcza go do właściwego węzła i do poda.