File YAML Anda sudah benar. Saya telah membuat ulang seluruh lingkungan yang disebutkan dalam pertanyaan dan saya mendapatkan Tomcat yang sehat dengan aplikasi dalam status Berjalan.
Jika seseorang juga ingin mengujinya, nama pengguna/kata sandi manajer Tomcat adalah:
username="the-manager" password="needs-a-new-password-here"
Tidak ada kesalahan PARAH yang ditemukan di log kucing jantan, saya mendapat respons dari aplikasi:
{"text":"Data-core"}
yang terlihat seperti respons yang benar. Saya juga mendapatkan urutan tabel kosong di inti data database MySQL.
Saya kira Anda mengalami semacam masalah konektivitas, mungkin disebabkan oleh pekerjaan addon jaringan Kubernetes yang salah (Calico/Flannel/etc.)
Cara memecahkan masalah:
- Untuk memeriksa penyiapan, semua pod dapat ditempatkan pada node yang sama dengan membuat PV untuk kedua penerapan di sana.
-
Untuk menguji konektivitas ke sumber daya Mysql atau Tomcat, kita dapat mengeksekusi ke pod mereka dan menjalankan pengujian menggunakan perintah sederhana:
$ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
atau jalankan pod tambahan untuk memeriksa apakah layanan menunjuk dengan benar ke pod mysql:
$ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
Untuk Tomcat Pod, kita dapat menggunakan perintah berikut untuk memeriksa kata sandi pengguna dan respons aplikasi:
$ 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/
atau gunakan pod terpisah dengan curl
atau wget
untuk memeriksa apakah Layanan Tomcat dan NodePort berfungsi dengan baik:
$ 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/
Dengan menggunakan IP dari node yang berbeda, Anda juga dapat memeriksa konektivitas cluster karena Layanan NodePort membuka port yang sama pada semua node cluster dan kemudian aturan iptables pada node meneruskan lalu lintas ke IP Pod.
Jika pod terletak di node yang berbeda, Flannel /Calico/dll. plugin jaringan mengirimkannya ke node yang benar dan ke Pod.