在K8S上部署eureka-server

本文参考地址:https://kuboard.cn/learning/k8s-practice/ocp/eureka-server.html#%E7%90%86%E8%A7%A3eureka-server

一、资源准备

在 Kubernetes 中部署多个 eureka-server 的实例组成集群时,主要有如下考虑因素:

  • 每个 eureka-server 需要被赋予一个唯一的 id,通过字段 eureka.instance.instance-id 指定。OCP 中,该字段的配置为 s p r i n g . a p p l i c a t i o n . n a m e : {spring.application.name}: spring.application.name:{spring.cloud.client.ip-address}:KaTeX parse error: Expected '}', got 'EOF' at end of input: …on.instance_id:{server.port}}
    Kubernetes 为每一个 Pod 分配一个 IP 地址,此要求可以满足
  • eureka-server 的每一个实例需要知道集群中其他实例的地址和端口号,通过字段 eureka.client.serviceUrl.defaultZone 指定
    请参考 StatefulSet的使用场景 以理解为何选择 StatefulSet 部署 eureka
    请参考 StatefulSet稳定的网络ID 以理解 StatefulSet 如何为其中的 Pod 分配 DNS name
  • eureka-server 的多个实例之间,不能存在端口冲突
    请参考 Kubernetes的网络模型 以理解 Kubernetes 中如何避免端口冲突

我们在 Kubernetes 上部署 eureka-server 时:

  • 使用 StatefulSet 部署 eureka-server,副本数量为 3
  • 使用环境变量覆盖 eureka.client.service-url.defaultZone 取值,将其设置为:
http://cloud-eureka-0.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.test.svc.cluster.local:1111/eureka

具体为什么设置成这些值,参考StatefulSet稳定的网络IDKubernetes的网络模型
在这里插入图片描述

  • 使用环境变量覆盖 eureka.instance.prefer-ip-address 取值,将其设置为:false
  • 为 eureka-server 创建 Ingress,如果没有域名可以不创建Ingress

二、部署eureka-server

本教程将 eureka-server 及其他微服务组件部署到 test 名称空间,并假设您已经创建好了该名称空间,参考 创建名称空间
在 Kuboard 界面中进入 test 名称空间,并点击页头的按钮 创建工作负载,如下图所示:
填写表单:

字段名称填写内容备注
服务类型StatefulSet
服务分层中间件
服务名称eureka
服务描述注册中心
副本数量3
容器名称eureka-server
镜像harbor.hld.com/test/eureka:latestharbor镜像仓库镜像地址
抓取策略Always
环境变量eureka.client.service-url.defaultZone=http://cloud-eureka-0.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.test.svc.cluster.local:1111/eureka eureka.instance.prefer-ip-address=false填入 kuboard 时环境变量名后面不带 =
ServiceNodePort:协议 TCP 服务端口 1111节点端口 31111 容器端口 1111可从节点端口访问
Ingress域名:xxxxx 路由配置: 映射URL / 服务端口 1111可通过域名访问

在这里插入图片描述
在这里插入图片描述

  • 保存、应用。然后等待完成

三、验证

按照上面的部署方式,有如下两种方式可以从浏览器访问 eureka-server 的界面:

  • 使用域名: http://cloud-eureka.ocp.demo.kuboard.cn/
  • 使用节点端口:http://${任意节点的IP地址}:31111
    eureka-server 界面如下图所示:

在这里插入图片描述

Logo

开源、云原生的融合云平台

更多推荐