您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關樹莓派k8s集群如何部署spring cloud微服務項目的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
spring cloud是當前的主流微服務框架之一,雖然目前官方已經推出了spring-cloud-kubernetes開源項目,用于將Spring Cloud應用更方便地運行在kubernetes環境,但考慮到目前有些spring cloud項目還是基于非k8s環境運行,一旦遷移至k8s環境需要盡可能保留原有的架構,因此本項目仍然采用eureka作為服務注冊發現組件、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.18 <none> Ubuntu 20.04 LTS 5.4.0-1011-raspi docker://18.9.9 pi4-node01 Ready node 4d17h v1.15.10 192.168.5.19 <none> 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 <none> 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 ,具體代碼就不介紹了,有興趣的同學可以自行調整。
調用鏈查看系統(zipkin-server):pi4k8s/spring-cloud-zipkin:0.0.1
服務發現注冊中心(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
服務提供示例組件(provider):pi4k8s/spring-cloud-provider:0.0.1
服務消費示例組件(consumer):pi4k8s/spring-cloud-consumer:0.0.1
服務器網關(gateway):pi4k8s/spring-cloud-gateway:0.0.1
調用鏈查看系統(zipkin-server):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/zipkin-server
服務發現注冊中心(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
服務提供示例組件(provider):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/provider
服務消費示例組件(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
服務器網關(gateway):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/gateway
之前我們的實例文章里基本都是介紹如何使用現成的chart去安裝一個應用,比如msyql、redis、kafka和consul,今天我們選擇從頭編寫chart并用該chart安裝spring cloud示例項目。
helm官方首頁展現了helm的定義“the package manager for kubernetes”和進一步說明“Helm is the best way to find, share, and use software built for Kubernetes.”,翻譯成中文就是“kubernetes的應用管理器”以及“Helm是發現、分享和使用為kubernetes構建的應用最好的方式”,極其精辟。一般來講,為kubernetes構建的應用基本上就可以看做云原生應用,因為它至少符合了CNCF2015年對云原生最早的三個定義:容器化、面向微服務架構且支持容器的編排調度,由此我們看到helm在云原生領域展現的信心和實力,這點毋庸置疑,因為我們已經可以能夠基于各類chart倉庫很容易安裝好我們需要的很多應用。但如果你真得沒有找到現成的,那也沒有關系,可以用helm的語法自己來定義和安裝,一旦你確實這么做了,你會發現用helm來組織和定義應用是如此的簡單和自然,面向容器化環境的基礎設施去構架,可以讓你不再糾結于服務器配置、網絡配置和具體軟件安裝細節,只需要關注應用模塊如何劃分,模塊之間關系如何交互即可。基于helm chart表述的軟件架構視圖可以充分覆蓋傳統軟件架構的物理視圖,表現內容甚至比它們還要豐富,且更具有擴展性。
我們自己編寫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節點,且開放了ingress訪問。。
查看創建的pod
root@pi4-master01:~# kubectl get po|grep zipkin-server zipkin-server-0 1/1 Running 0 82s
查看創建的svc
root@pi4-master01:~# kubectl get svc|grep zipkin-server zipkin-server ClusterIP 10.99.240.173 <none> 9411/TCP 92s
查看創建的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/,顯示如下
不過現在系統里還沒有任何請求數據。
注意:用瀏覽器訪問zipkin-server界面之前要參考如下ip域名映射處理進行客戶端設置。
ip域名映射處理
在通過瀏覽器訪問本實踐所涉及系統之前,我們需要在使用客戶端訪問電腦建立ip和相關域名的映射關系,類似如下,后續eureka、gateway和hystrix-dashboard均需要設置,參考本段設置即可,不再贅述:
192.168.5.18 zipkin-server.pi4k8s.com
提示:win10或win7電腦中維護ip和相關域名的文件位置在 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節點,且開放了ingress訪問。
查看創建的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
查看創建的svc
root@pi4-master01:~# kubectl get svc |grep eureka eureka ClusterIP None <none> 8080/TCP 79s
查看創建的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。默認情況下service.type為ClusterIP類型,只支持k8s集群內部訪問,示例命令將servcie.type修改為NodePort,且指定開放端口為8001,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。
查看創建的pod
root@pi4-master01:~# kubectl get po|grep config-server config-server-5896754dfc-t5sfl 1/1 Running 0 6m4s
查看創建的svc
root@pi4-master01:~# kubectl get svc|grep config-server config-server NodePort 10.104.0.119 <none> 8001:8001/TCP 6m27s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到配置中心已經注冊到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中部署服務提供示例組件provider。默認情況下service.type為ClusterIP類型,只支持k8s集群內部訪問,示例命令將servcie.type修改為NodePort,且指定開放端口為8007,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。
查看創建的pod
root@pi4-master01:~# kubectl get po|grep provider provider-6f7ddcdf98-c9hxd 1/1 Running 0 33s
查看創建的svc
root@pi4-master01:~# kubectl get svc|grep provider provider NodePort 10.96.156.37 <none> 8007:8007/TCP 4m30s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到provider已經注冊到eureka如下
使用nodeport方式訪問provider的示例接口
provider組件只提供了兩個接口,其中from接口調用了配置中心的數據。
訪問http://192.168.5.18:8007/hello,顯示如下
訪問http://192.168.5.18:8007/from,顯示如下
訪問zipkin-server界面
provider不僅接入了配置中心,也接入了調用鏈系統,訪問http://zipkin-server.pi4k8s.com/,可以查到相關調用鏈訪問情況如下
使用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中部署服務消費示例組件consumer。默認情況下service.type為ClusterIP類型,只支持k8s集群內部訪問,示例命令將servcie.type修改為NodePort,且指定開放端口為9000,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。
查看創建的pod
root@pi4-master01:~# kubectl get po|grep consumer consumer-797656455-x2cgv 0/1 Running 2 19m
查看創建的svc
root@pi4-master01:~# kubectl get svc|grep consumer consumer NodePort 10.96.219.125 <none> 9000:9000/TCP 20m
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到consumer已經注冊到eureka如下
使用nodeport方式訪問consumer的示例接口
訪問http://192.168.5.18:9000/hello,顯示如下
訪問zipkin-server界面
consumer接入了調用鏈系統,訪問http://zipkin-server.pi4k8s.com/,可以查到相關調用鏈訪問情況如下
訪問hystrix-dashboard界面
consumer配置了斷路器面板可以獨立展示,訪問http://192.168.5.18:9000/hystrix,顯示如下
該界面文本框內輸入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節點,且開放了ingress訪問,該斷路器目前只聚合了consumer集群斷路器面板。
查看創建的pod
root@pi4-master01:~# kubectl get po|grep hystrix-dashboard hystrix-dashboard-6fd9b87589-65g89 0/1 Running 1 2m50s
查看創建的svc
root@pi4-master01:~# kubectl get svc|grep hystrix-dashboard hystrix-dashboard ClusterIP 10.106.100.154 <none> 9902/TCP 18m
查看創建的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已經注冊到eureka如下
訪問hystrix-dashboard界面
訪問http://hystrix-dashboard.pi4k8s.com/hystrix,顯示如下
該界面文本框內輸入http://hystrix-dashboard:9902/turbine.stream ,然后點擊“Monitor Stream”按鈕,進入聚合監控頁面,顯示如下
consumer伸縮為3個后再看效果
root@pi4-master01:~# kubectl scale --replicas=3 deployment/consumer deployment.extensions/consumer scaled
確認consumer啟動3個節點成功
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個節點如下
刷新聚合監控頁面,顯示如下
可以看到Hosts變為3。
使用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中部署服務器網關gateway。該命令將會安裝部署1個gateway節點,且開放了ingress訪問。
查看創建的pod
root@pi4-master01:~# kubectl get po|grep gateway gateway-69b9d7fb87-9zgz9 1/1 Running 0 86s
查看創建的svc
root@pi4-master01:~# kubectl get svc|grep gateway gateway ClusterIP 10.103.12.68 <none> 8220/TCP 3m57s
查看創建的ingress
root@pi4-master01:~# kubectl get ingress|grep gateway gateway gateway.pi4k8s.com 80 4m3s
訪問eureka管理界面
訪問http://eureka.pi4k8s.com/ 我們可以注意到gateway已經注冊到eureka如下
基于網關訪問provider和consumer的接口
這里的網關配置非常簡單,通過它可以對所有注冊到同一個eureka集群的服務進行代理,我們基于網關訪問provider的2個接口和consumer的1個接口,看下效果。
訪問http://gateway.pi4k8s.com/provider/hello,顯示如下
訪問http://gateway.pi4k8s.com/provider/from,顯示如下
訪問http://gateway.pi4k8s.com/consumer/hello,顯示如下
感謝各位的閱讀!關于“樹莓派k8s集群如何部署spring cloud微服務項目”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。