這篇文章給大家分享的是有關(guān)樹莓派k8s集群如何部署spring cloud微服務(wù)項目的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元黃山區(qū)做網(wǎng)站,已為上家服務(wù),為黃山區(qū)各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
spring cloud是當(dāng)前的主流微服務(wù)框架之一,雖然目前官方已經(jīng)推出了spring-cloud-kubernetes開源項目,用于將Spring Cloud應(yīng)用更方便地運行在kubernetes環(huán)境,但考慮到目前有些spring cloud項目還是基于非k8s環(huán)境運行,一旦遷移至k8s環(huán)境需要盡可能保留原有的架構(gòu),因此本項目仍然采用eureka作為服務(wù)注冊發(fā)現(xiàn)組件、spring-cloud-config作為配置中心。
樹莓派k8s集群
root@pi4-master01:~# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME pi4-master01 Ready master 4d18h v1.15.10 192.168.5.18Ubuntu 20.04 LTS 5.4.0-1011-raspi docker://18.9.9 pi4-node01 Ready node 4d17h v1.15.10 192.168.5.19 Ubuntu 20.04 LTS 5.4.0-1011-raspi docker://18.9.9 pi4-node02 Ready node 4d17h v1.15.10 192.168.5.20 Ubuntu 20.04 LTS 5.4.0-1011-raspi docker://18.9.9
樹莓派k8s集群已安裝helm
root@pi4-master01:~/k8s/cluster-monitoring-0.37.0# helm version Client: &version.Version{SemVer:"v2.15.0", GitCommit:"c2440264ca6c078a06e088a838b0476d2fc14750", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.15.0+unreleased", GitCommit:"9668ad4d90c5e95bd520e58e7387607be6b63bb6", GitTreeState:"dirty"}
對了,如果你還沒有樹莓派k8s集群,這里有一篇樹莓派 k8s 集群入坑指南可以參考,歡迎入坑。
以下是本實踐用到的鏡像,其源碼和Dockerfile在https://gitee.com/pi4k8s/springcloud-simple.git ,具體代碼就不介紹了,有興趣的同學(xué)可以自行調(diào)整。
調(diào)用鏈查看系統(tǒng)(zipkin-server):pi4k8s/spring-cloud-zipkin:0.0.1
服務(wù)發(fā)現(xiàn)注冊中心(eureka):pi4k8s/spring-cloud-eureka:0.0.1
配置中心(config-server):pi4k8s/spring-cloud-config-server:0.0.1
聚合斷路器面板(hystrix-dashboard):pi4k8s/spring-cloud-hystrix-dashboard:0.0.1
服務(wù)提供示例組件(provider):pi4k8s/spring-cloud-provider:0.0.1
服務(wù)消費示例組件(consumer):pi4k8s/spring-cloud-consumer:0.0.1
服務(wù)器網(wǎng)關(guān)(gateway):pi4k8s/spring-cloud-gateway:0.0.1
調(diào)用鏈查看系統(tǒng)(zipkin-server):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/zipkin-server
服務(wù)發(fā)現(xiàn)注冊中心(eureka):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/eureka
配置中心(config-server):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/config-server
服務(wù)提供示例組件(provider):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/provider
服務(wù)消費示例組件(consumer):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/consumer
聚合斷路器面板(hystrix-dashboard):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/hystrix-dashboard
服務(wù)器網(wǎng)關(guān)(gateway):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/gateway
之前我們的實例文章里基本都是介紹如何使用現(xiàn)成的chart去安裝一個應(yīng)用,比如msyql、redis、kafka和consul,今天我們選擇從頭編寫chart并用該chart安裝spring cloud示例項目。
helm官方首頁展現(xiàn)了helm的定義“the package manager for kubernetes”和進(jìn)一步說明“Helm is the best way to find, share, and use software built for Kubernetes.”,翻譯成中文就是“kubernetes的應(yīng)用管理器”以及“Helm是發(fā)現(xiàn)、分享和使用為kubernetes構(gòu)建的應(yīng)用最好的方式”,極其精辟。一般來講,為kubernetes構(gòu)建的應(yīng)用基本上就可以看做云原生應(yīng)用,因為它至少符合了CNCF2015年對云原生最早的三個定義:容器化、面向微服務(wù)架構(gòu)且支持容器的編排調(diào)度,由此我們看到helm在云原生領(lǐng)域展現(xiàn)的信心和實力,這點毋庸置疑,因為我們已經(jīng)可以能夠基于各類chart倉庫很容易安裝好我們需要的很多應(yīng)用。但如果你真得沒有找到現(xiàn)成的,那也沒有關(guān)系,可以用helm的語法自己來定義和安裝,一旦你確實這么做了,你會發(fā)現(xiàn)用helm來組織和定義應(yīng)用是如此的簡單和自然,面向容器化環(huán)境的基礎(chǔ)設(shè)施去構(gòu)架,可以讓你不再糾結(jié)于服務(wù)器配置、網(wǎng)絡(luò)配置和具體軟件安裝細(xì)節(jié),只需要關(guān)注應(yīng)用模塊如何劃分,模塊之間關(guān)系如何交互即可?;趆elm chart表述的軟件架構(gòu)視圖可以充分覆蓋傳統(tǒng)軟件架構(gòu)的物理視圖,表現(xiàn)內(nèi)容甚至比它們還要豐富,且更具有擴(kuò)展性。
我們自己編寫spring cloud示例項目chart在這里:https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/
使用helm部署zipkin-server命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n zipkin-server ./zipkin-server --set ingress.enabled=true
通過上述命令,將在Kubernetes中部署配置中心zipkin-server。該命令將會安裝部署1個zipkin-server節(jié)點,且開放了ingress訪問。。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po|grep zipkin-server zipkin-server-0 1/1 Running 0 82s
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc|grep zipkin-server zipkin-server ClusterIP 10.99.240.1739411/TCP 92s
查看創(chuàng)建的ingress
root@pi4-master01:~# kubectl get ingress|grep zipkin-server zipkin-server zipkin-server.pi4k8s.com 80 104s
訪問zipkin-server界面
用瀏覽器訪問http://zipkin-server.pi4k8s.com/,顯示如下
不過現(xiàn)在系統(tǒng)里還沒有任何請求數(shù)據(jù)。
注意:用瀏覽器訪問zipkin-server界面之前要參考如下ip域名映射處理進(jìn)行客戶端設(shè)置。
ip域名映射處理
在通過瀏覽器訪問本實踐所涉及系統(tǒng)之前,我們需要在使用客戶端訪問電腦建立ip和相關(guān)域名的映射關(guān)系,類似如下,后續(xù)eureka、gateway和hystrix-dashboard均需要設(shè)置,參考本段設(shè)置即可,不再贅述:
192.168.5.18 zipkin-server.pi4k8s.com
提示:win10或win7電腦中維護(hù)ip和相關(guān)域名的文件位置在 C:\Windows\System32\drivers\etc\hosts。
使用helm部署eureka集群命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n eureka ./eureka --set ingress.enabled=true
通過上述命令,將在Kubernetes中部署eureka集群。該命令將會安裝部署3個eureka節(jié)點,且開放了ingress訪問。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po |grep eureka eureka-0 0/1 Running 0 31s eureka-1 0/1 Running 0 31s eureka-2 0/1 Running 0 31s
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc |grep eureka eureka ClusterIP None8080/TCP 79s
查看創(chuàng)建的ingress
root@pi4-master01:~# kubectl get ingress |grep eureka eureka eureka.pi4k8s.com 80 89s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ ,頁面顯示如下
使用helm部署config-server命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n config-server ./config-server \ --set service.type=NodePort \ --set service.nodePort=8001
通過上述命令,將在Kubernetes中部署配置中心config-server。默認(rèn)情況下service.type為ClusterIP類型,只支持k8s集群內(nèi)部訪問,示例命令將servcie.type修改為NodePort,且指定開放端口為8001,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po|grep config-server config-server-5896754dfc-t5sfl 1/1 Running 0 6m4s
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc|grep config-server config-server NodePort 10.104.0.1198001:8001/TCP 6m27s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到配置中心已經(jīng)注冊到eureka如下
使用nodeport方式訪問配置中心的配置信息
訪問http://192.168.5.18:8001/config/dev,顯示如下
使用helm部署provider命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n provider ./provider \ --set service.type=NodePort \ --set service.nodePort=8007
通過上述命令,將在kubernetes中部署服務(wù)提供示例組件provider。默認(rèn)情況下service.type為ClusterIP類型,只支持k8s集群內(nèi)部訪問,示例命令將servcie.type修改為NodePort,且指定開放端口為8007,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po|grep provider provider-6f7ddcdf98-c9hxd 1/1 Running 0 33s
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc|grep provider provider NodePort 10.96.156.378007:8007/TCP 4m30s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到provider已經(jīng)注冊到eureka如下
使用nodeport方式訪問provider的示例接口
provider組件只提供了兩個接口,其中from接口調(diào)用了配置中心的數(shù)據(jù)。
訪問http://192.168.5.18:8007/hello,顯示如下
訪問http://192.168.5.18:8007/from,顯示如下
訪問zipkin-server界面
provider不僅接入了配置中心,也接入了調(diào)用鏈系統(tǒng),訪問http://zipkin-server.pi4k8s.com/,可以查到相關(guān)調(diào)用鏈訪問情況如下
使用helm部署consumer命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n consumer ./consumer \ --set service.type=NodePort \ --set service.nodePort=9000
通過上述命令,將在Kubernetes中部署服務(wù)消費示例組件consumer。默認(rèn)情況下service.type為ClusterIP類型,只支持k8s集群內(nèi)部訪問,示例命令將servcie.type修改為NodePort,且指定開放端口為9000,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po|grep consumer consumer-797656455-x2cgv 0/1 Running 2 19m
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc|grep consumer consumer NodePort 10.96.219.1259000:9000/TCP 20m
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到consumer已經(jīng)注冊到eureka如下
使用nodeport方式訪問consumer的示例接口
訪問http://192.168.5.18:9000/hello,顯示如下
訪問zipkin-server界面
consumer接入了調(diào)用鏈系統(tǒng),訪問http://zipkin-server.pi4k8s.com/,可以查到相關(guān)調(diào)用鏈訪問情況如下
訪問hystrix-dashboard界面
consumer配置了斷路器面板可以獨立展示,訪問http://192.168.5.18:9000/hystrix,顯示如下
該界面文本框內(nèi)輸入http://192.168.5.18:9000/actuator/hystrix.stream ,然后點擊“Monitor Stream”按鈕,顯示如下
使用helm部署hystrix-dashboard命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n hystrix-dashboard ./hystrix-dashboard --set ingress.enabled=true
通過上述命令,將在Kubernetes中部署斷路器面板hystrix-dashboard。該命令將會安裝部署1個hystrix-dashboard節(jié)點,且開放了ingress訪問,該斷路器目前只聚合了consumer集群斷路器面板。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po|grep hystrix-dashboard hystrix-dashboard-6fd9b87589-65g89 0/1 Running 1 2m50s
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc|grep hystrix-dashboard hystrix-dashboard ClusterIP 10.106.100.1549902/TCP 18m
查看創(chuàng)建的ingress
root@pi4-master01:~# kubectl get ingress|grep hystrix-dashboard hystrix-dashboard hystrix-dashboard.pi4k8s.com 80 18m
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到hystrix-dashboard已經(jīng)注冊到eureka如下
訪問hystrix-dashboard界面
訪問http://hystrix-dashboard.pi4k8s.com/hystrix,顯示如下
該界面文本框內(nèi)輸入http://hystrix-dashboard:9902/turbine.stream ,然后點擊“Monitor Stream”按鈕,進(jìn)入聚合監(jiān)控頁面,顯示如下
consumer伸縮為3個后再看效果
root@pi4-master01:~# kubectl scale --replicas=3 deployment/consumer deployment.extensions/consumer scaled
確認(rèn)consumer啟動3個節(jié)點成功
root@pi4-master01:~# kubectl get po|grep consumer consumer-797656455-hsssp 1/1 Running 0 11m consumer-797656455-wq67x 1/1 Running 0 86s consumer-797656455-x2cgv 1/1 Running 0 28m
訪問http://eureka.pi4k8s.com/ 我們可以注意到consumer在eureka注冊了3個節(jié)點如下
刷新聚合監(jiān)控頁面,顯示如下
可以看到Hosts變?yōu)?。
使用helm部署gateway命令如下
root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.git root@pi4-master01:/home/charts# cd pi4charts/springcloud-example/charts root@pi4-master01:/home/charts/pi4charts/springcloud-example/charts# helm install -n gateway ./gateway --set ingress.enabled=true
通過上述命令,將在kubernetes中部署服務(wù)器網(wǎng)關(guān)gateway。該命令將會安裝部署1個gateway節(jié)點,且開放了ingress訪問。
查看創(chuàng)建的pod
root@pi4-master01:~# kubectl get po|grep gateway gateway-69b9d7fb87-9zgz9 1/1 Running 0 86s
查看創(chuàng)建的svc
root@pi4-master01:~# kubectl get svc|grep gateway gateway ClusterIP 10.103.12.688220/TCP 3m57s
查看創(chuàng)建的ingress
root@pi4-master01:~# kubectl get ingress|grep gateway gateway gateway.pi4k8s.com 80 4m3s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到gateway已經(jīng)注冊到eureka如下
基于網(wǎng)關(guān)訪問provider和consumer的接口
這里的網(wǎng)關(guān)配置非常簡單,通過它可以對所有注冊到同一個eureka集群的服務(wù)進(jìn)行代理,我們基于網(wǎng)關(guān)訪問provider的2個接口和consumer的1個接口,看下效果。
訪問http://gateway.pi4k8s.com/provider/hello,顯示如下
訪問http://gateway.pi4k8s.com/provider/from,顯示如下
訪問http://gateway.pi4k8s.com/consumer/hello,顯示如下
感謝各位的閱讀!關(guān)于“樹莓派k8s集群如何部署spring cloud微服務(wù)項目”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!