K8S下如何搭建eureka集群

背景

传统应用上云,基于传统应用需要考虑上云的方案和改造成本,这也是传统应用上云过程中的难点,本篇介绍3台eureka搭建的方案。

方案一

此方案借助了K8S中Service的一些功能。
K8S下如何搭建eureka集群_第1张图片
这种方案是传统方案的简单迁移版本,比较易于理解;pod通过k8s的service提供稳定的访问url,pod ip是会经常发生改变的,service一旦创建名称就不会发生改变了,所以通过service name访问到pod,

配置文件案例如下:

eureka:
  client:
    serviceUrl:
      defaultZone: https://service-name-1:8761/eureka/,http://service-name-2:8761/eureka/,http://service-name-3:8761/eureka/

方案二

此方案需要使用K8S StatefulSet和Headless Service的一些功能特点
K8S下如何搭建eureka集群_第2张图片

需要创建一个StatefulSet和Headless Service,利用了StatefulSet可以为每个Pod分配一个独立的网络标识的特征来实现eureka集群方案。

server: 
  port: 8761
  
eureka: 
  instance:
    hostname: $(StatefulSet 名称)-$(序号) # 获取本POD的网络标识符
  client: 
    register-with-eureka: true     
    fetch-registry: true     
    service-url: 
      # Eureka 实例之间互相注册,把配置3台服务的Headless Service路径配置上去
      # 如果配置了hostname的话,defaultZone可以简写: http://$(StatefulSet 名称)-0:8761/eureka 
      defaultZone: http://$(StatefulSet 名称)-0.$(服务名称).$(名字空间).svc.cluster.local:8761/eureka,http://$(StatefulSet 名称)-1.$(服务名称).$(名字空间).svc.cluster.local.svc.cluster.local:8761/eureka,http://$(StatefulSet 名称)-2.$(服务名称).$(名字空间).svc.cluster.local.svc.cluster.local:8761/eureka

总结

方案一易于理解,学习成本比较低,容易想到;操作比较繁琐,没有充分利用K8S的的特性。
方案二需要对K8S的StatefulSet和Headless有一定的了解,操作简单,方便维护。
推荐使用方案二

你可能感兴趣的:(K8S,Spring,cloud,kubernetes,eureka,容器)