这是一个spring cloud 和k8s 结合的小例子,将spring cloud 微服务能力 和k8s的动态扩缩容完美结合,因为k8s 本身管理service的能力,所以再维护一个eureka 显得多余,所以本例子中将eureka 去除, 由k8s 管理微服务的注册发现.

本文将spring cloud 部署到k8s 并跑通测试成功, 如果有意见或问题可以加我的qq群: 375595237一起讨论 .

准备

本机 windows idea

服务器 linux centos (我用的虚拟机,需要至少5个G 内存)

minikueb

spring cloud (Finchley )

安装minikube

比较简单,可以看下网上例子,后面我也可以专门写一篇

代码

已经放到git bub

https://github.com/mefly521/sc-no-eureka-to-k8s.git

主要3个模块

因为k8s 已经提供了服务注册发现功能,我们不需要再使用eureka了

端口
service-zuul 网关8761
service-feign 消费8765
service-hi 生产8762

因为不使用了eureka ,所以需要修改一下feign的调用部分

如下,要修改url 里的域名,写为k8s 中创建的service 名字

feign :

@FeignClient(value = "service-hi",url = "http://[这里要写为k8s svc的名称]:[k8s svc集群暴露的端口]",fallback = SchedualServiceHiHystric.class)
public interface SchedualServiceHi {
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

zuul 的配置文件 需要修改:

zuul:
  routes:
    api-a:
      path: /api-hi/**
      url: http://[这里要写为k8s svc hi的名称]:[k8s svc hi 集群暴露的端口]
    api-b:
      path: /api-feign/**
      url: http://[这里要写为k8s svc feign的名称]:[k8s svc feign 集群暴露的端口]

部署到 k8s 上的快速方式

这里用到一个mvn 插件, fabric8-maven-plugin 他能直接将本地工程, 上传到k8s生成镜像并启动成一个k8s 的service,真的是非常方便

插件配置如下

 <plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>fabric8-maven-plugin</artifactId>
    <version>4.0.0</version>
    <executions>
        <execution>
            <goals>
                <goal>resource</goal>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!--配置远程docker守护进程url-->
        <dockerHost>http://200.200.3.150:2375</dockerHost>
        <enricher>
            <config>
                <!-- k8s service 配置 将service开放类型改成NodePort  -->
                <fmp-service>
                    <type>NodePort</type>
                </fmp-service>
            </config>
        </enricher>
    </configuration>
</plugin>

成功了

如果deploy 没有问题的话,就可以在k8s 中看到了,非常方便
在这里插入图片描述

单独访问service hi 没有问题

在这里插入图片描述

访问service feign 并调用service hi 也没有问题

在这里插入图片描述

网关也可以路由到 hi

路由到feign

在这里插入图片描述
扩缩容,只需要修改service.yml 非常方便

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