美文网首页我的微服务学习开发碎片知识
docker+k8s+springcloud微服务集群部署实例

docker+k8s+springcloud微服务集群部署实例

作者: 飞鱼007 | 来源:发表于2019-07-31 16:14 被阅读94次

本文是在CentOS7环境上,搭建微服务集群系统简单样例。

架构描述:

k8s集群:1台master node,2台slave node,均安装maven、docker、k8s环境;k8s集群系统用来保证单个服务指定数量的微服务实例副本Pod。

微服务系统:微服务注册中心fudan-eureka部署1个副本Pod、微服务fudan-service部署2个副本Pod、微服务fudan-consumer1部署3个副本Pod。其中微服务fudan-consumer1中的getUser接口方法会调用微服务fudan-service1中的sayHello接口方法。

系统架构


1、编写微服务注册中心fudan-eureka并部署到K8S

1.1 创建微服务注册中心工程

使用Eclipse+Maven+Springboot编写注册中心工程实现:

使用Eclipse+Maven+Springboot编写微服务fudan-service1工程实现:main方法类上增加EnableEurekaServer注解,标注加载微服务注册中心。

工程截图如下所示:

微服务注册中心项目工程

注册中心无业务代码,仅有启动类App.java

注意:在启动类上加入注解@EnableEurekaServer,标注加载微服务注册中心。

注册中心

配置文件application.properties:

项目配置文件application.propeties

Dockerfile文件,用于mvn docker打包镜像:

脚本Dockerfile

Maven pom.xml文件:

1.2 部署微服务注册中心eureka到K8S集群

1. 将fudan-eureka项目完整上传到CentOS机器上

2. 编译打包镜像;

首先到fudan-eureka项目文件夹下,依次执行命令:

命令:mvn package docker:build

编译打包镜像成功:

编译打包镜像成功

查看images镜像:

3. 镜像上传到Docker Hub(或阿里云Hub)

命令:

docker push zhang0908/fudan-eureka:V1

备注:docker需要先登录:docker login

docker hub上查看上传的fudan-eureka镜像:

4. K8S集群启动注册中心

创建集群部署文件vi fudan-eureka.yaml

备注:此处此处为简单起见,pod副本数量设为1。但在商用中,为保证注册中心的高可靠性,一般部署多个eureka注册中心,并相互注册。

对外访问类型为NodePort,端口为31071.

集群端口为9999

fudan-eureka.yaml

启动注册中心:

命令:kubectl apply -f fudan-eureka.yaml

查看pod副本和service

命令:

kubectl get pods -o wide

kubectl get svc -o wide

注意:K8S集群内部是使用clusterIp+port进行通讯,如上图所示,使用kubectl get svc命令查询到fudan-eureka-service服务的cluster-ip:10.96.99.188,端口port:9999,在微服务fudan-service1和fudan-consumer1工程的application.properties需要配置此IP和Port,用于微服务向注册中心注册通讯。

5. 测试和验证

如fudan-eureka.yaml部署文件所示,该服务注册中心对外访问方式为NortPort,端口为31071。

此处可以使用nginx ingress多反向代理,通过域名访问注册中心,此处不做详述。

服务注册中心

No instances,暂无微服务注册实例。

2、编写微服务fudan-service1并部署到K8S

2.1 创建微服务fudan-service1工程

使用Eclipse+Maven+Springboot编写微服务fudan-service1工程实现:main方法类上增加EnableDiscoveryClient注解,启动后根据application.properties中配置的eureka注册中心地址进行服务注册。

在Configuration中创建RestTemplate的Bean,并增加@LoadBalanced注解,标注启用Ribbon负载均衡。

增加sayHello接口方法:

配置文件application.properties:

Dockerfile文件:

pom.xml文件:

2.2 部署微服务fudan-service1到K8S集群

1. 将fudan-service1项目完整上传到CentOS机器上

2. 编译打包镜像;

首先到fudan-service1项目文件夹下,依次执行命令:

mvn package docker:build

查看images镜像:

3. 镜像上传到Docker Hub(或阿里云Hub)

命令:docker push zhang0908/fudan-service1:V1

备注:docker需要先登录:docker login

docker hub中查看上传的fudan-service1镜像:

4. K8S集群启动微服务fudan-service1

创建集群部署文件,命令:

vi fudan-service.yaml

