樹莓派k8s集群如何部署springcloud微服務項目

這篇文章給大家分享的是有關樹莓派k8s集群如何部署spring cloud微服務項目的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯于2013年創(chuàng)立,是專業(yè)互聯網技術服務公司,擁有項目成都做網站、成都網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元黃山區(qū)做網站,已為上家服務,為黃山區(qū)各地企業(yè)和個人服務,聯系電話:13518219792

spring cloud簡介

spring cloud是當前的主流微服務框架之一,雖然目前官方已經推出了spring-cloud-kubernetes開源項目,用于將Spring Cloud應用更方便地運行在kubernetes環(huán)境,但考慮到目前有些spring cloud項目還是基于非k8s環(huán)境運行,一旦遷移至k8s環(huán)境需要盡可能保留原有的架構,因此本項目仍然采用eureka作為服務注冊發(fā)現組件、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 集群入坑指南可以參考,歡迎入坑。

spring cloud示例項目鏡像

以下是本實踐用到的鏡像,其源碼和Dockerfile在https://gitee.com/pi4k8s/springcloud-simple.git ,具體代碼就不介紹了,有興趣的同學可以自行調整。

  • 調用鏈查看系統(tǒng)(zipkin-server):pi4k8s/spring-cloud-zipkin:0.0.1

  • 服務發(fā)現注冊中心(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

spring cloud示例項目chart

  • 調用鏈查看系統(tǒng)(zipkin-server):https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/charts/zipkin-server

  • 服務發(fā)現注冊中心(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

helm部署spring cloud示例項目

之前我們的實例文章里基本都是介紹如何使用現成的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是發(fā)現、分享和使用為kubernetes構建的應用最好的方式”,極其精辟。一般來講,為kubernetes構建的應用基本上就可以看做云原生應用,因為它至少符合了CNCF2015年對云原生最早的三個定義:容器化、面向微服務架構且支持容器的編排調度,由此我們看到helm在云原生領域展現的信心和實力,這點毋庸置疑,因為我們已經可以能夠基于各類chart倉庫很容易安裝好我們需要的很多應用。但如果你真得沒有找到現成的,那也沒有關系,可以用helm的語法自己來定義和安裝,一旦你確實這么做了,你會發(fā)現用helm來組織和定義應用是如此的簡單和自然,面向容器化環(huán)境的基礎設施去構架,可以讓你不再糾結于服務器配置、網絡配置和具體軟件安裝細節(jié),只需要關注應用模塊如何劃分,模塊之間關系如何交互即可。基于helm chart表述的軟件架構視圖可以充分覆蓋傳統(tǒng)軟件架構的物理視圖,表現內容甚至比它們還要豐富,且更具有擴展性。

我們自己編寫spring cloud示例項目chart在這里:https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/

helm部署調用鏈查看系統(tǒng)(zipkin-server)
  • 使用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.173   <none>         9411/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/,顯示如下
    樹莓派k8s集群如何部署spring cloud微服務項目

不過現在系統(tǒng)里還沒有任何請求數據。

注意:用瀏覽器訪問zipkin-server界面之前要參考如下ip域名映射處理進行客戶端設置。

ip域名映射處理
在通過瀏覽器訪問本實踐所涉及系統(tǒng)之前,我們需要在使用客戶端訪問電腦建立ip和相關域名的映射關系,類似如下,后續(xù)eureka、gateway和hystrix-dashboard均需要設置,參考本段設置即可,不再贅述:
192.168.5.18 zipkin-server.pi4k8s.com
提示:win10或win7電腦中維護ip和相關域名的文件位置在 C:\Windows\System32\drivers\etc\hosts。

helm部署服務發(fā)現注冊中心(eureka)
  • 使用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   None            <none>         8080/TCP                     79s
  • 查看創(chuàng)建的ingress

root@pi4-master01:~# kubectl get ingress |grep eureka
eureka   eureka.pi4k8s.com             80      89s
  • 訪問eureka管理界面

    訪問http://eureka.pi4k8s.com/ ,頁面顯示如下
    樹莓派k8s集群如何部署spring cloud微服務項目

helm部署配置中心(config-server)
  • 使用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,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。

  • 查看創(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.119    <none>         8001:8001/TCP                6m27s
  • 訪問eureka管理界面

    訪問http://eureka.pi4k8s.com/ 我們可以注意到配置中心已經注冊到eureka如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 使用nodeport方式訪問配置中心的配置信息

訪問http://192.168.5.18:8001/config/dev,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

helm部署服務提供示例組件(provider)
  • 使用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,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。

  • 查看創(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.37     <none>         8007:8007/TCP                4m30s
  • 訪問eureka管理界面

    訪問http://eureka.pi4k8s.com/ 我們可以注意到provider已經注冊到eureka如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 使用nodeport方式訪問provider的示例接口

provider組件只提供了兩個接口,其中from接口調用了配置中心的數據。

訪問http://192.168.5.18:8007/hello,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

訪問http://192.168.5.18:8007/from,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 訪問zipkin-server界面
    provider不僅接入了配置中心,也接入了調用鏈系統(tǒng),訪問http://zipkin-server.pi4k8s.com/,可以查到相關調用鏈訪問情況如下

樹莓派k8s集群如何部署spring cloud微服務項目

helm部署服務消費示例組件(consumer)
  • 使用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,這樣方便我們從客戶端通過瀏覽器直接訪問查看效果了。

  • 查看創(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.125   <none>         9000:9000/TCP                20m
  • 訪問eureka管理界面

    訪問http://eureka.pi4k8s.com/ 我們可以注意到consumer已經注冊到eureka如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 使用nodeport方式訪問consumer的示例接口

訪問http://192.168.5.18:9000/hello,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 訪問zipkin-server界面

consumer接入了調用鏈系統(tǒng),訪問http://zipkin-server.pi4k8s.com/,可以查到相關調用鏈訪問情況如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 訪問hystrix-dashboard界面

consumer配置了斷路器面板可以獨立展示,訪問http://192.168.5.18:9000/hystrix,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目
該界面文本框內輸入http://192.168.5.18:9000/actuator/hystrix.stream ,然后點擊“Monitor Stream”按鈕,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

helm部署聚合斷路器面板(hystrix-dashboard)
  • 使用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.154   <none>         9902/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已經注冊到eureka如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 訪問hystrix-dashboard界面

訪問http://hystrix-dashboard.pi4k8s.com/hystrix,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

該界面文本框內輸入http://hystrix-dashboard:9902/turbine.stream ,然后點擊“Monitor Stream”按鈕,進入聚合監(jiān)控頁面,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

consumer伸縮為3個后再看效果

root@pi4-master01:~# kubectl scale --replicas=3 deployment/consumer
deployment.extensions/consumer scaled

確認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é)點如下

樹莓派k8s集群如何部署spring cloud微服務項目

刷新聚合監(jiān)控頁面,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

可以看到Hosts變?yōu)?。

helm部署服務器網關(gateway)
  • 使用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節(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.68    <none>         8220/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已經注冊到eureka如下

樹莓派k8s集群如何部署spring cloud微服務項目

  • 基于網關訪問provider和consumer的接口

這里的網關配置非常簡單,通過它可以對所有注冊到同一個eureka集群的服務進行代理,我們基于網關訪問provider的2個接口和consumer的1個接口,看下效果。

訪問http://gateway.pi4k8s.com/provider/hello,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

訪問http://gateway.pi4k8s.com/provider/from,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

訪問http://gateway.pi4k8s.com/consumer/hello,顯示如下

樹莓派k8s集群如何部署spring cloud微服務項目

感謝各位的閱讀!關于“樹莓派k8s集群如何部署spring cloud微服務項目”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

文章名稱:樹莓派k8s集群如何部署springcloud微服務項目
文章URL:http://muchs.cn/article48/gecdep.html

成都網站建設公司_創(chuàng)新互聯,為您提供自適應網站網站制作、關鍵詞優(yōu)化、企業(yè)建站、定制開發(fā)、品牌網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站建設網站維護公司