learning/k8s-practice/ocp/eureka-server.md
本文假设您已经完成了 在Kubernetes上部署SpringCloud-OCP 教程的前序步骤:
也可以使用
ocpsample/eureka-server:latest镜像
理解 Spring Cloud Eureka 组件,请参考 Eureka服务注册与发现
本章节参考 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.instance.instance-id 指定。OCP 中,该字段的配置为 ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
eureka.client.serviceUrl.defaultZone 指定
我们在 Kubernetes 上部署 eureka-server 时:
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 取值,将其设置为:falsecloud-eureka.ocp.demo.kuboard.cn
工作负载名.名称空间.集群名字.一级域名 组成,这种命名规则下,只需要将 *.demo.kuboard.cn 的域名解析指向集群 Ingress Controller 的地址就可以,在测试环境中配置新的模块时非常方便。本教程将 eureka-server 及其他 OCP 组件部署到 ocp 名称空间,并假设您已经创建好了该名称空间,参考 创建名称空间
在 Kuboard 界面中进入 ocp 名称空间,并点击页头的按钮 创建工作负载,如下图所示:
填写表单:
| 字段名称 | 填写内容 | 备注 |
|---|---|---|
| <div style="min-width:70px;">服务类型</div> | StatefulSet | |
| 服务分层 | 中间件 | |
| 服务名称 | eureka | |
| 服务描述 | 服务注册中心 | |
| 副本数量 | 3 | |
| 容器名称 | eureka-server | |
| 镜像 | ocpsample/eureka-server:latest | 也可以使用自己构建的镜像 |
| 抓取策略 | Always | |
| 环境变量 | <div style="max-width: 600px;"><span style="color: blue;">eureka.client.service-url.defaultZone=</span>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</div> <div style="max-width: 600px;"><span style="color: blue;">eureka.instance.prefer-ip-address=</span>false</div> | 填入 kuboard 时 |
环境变量名后面不带 = |
| Service | NodePort:
协议 TCP 服务端口 1111节点端口 31111 容器端口 1111 | 可从节点端口访问 |
| Ingress | 域名:cloud-eureka.ocp.demo.kuboard.cn
路由配置: 映射URL / 服务端口 1111 | 可通过域名访问 |
点击 保存 按钮
点击 应用 按钮
点击 完成 按钮
按照上面的部署方式,有如下两种方式可以从浏览器访问 eureka-server 的界面:
eureka-server 界面如下图所示:
</SharingBlock>