pod副本数量为2(K8S集群会实时监控并确保有2个实例副本可用),NodePort端口为31072,若该端口不指定,k8s会自动分配。

启动注微服务fudan-service1:

命令:kubectl apply -f fudan-service1.yaml

查看pod副本和service

命令:

kubectl get pods -o wide

kubectl get svc -o wide

5. 测试和验证

查看eureka微服务注册中心,确认2个fudan-service微服务实例已注册到eureka中:

如fudan-service1.yaml部署文件所示,该微服务对外访问方式为NodePort,端口为31072,测试验证sayHello接口方法:

3、编写微服务fudan-consumer1并部署到K8S

3.1 创建微服务fudan-consumer1工程

使用Eclipse+Maven+Springboot编写微服务fudan-consumer1工程实现:

main方法类上增加EnableDiscoveryClient注解,启动后根据application.properties中配置的eureka注册中心地址进行服务注册。

在Configuration中创建RestTemplate的Bean,并增加@LoadBalanced注解,标注启用Ribbon负载均衡器。

增加getUser和test接口方法:

配置文件application.properties:

配置文件Dockerfile:

pom.xml文件:

3.2 部署微服务fudan-consumer1到K8S集群

1. 将fudan-consumer1项目完整上传到CentOS机器上

2. 编译打包镜像;

首先到fudan-consumer1项目文件夹下,执行命令:

命令:

mvn package docker:build

查看images镜像:

docker images

3. 镜像上传到Docker Hub(或阿里云Hub)

命令:docker push zhang0908/fudan-consumer1:v1

备注:docker需要先登录:docker login

4. K8S集群启动注册中心

创建集群部署文件

命令:vi fudan-consumer1.yaml

pod副本数量为3(K8S集群会实时监控并确保有3个实例副本可用),NodePort端口为31073,若该端口不指定,k8s会自动分配。

启动微服务fudan-consumer1:

命令:kubectl apply -f fudan-consumer1.yaml

查看pod副本和service

命令:

kubectl get pods -o wide

kubectl get svc -o wide

5. 测试和验证

查看eureka微服务注册中心,确认3个fudan-consumer1微服务实例已注册到eureka中:

如fudan-consumer1.yaml部署文件所示,该微服务对外访问方式为NodePort,端口为31073,测试验证getUser接口方法:

getUser接口方法会调用微服务fudan-service1中的sayHello方法。

至此,在k8s集群中部署微服务系统样例完毕。

相关文章

  • docker+k8s+springcloud微服务集群部署实例

    本文是在CentOS7环境上,搭建微服务集群系统简单样例。 架构描述: k8s集群:1台master node,2...

  • 微服务的理解

    微服务与单体项目集群部署的区别 优点: 1 微服务可以针对业务的访问量进行更精确的部署,集群会造成资源浪费 2 微...

  • 分布式服务框架--第六章:服务路由

    分布式服务框架上线运行时都是集群组网,这意味着集群中存在某个服务的多实例部署,消费者如何从服务列表中选择某个服务进...

  • golang微服务

    避免一个模块故障影响整个程序。能够独立部署、运维、升级。 服务间通过api通讯。 假设上传服务集群起了多个实例,每...

  • 第四周部分学习报告

    上周模糊问题 哨兵集群必须部署2个以上节点 如果哨兵集群仅仅部署了个2个哨兵实例,quorum=1 |:---- ...

  • 【MongoDB】— CentOS76部署mongodb分片集群

    CentOS76部署mongodb分片集群Sharding Cluster通过多节点和多实例部署。 1分片集群规划...

  • 微服务架构设计模式(十)微服务的部署

    部署微服务应用 1、将服务部署为容器 (1)总体部署步骤 (2)容器化的优势 封装技术栈 服务实例隔离 实例资源受...

  • 从 session 到 token

    2018.04.18 服务器存储 session 的缺点:所有集群实例都存储所有用户的 session,集群实例数...

  • XDH_LESSON6

    服务器集群搭建、管理与快速部署四台ubuntu虚拟机搭建集群服务器。什么叫服务器集群?服务器集群就是指将很多服务器...

  • Linux 集群部署解决方案一

    集群部署图例 准备工作 两台阿里云ECS实例中均部署 gitee 仓库项目,传送 Git Gitee仓库自动部署[...

网友评论

    本文标题:docker+k8s+springcloud微服务集群部署实例

    本文链接:https://www.haomeiwen.com/subject/umgpwqtx.html