千家信息网

树莓派k8s集群如何部署spring cloud微服务项目

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家分享的是有关树莓派k8s集群如何部署spring cloud微服务项目的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。spring cloud简介spring
千家信息网最后更新 2026年10月31日树莓派k8s集群如何部署spring cloud微服务项目

这篇文章给大家分享的是有关树莓派k8s集群如何部署spring cloud微服务项目的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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 wideNAME           STATUS   ROLES    AGE     VERSION    INTERNAL-IP    EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION     CONTAINER-RUNTIMEpi4-master01   Ready    master   4d18h   v1.15.10   192.168.5.18           Ubuntu 20.04 LTS   5.4.0-1011-raspi   docker://18.9.9pi4-node01     Ready    node     4d17h   v1.15.10   192.168.5.19           Ubuntu 20.04 LTS   5.4.0-1011-raspi   docker://18.9.9pi4-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 versionClient: &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 ,具体代码就不介绍了,有兴趣的同学可以自行调整。

  • 调用链查看系统(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

spring cloud示例项目chart

  • 调用链查看系统(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

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是发现、分享和使用为kubernetes构建的应用最好的方式",极其精辟。一般来讲,为kubernetes构建的应用基本上就可以看做云原生应用,因为它至少符合了CNCF2015年对云原生最早的三个定义:容器化、面向微服务架构且支持容器的编排调度,由此我们看到helm在云原生领域展现的信心和实力,这点毋庸置疑,因为我们已经可以能够基于各类chart仓库很容易安装好我们需要的很多应用。但如果你真得没有找到现成的,那也没有关系,可以用helm的语法自己来定义和安装,一旦你确实这么做了,你会发现用helm来组织和定义应用是如此的简单和自然,面向容器化环境的基础设施去构架,可以让你不再纠结于服务器配置、网络配置和具体软件安装细节,只需要关注应用模块如何划分,模块之间关系如何交互即可。基于helm chart表述的软件架构视图可以充分覆盖传统软件架构的物理视图,表现内容甚至比它们还要丰富,且更具有扩展性。

我们自己编写spring cloud示例项目chart在这里:https://github.com/pi4k8s/pi4charts/tree/master/springcloud-example/

helm部署调用链查看系统(zipkin-server)
  • 使用helm部署zipkin-server命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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-serverzipkin-server-0                                  1/1     Running   0          82s
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc|grep zipkin-serverzipkin-server                   ClusterIP   10.99.240.173            9411/TCP                     92s
  • 查看创建的ingress

root@pi4-master01:~# kubectl get ingress|grep zipkin-serverzipkin-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)
  • 使用helm部署eureka集群命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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 eurekaeureka-0                                         0/1     Running   0          31seureka-1                                         0/1     Running   0          31seureka-2                                         0/1     Running   0          31s
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc |grep eurekaeureka                          ClusterIP   None                     8080/TCP                     79s
  • 查看创建的ingress

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

    访问http://eureka.pi4k8s.com/ ,页面显示如下

helm部署配置中心(config-server)
  • 使用helm部署config-server命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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-serverconfig-server-5896754dfc-t5sfl                   1/1     Running   0          6m4s
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc|grep config-serverconfig-server                   NodePort    10.104.0.119             8001:8001/TCP                6m27s
  • 访问eureka管理界面

    访问http://eureka.pi4k8s.com/ 我们可以注意到配置中心已经注册到eureka如下

  • 使用nodeport方式访问配置中心的配置信息

访问http://192.168.5.18:8001/config/dev,显示如下

helm部署服务提供示例组件(provider)
  • 使用helm部署provider命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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 providerprovider-6f7ddcdf98-c9hxd                        1/1     Running   0          33s
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc|grep providerprovider                        NodePort    10.96.156.37              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)
  • 使用helm部署consumer命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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 consumerconsumer-797656455-x2cgv                        0/1     Running   2          19m
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc|grep consumerconsumer                        NodePort    10.96.219.125            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)
  • 使用helm部署hystrix-dashboard命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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-dashboardhystrix-dashboard-6fd9b87589-65g89              0/1     Running   1          2m50s
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc|grep hystrix-dashboardhystrix-dashboard               ClusterIP   10.106.100.154            9902/TCP                     18m
  • 查看创建的ingress

root@pi4-master01:~# kubectl get ingress|grep hystrix-dashboardhystrix-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/consumerdeployment.extensions/consumer scaled

确认consumer启动3个节点成功

root@pi4-master01:~# kubectl get po|grep consumerconsumer-797656455-hsssp                         1/1     Running   0          11mconsumer-797656455-wq67x                         1/1     Running   0          86sconsumer-797656455-x2cgv                         1/1     Running   0          28m

访问http://eureka.pi4k8s.com/ 我们可以注意到consumer在eureka注册了3个节点如下

刷新聚合监控页面,显示如下

可以看到Hosts变为3。

helm部署服务器网关(gateway)
  • 使用helm部署gateway命令如下

root@pi4-master01:/home/charts# git clone https://github.com/pi4k8s/pi4charts.gitroot@pi4-master01:/home/charts# cd pi4charts/springcloud-example/chartsroot@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 gatewaygateway-69b9d7fb87-9zgz9                         1/1     Running   0          86s
  • 查看创建的svc

root@pi4-master01:~# kubectl get svc|grep gatewaygateway                         ClusterIP   10.103.12.68             8220/TCP                     3m57s
  • 查看创建的ingress

root@pi4-master01:~# kubectl get ingress|grep gatewaygateway             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微服务项目"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

服务 命令 示例 配置 界面 集群 项目 组件 应用 接口 断路器 系统 网关 开放 管理 树莓 浏览器 节点 面板 浏览 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 互联网科技网 互联网佳科技有限公司 中关村互联网 科技集团 互联网巨头反垄断金融科技 没上市的科技互联网公司 互联网络科技有限公司 智网互联网科技 北京互联网络科技有限公司 互联网科技logo设计 博兴的互联网电子科技公司 花神(南京)互联网科技有限公司 互联网科技的全部知识 科技互联网海报 广东工业互联网大赛深圳学泰科技 互联网科技资金流入 富国互联网金融科技混合基金 美国五大互联网科技公司市值多少 河南商务圈互联网科技有限公司 东风日产互联网科技公司叫什么 湖南永感互联网科技有限公司 美国互联网科技巨头监管 科技信息互联网 上海电发互联网科技有限公司 互联网科技项目计划书材料类 苏州五指互联网络科技有限 科技互联网海报 锡山区互联网智能科技产品供应 瑞安市蟠桃会互联网科技有限公司 伍佰万互联网科技是干嘛的
0