iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
AI & Data

數位中介法沒有屏蔽的 AI 大數據大補帖系列 第 29

Day29《Spring Boot Api 上 k8s 實例》Spring Boot API 測試 與 除錯

  • 分享至 

  • xImage
  •  

今天要將Spring Boot專案啟動測試,並討論一些我自己遇到出問題的點。
Day26所提到的問題也會在[2. K8s的限制]中解答。


  • Spring Boot專案測試

Step1.使用Yaml檔案

使用昨日的Yaml檔案。

kubectl apply -f  teacherapi_deployment.yaml
kubectl apply -f  teacherapi_service.yaml

https://ithelp.ithome.com.tw/upload/images/20220914/20129524jeFNOlAmtd.png

Step2.檢查狀態

檢查Pod狀態。
正常:Running
異常:Error(錯誤)、CrashLoopBackOff(嘗試重啟一直失敗)

kubectl get all

https://ithelp.ithome.com.tw/upload/images/20220914/20129524a1rvjuxSG2.png

Step3.測試專案

這邊我使用Swagger進行演示。
https://ithelp.ithome.com.tw/upload/images/20220914/201295246Iy6aQu8or.png


  • Log查看

Step1.找出Pod名稱

kubectl get all

https://ithelp.ithome.com.tw/upload/images/20220914/20129524KZZl1QdwBi.png

Step2.Log指令檢查錯誤

請自行填上你的Pod名稱

kubectl logs teacherapi-deployment-58cf6c8786-5vcdl

https://ithelp.ithome.com.tw/upload/images/20220914/201295243qU1dlrBAU.png


  • 資料庫出錯:
    1.使用者帳號密碼或權限錯誤
    2.資料庫/資料表不存在或異常/缺失
    3.資料庫連線錯誤(Port/IP位置)

  • K8s限制:
    1.K8s Pod之間的連線限制
    2.未使用Service所映射的Port


  • 資料庫出錯

[1.使用者帳號密碼或權限錯誤]

[Day24/26]有說到一定要先設定使用者與權限

[2.資料庫/資料表不存在或異常/缺失]

[Day24]我當時有使用JPA的套件,可能是操作失誤導致資料庫異常因此報錯

[3.資料庫連線錯誤(Port/IP位置)]

[Day26]可能是你的IP填錯或Port沒有使用Service所映射出的Port,建議可以用Terminal嘗試連線MySql看看。


  • K8s限制

[1.K8s Pod之間的連線限制]

[Day26]有提到直接使用LocalHost會爆炸,原因就出在以下
Docker容器之間其實是互相隔離的,不能直接互相連線,因此必須要做一點設定。
今天使用第一種方法,其他兩個方法可以看這篇文章教學。
方法有三種:
1.使用虛擬IP
2.執行容器時使用Link指令
3.新建Bridge網路

Step1.ifconfig尋找虛擬IP

ifconfig

https://ithelp.ithome.com.tw/upload/images/20220914/20129524hMxy2ttmR5.png

Step2.測試Mysql連線

剛剛查詢到的虛擬IP[172.17.0.1]

mysql -h 172.17.0.1 -P 30306 --protocol=tcp -u yen -p

https://ithelp.ithome.com.tw/upload/images/20220914/20129524EOi8J3A7uv.png

Step3.建立新的Image,並刪除舊的Deployment與Service,重新Apply

將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

[2.未使用Service所映射的Port]

我們設定的Service為30808,而不是原本的8080
https://ithelp.ithome.com.tw/upload/images/20220914/20129524Hn5Jq0pX6g.png


上一篇
Day28《Spring Boot Api 上 k8s 實例》Spring Boot API Deployment & Service yaml撰寫
下一篇
Day30《Spring Boot Api 上 k8s 實例》結語
系列文
數位中介法沒有屏蔽的 AI 大數據大補帖30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言