本章节参考 eureka-server 的 代码仓库,并着重从容器化部署的角度来理解 Spring Cloud eureka-server 以及 OCP 中 eureka-server 的配置文件。
open-capacity-platform/register-center/eureka-server/src/main/resources
目录中包含了 eureka-server 的配置文件,如下所示:
├── application-slave0.yml
├── application-slave1.yml
├── application-slave2.yml
├── application-slave3.yml
├── application.yml
└── bootstrap.yml
其中, application-slave0.yml
,application-slave1.yml
,application-slave2.yml
,application-slave3.yml
为 spring boot 的 4 个 profile 配置,他们之间最重要的差异在于以下两个字段:
而 application.yml
文件中则指定了 application-slave0.yml
为默认 profile。通过 eureka.client.service-url.defaultZone
字段不难看出:
server.port
字段,通过 --spring.profiles.active
启动参数为 eureka-server 的实例指定激活的配置文件在 Kubernetes 中部署多个 eureka-server 的实例组成集群时,主要有如下考虑因素:
eureka.client.serviceUrl.defaultZone
指定 我们在 Kubernetes 上部署 eureka-server 时:
使用 StatefulSet 部署 eureka-server,副本数量为 3
使用 OCP eureka-server 的 application-slave0.yml 这个 profile
使用环境变量覆盖 取值,将其设置为: ::: tip 通过 cloud-eureka-0.cloud-eureka 也可以访问到对应的 POD,但是此处必须使用完整域名,否则 eureka-server 将不被认为是 available :::
使用环境变量覆盖 取值,将其设置为:
为 eureka-server 创建 Ingress,并分配域名
本教程将 eureka-server 及其他 OCP 组件部署到 ocp
名称空间,并假设您已经创建好了该名称空间,参考 创建名称空间
ocp
名称空间,并点击页头的按钮 创建工作负载
,如下图所示:
填写表单:
字段名称 填写内容 备注 服务类型 StatefulSet 服务分层 中间件 服务名称 eureka 服务描述 服务注册中心 副本数量 3 容器名称 eureka-server 镜像 ocpsample/eureka-server:latest 也可以使用自己构建的镜像 抓取策略 Always 环境变量 eureka.client.service-url.defaultZone=http://cloud-eureka-0.cloud-eureka.ocp.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.ocp.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.ocp.svc.cluster.local:1111/eureka
eureka.instance.prefer-ip-address=false 填入 kuboard 时
环境变量名后面不带 =
Service NodePort:
协议 TCP
服务端口 1111
节点端口 31111
容器端口 1111
可从节点端口访问 Ingress 域名:cloud-eureka.ocp.demo.kuboard.cn
路由配置: 映射URL /
服务端口 1111
可通过域名访问 - 等待 eureka-server 完成部署
- 根据您服务器到 hub.docker.com 的网速不同,等候的时间约 1-5 分钟
按照上面的部署方式,有如下两种方式可以从浏览器访问 eureka-server 的界面: