k8s部署springboot容器連接mysql容器

前提準(zhǔn)備:

????????安裝好Docker和Kubernetes,初學(xué)者的話可以部署單節(jié)點(diǎn)集群,即Docker for Mac/Windows,上一篇文章我已經(jīng)寫(xiě)過(guò)如何搭建單節(jié)點(diǎn)集群。如果是多節(jié)點(diǎn)集群調(diào)度,則可以參考這篇文章。

部署前提:

????????先編寫(xiě)一個(gè)springboot的一個(gè)demo,沒(méi)接觸過(guò)springboot的同學(xué)可以參考這篇文章。我這邊對(duì)springboot的demo做了小小的改動(dòng),我是和springboot自身的springboot JPA進(jìn)行搭建的,沒(méi)用mybatis或者h(yuǎn)ibernate進(jìn)行整合。

springboot JPA 簡(jiǎn)圖

????????還有一個(gè)小小的改動(dòng)是springboot中配置數(shù)據(jù)庫(kù)時(shí),是在application.properties文件中先配置成功。然后在進(jìn)行連接,這一點(diǎn)我覺(jué)得擴(kuò)展性不太好,就手動(dòng)寫(xiě)個(gè)方法去替換文件中數(shù)據(jù)庫(kù)配置的參數(shù),以滿足通過(guò)配置參數(shù)連接更多類型的數(shù)據(jù)庫(kù)。

獲取數(shù)據(jù)庫(kù)連接信息

我的demo里,template部分采用angular1.0進(jìn)行編寫(xiě)的,當(dāng)時(shí)是為了學(xué)習(xí)angular然后嵌套進(jìn)去的。

angular JS

開(kāi)始部署:

先編寫(xiě)mysql的mysql-deploy.yaml腳本,然后執(zhí)行

kubectl apply -f mysql-deployment.yaml

即可啟動(dòng)mysql容器:

mysql-deploy.yaml

接下來(lái)編寫(xiě)mysql-service.yaml腳本,然后執(zhí)行

kubectl apply -f mysql-service.yaml

即可啟動(dòng)mysql的Service服務(wù):

mysql-service.yaml

????????由于我才用的是NodePort方式,所以本地可視化工具也可以進(jìn)行連接,端口使用的是對(duì)外暴露的nodePort,如果采用ClusterIP,則需要開(kāi)啟proxy,例如:

kubectl proxy --port=8888

下圖是采用NodePort方式啟動(dòng)的:

可視化工具連接mysql容器

????????接下來(lái)編寫(xiě)myweb-deploy.yaml,注意一點(diǎn)的是現(xiàn)在我們采用容器間相互通訊,所有的網(wǎng)絡(luò)通訊是在docker所劃分的整個(gè)網(wǎng)絡(luò)中,故mysql數(shù)據(jù)庫(kù)的地址也必須是docker網(wǎng)絡(luò)子網(wǎng)中給mysql分配的一個(gè)有效IP地址,可以通過(guò)查看mysql這個(gè)pod的詳情進(jìn)行查看所屬IP,命令如下:

kubectl describe pod mysql-d7d8c74cc-f7rc4

即可看到IP為10.1.0.62,所以myweb-deploy.yaml腳本中,數(shù)據(jù)庫(kù)的地址必須配置為剛才獲取到的IP地址,而不是本地的IP或者采用localhost,很多新手在這里容易搞混。

mysql pod詳情

myweb這個(gè)pod是容器網(wǎng)絡(luò)中,總docker的子網(wǎng)中一個(gè)有效的IP地址,然后執(zhí)行

kubectl apply -f web-deployment.yaml

即可創(chuàng)建web服務(wù)的pod

myweb-deploy.yaml

接下來(lái)創(chuàng)建myweb-service.yaml,然后執(zhí)行

kubectl apply -f myweb-service.yaml

即可創(chuàng)建好myweb的Service服務(wù)

myweb-service.yaml

接下來(lái)查看myweb的日志

myweb日志

接下來(lái)我們查看本機(jī)的pod和svc

資源狀態(tài)

發(fā)現(xiàn)pod和service都處于running狀態(tài),然后通過(guò)nodeIP:nodePort的方式調(diào)用服務(wù)的接口

web頁(yè)面

由于我采用單節(jié)點(diǎn)方式部署,容器之外的nodeIP可以是localhost,也可以通過(guò)ipconfig查看本機(jī)所屬網(wǎng)絡(luò)的具體IP地址,

本機(jī)IP地址

通過(guò)本地所屬網(wǎng)絡(luò)IP,即也屬于nodeIP:nodePort方式,訪問(wèn)url后,頁(yè)面如下

web頁(yè)面

這部分springboot的代碼以托管到GitHub上,地址如下:k8s-docker-springboot

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、基礎(chǔ)架構(gòu) 1.1 Master Master節(jié)點(diǎn)上面主要由四個(gè)模塊組成:APIServer、scheduler...
    阿斯蒂芬2閱讀 11,143評(píng)論 0 44
  • 《kubernetes權(quán)威指南》是本不可多得的好書(shū),這里記錄一下自己的讀書(shū)筆記以及按照書(shū)中搭建的源代碼。 kube...
    行書(shū)以鑒閱讀 8,382評(píng)論 1 19
  • 一、 K8s 是什么? Kubernetes(k8s)是自動(dòng)化容器操作的開(kāi)源平臺(tái),這些操作包括部署,調(diào)度和節(jié)點(diǎn)集群...
    loveroot閱讀 6,708評(píng)論 1 21
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,536評(píng)論 19 139
  • 1.Pod Pod是k8s的最基本的操作單元,包含一個(gè)或多個(gè)緊密相關(guān)的容器,類似于豌豆莢的概念。一個(gè)Pod可以被一...
    jony456123閱讀 7,662評(píng)論 0 5

友情鏈接更多精彩內(nèi)容