一、本文示例
简单实现一个注册中心两个互相调用服务的SpringCloud应用,制作镜像并在k8s环境部署
本地环境:
minikube v1.6.2
java 8
SpringCloud 2.3.2-RELEASE
为保证minikube中可直接使用本地构建的镜像,需要行进行如下设置,使本地docker命令连接到minikube环境中
执行命令:
1 | eval $(minikube docker-env) |
此时docker 命令已经连接到minikube环境中了,可以使用docker images查看已经不是本地的镜像列表了(别担心该命令只改变了当前会话下的docker命令,关闭或重新开户会话就正常了)
然后按正常逻辑构建镜像即可
1 | docker build -t xxx . |
最后在写部署文件的Deployment.yaml中将imagePullPolicy设置为IfNotPresent或Never(不去远程拉取,使用本地)
1 | apiVersion: extensions/v1beta1 |
二、创建项目
eureka项目:注册中心
service-provider: 服务提供方
service-customer:服务调用方
下面挑重点说一下,完整代码文末有github地址
1)eureka注册中心
pom.xml:
1 | .... |
主要是引入eureka-server依赖
application.yaml
1 | spring: |
Dockerfile:
1 | FROM openjdk:8-alpine |
k8s部署及创建service k8s.yaml:
1 | apiVersion: extensions/v1beta1 |
2) service-provider服务提供方
pom.xml
1 | .... |
引入eureka client依赖
application.yaml:
1 | spring: |
Dockerfile:
1 | FROM openjdk:8-alpine |
k8s部署及创建service k8s.yaml:
1 | apiVersion: extensions/v1beta1 |
提供接口服务 HelloController.java:
1 |
|
3) service-customer服务调用方
pom.xml
1 | .... |
引入eureka client依赖
application.yaml:
1 | spring: |
Dockerfile:
1 | FROM openjdk:8-alpine |
k8s部署及创建service k8s.yaml:
1 | apiVersion: extensions/v1beta1 |
测试接口IndexController.java:
1 |
|
HelloService.java:
1 | /** |
HelloServiceFallback.java:
1 |
|
三、构建部署
首先保证当前终端已经使用的是minikube的docker(可以docker images
看一下,镜像列表不是本地环境的就对了)
首先构建部署eureka(进入eureka项目目录):
1 | # 构建 |
可以看到service映射到nodeport的 30512 可以使用命令查看minikube的ip:
1 | minikube ip |
在浏览器访问 http://192.168.64.2:30512 就可以打开eureka注册中心了
部署service-provider服务提供方(进入service-provider项目目录):
1 | # 构建 |
部署service-customer服务调用方(进入service-customer项目目录):
1 | # 构建 |
pod都Running之后,测试一下接口调用 跟上边eureka一样,customer映射到node的prot为 32357
使用浏览器访问 http://192.168.64.2:32357/index 返回:
1 | hello world |
删除服务提供者的pod:
1 | kubectl delete pod service-provider-57d69f46c-lltgw |
再次请求: http://192.168.64.2:32357/index 返回:
1 | fallback.... |
过一会新的pod启动成功后再访问就恢复正常了
完整版代码地址:https://github.com/iuv/springcloud-k8s-demo/tree/demo1
本文链接: http://blog.jisuye.com/2020/08/20/springcloud-k8s-demo1/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!