Spring Cloud Eureka简介
Eureka是Netflix开源的服务注册发现软件,服务发现可以说是微服务架构的核心了,微服务部署之后,一定要有服务注册和发现的能力,Eureka就提供了这样的功能。
Spring Cloud Eureka项目结构
Spring Cloud Eureka作为整个集群的注册中心,管理了集群中的所有,
首先需要使用maven导入Spring Cloud Eureka的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
Eureka中无需任何业务代码,只需要有一个启动类并且加上对应的注解即可
@SpringBootApplication 标识这是一个启动类,并且把该启动类注入到容器中
@EnableEurekaServer 标识该项目作为Spring Cloud中的注册中心
然后我们需要配置该项目的Application.yaml文件
server:
#Eureka服务器端口号
port: 8761
eureka:
instance:
# eureka服务端的实例名称
hostname: localhost
client:
#是否注册到eureka服务
registerWithEureka: false
#是否在本地缓存注册表信息
fetchRegistry: false
serviceUrl:
#设置与eureka交互的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
至此,Spring Cloud Eureka项目准备完毕,接下来就是将Eureka部署到K8s中即可。
Spring Cloud Eureka部署到k8s
首先需要在在项目中创建一个DockerFile文件
# Docker image for springboot application
# VERSION 0.0.1
# Author: Lucas
### 基础镜像,使用alpine操作系统,openjkd使用8u201
FROM openjdk:8u201-jdk-alpine3.9
#作者
MAINTAINER Lucas <1181370590@qq.com>
#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
#添加变量,该变量只在当前的dockerfile中有效
#ARG workdir=/app
##声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
#VOLUME ${workdir}
#WORKDIR ${workdir}
RUN mkdir -p /usr/local
#应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD target/EurekaServer-1.0.0.jar /usr/local/app.jar
# 运行容器后执行的第一条命令
ENTRYPOINT ["java","-jar","/usr/local/app.jar"]
#暴露8761端口
EXPOSE 8761
在idea中连接上远程机的docker
然后运行docker run命令将此镜像推送到机器上面
此时在我们的机器上面运行docker images即可查看到镜像已经推送到机器上面。
docker images
docker tag eureka:latest 1181370590/eureka:v0.0.1
docker push 1181370590/eureka:v0.0.1
apiVersion: apps/v1
kind: Deployment
metadata:
name: eureka
labels:
app: eureka
spec:
replicas: 1
selector:
matchLabels:
app: eureka
template:
metadata:
labels:
app: eureka
spec:
containers:
- name: eureka
image: 1181370590/eureka:v0.0.1
ports:
- containerPort: 8761
---
apiVersion: v1
kind: Service
metadata:
name: eureka-server
spec:
ports:
- port: 8761
protocol: TCP
targetPort: 8761
type: NodePort
selector:
app: eureka
使用命令部署
# kubectl create -f Eureka.yaml
使用命令查看pod和service是否部署成功
kubectl get pods
kubectl get services
即可看到Eureka部署到了k8s集群当中