今天要將Spring Boot專案啟動測試,並討論一些我自己遇到出問題的點。
Day26所提到的問題也會在[2. K8s的限制]中解答。
使用昨日的Yaml檔案。
kubectl apply -f teacherapi_deployment.yaml
kubectl apply -f teacherapi_service.yaml
檢查Pod狀態。
正常:Running
異常:Error(錯誤)、CrashLoopBackOff(嘗試重啟一直失敗)
kubectl get all
這邊我使用Swagger進行演示。
kubectl get all
請自行填上你的Pod名稱
kubectl logs teacherapi-deployment-58cf6c8786-5vcdl
資料庫出錯:
1.使用者帳號密碼或權限錯誤
2.資料庫/資料表不存在或異常/缺失
3.資料庫連線錯誤(Port/IP位置)
K8s限制:
1.K8s Pod之間的連線限制
2.未使用Service所映射的Port
[Day24/26]有說到一定要先設定使用者與權限
[Day24]我當時有使用JPA的套件,可能是操作失誤導致資料庫異常因此報錯
[Day26]可能是你的IP填錯或Port沒有使用Service所映射出的Port,建議可以用Terminal嘗試連線MySql看看。
[Day26]有提到直接使用LocalHost會爆炸,原因就出在以下
Docker容器之間其實是互相隔離的,不能直接互相連線,因此必須要做一點設定。
今天使用第一種方法,其他兩個方法可以看這篇文章教學。
方法有三種:
1.使用虛擬IP
2.執行容器時使用Link指令
3.新建Bridge網路
ifconfig
剛剛查詢到的虛擬IP[172.17.0.1]
mysql -h 172.17.0.1 -P 30306 --protocol=tcp -u yen -p
將Day26的LocalHost更改為虛擬IP位置,並重新包成JAR,製作成Image,上傳到Docker Hub上(流程全部再做一次)。
再來刪除舊的Deployment與Service,重新Apply。
kubectl delete deployment teacherapi-deployment
kubectl delete service teacherapi-service
kubectl apply -f teacherapi_deployment.yaml
kubectl apply -f teacherapi_service.yaml
我們設定的Service為30808,而不是原本的8080