k8s部署eureka集群
在K8S上部署eureka-server本文参考地址:https://kuboard.cn/learning/k8s-practice/ocp/eureka-server.html#%E7%90%86%E8%A7%A3eureka-server一、资源准备代码参考eureka-server的代码仓库在 Kubernetes 中部署多个 eureka-server 的实例组成集群时,主要有如下考虑因
·
在K8S上部署eureka-server
本文参考地址:https://kuboard.cn/learning/k8s-practice/ocp/eureka-server.html#%E7%90%86%E8%A7%A3eureka-server
一、资源准备
- 代码参考eureka-server的代码仓库
- 构建docker镜像并推送到仓库
在 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稳定的网络ID 、Kubernetes的网络模型。
- 使用环境变量覆盖 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:latest | harbor镜像仓库镜像地址 |
抓取策略 | 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 时环境变量名后面不带 = |
Service | NodePort:协议 TCP 服务端口 1111节点端口 31111 容器端口 1111 | 可从节点端口访问 |
Ingress | 域名:xxxxx 路由配置: 映射URL / 服务端口 1111 | 可通过域名访问 |
- 保存、应用。然后等待完成
三、验证
按照上面的部署方式,有如下两种方式可以从浏览器访问 eureka-server 的界面:
- 使用域名: http://cloud-eureka.ocp.demo.kuboard.cn/
- 使用节点端口:http://${任意节点的IP地址}:31111
eureka-server 界面如下图所示:
更多推荐
已为社区贡献3条内容
所有评论(0)