Kubernetes 部署 Spring Cloud 注册中心 Eureka Server
系统环境
Java JDK 版本:openjdk:8-jdk
Docker 版本: version 19.03.8
kubernetes 版本:1.14.0
SpringBoot 版本:2.0.3.RELEASE
SpringCloud 版本:Finchley.RELEASE
一. 简介
Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务。Eureka 包含 Eureka Server 和 Eureka Client 两个组件,Eureka Server 提供服务注册服务,Eureka Client 会将信息注册到 Eureka Server,然后各个 Eureka Client 间就能通过 Eureka Server 获取已经注册服务实例的节点位置信息和状态等信息。
SpringCloud 是一套非常火爆的微服务架构,它很多组件都需要 Eureka Server 充作注册中心来完成服务间负载均衡和维护服务列表信息等功能。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。现在我们很多服务都是以 Docker 镜像方式运行在各个服务器上,并且依赖 Kubernetes 来对服务镜像进行编排,接下来要部署的 Eureka Server 也是要用 StaetfulSet 方式部署到 Kubernetes 中运行。
现阶段实际往 Kubernetes 中迁移的项目大多数都是之前未使用 Kubernetes 的项目,由于 Kubernetes 自己有一套服务发现、负载均衡机制(ETCD、CoreDNS、Service),所以觉得用 Eureka 来当注册中心就不能和 Kubernetes 的 Service 配合起来,也就不能使用过 Kubernetes 提供的负载能力,使之带来了开发的不便。当然,之前的老项目很多是基于 SpringCloud + docker 部署方式部署的,迁移的原则就是减少重构开发量,故而对于一些老项目迁移到 Kubernetes 中的话,还是需要部署 Eureka 来避免大规模改动代码。
二. 创建 Eureka Server 项目
a、Maven 引入相应 Jar
<!--?xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelversion>4.0.0</modelversion>
<artifactid>eureka-server</artifactid>
<version> 1.0.0</version>
<packaging>jar</packaging>
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>2.0.3.RELEASE</version>
<relativepath> <!-- lookup parent from repository -->
</relativepath></parent>
<properties>
<project.build.sourceencoding>UTF-8</project.build.sourceencoding>
<project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
<java.version>1.8</j