Các tệp YAML của bạn là chính xác. Tôi đã tạo lại toàn bộ môi trường được đề cập trong câu hỏi và tôi đã có Tomcat khỏe mạnh với ứng dụng ở trạng thái Đang chạy.
Nếu ai đó cũng muốn kiểm tra nó, tên người dùng / mật khẩu của người quản lý Tomcat là:
username="the-manager" password="needs-a-new-password-here"
Không tìm thấy lỗi SEVERE nào trong nhật ký tomcat, tôi đã nhận được phản hồi từ ứng dụng:
{"text":"Data-core"}
trông giống như phản hồi chính xác. Tôi cũng có chuỗi bảng trống trong lõi dữ liệu cơ sở dữ liệu Mysql.
Tôi có thể đoán bạn đã gặp một số loại sự cố kết nối, có thể do hoạt động sai của addon mạng Kubernetes (Calico / Flannel / etc.)
Cách khắc phục sự cố:
- Để kiểm tra thiết lập, tất cả các nhóm có thể được đặt trên cùng một nút bằng cách tạo PV cho cả hai lần triển khai ở đó.
-
Để kiểm tra kết nối với tài nguyên Mysql hoặc Tomcat, chúng tôi có thể thực thi các nhóm của chúng và chạy kiểm tra bằng các lệnh đơn giản:
$ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
hoặc chỉ chạy nhóm bổ sung để kiểm tra xem các dịch vụ có trỏ chính xác đến nhóm mysql hay không:
$ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
Đối với pod tomcat, chúng ta có thể sử dụng các lệnh sau để kiểm tra mật khẩu người dùng và phản hồi của ứng dụng:
$ 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/
hoặc sử dụng nhóm riêng biệt với curl
hoặc wget
để kiểm tra xem Dịch vụ Tomcat và NodePort có hoạt động tốt không:
$ 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/
Bằng cách sử dụng IP của các nút khác nhau, bạn cũng có thể kiểm tra kết nối cụm vì Dịch vụ NodePort mở cùng một cổng trên tất cả các nút cụm và sau đó iptables quy tắc trên các nút chuyển tiếp lưu lượng truy cập đến IP của Pod.
Nếu nhóm nằm trên nút khác, Flannel / Calico / vv. plugin mạng phân phối nó đến đúng nút và tới Pod.