前提準(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)行整合。

????????還有一個(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ù)。

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

開(kāi)始部署:
先編寫(xiě)mysql的mysql-deploy.yaml腳本,然后執(zhí)行
kubectl apply -f mysql-deployment.yaml
即可啟動(dòng)mysql容器:

接下來(lái)編寫(xiě)mysql-service.yaml腳本,然后執(zhí)行
kubectl apply -f mysql-service.yaml
即可啟動(dòng)mysql的Service服務(wù):

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

????????接下來(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,很多新手在這里容易搞混。

myweb這個(gè)pod是容器網(wǎng)絡(luò)中,總docker的子網(wǎng)中一個(gè)有效的IP地址,然后執(zhí)行
kubectl apply -f web-deployment.yaml
即可創(chuàng)建web服務(wù)的pod

接下來(lái)創(chuàng)建myweb-service.yaml,然后執(zhí)行
kubectl apply -f myweb-service.yaml
即可創(chuàng)建好myweb的Service服務(wù)

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

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

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

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

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

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