前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在K8S上部署eureka-server

在K8S上部署eureka-server

作者头像
jwangkun
发布2021-12-23 15:32:43
9620
发布2021-12-23 15:32:43
举报
文章被收录于专栏:John Wong's Blog

理解eureka-server

本章节参考 eureka-server 的 代码仓库,并着重从容器化部署的角度来理解 Spring Cloud eureka-server 以及 OCP 中 eureka-server 的配置文件。

open-capacity-platform/register-center/eureka-server/src/main/resources 目录中包含了 eureka-server 的配置文件,如下所示:

代码语言:javascript
复制
├── application-slave0.yml
├── application-slave1.yml
├── application-slave2.yml
├── application-slave3.yml
├── application.yml
└── bootstrap.yml

其中, application-slave0.ymlapplication-slave1.ymlapplication-slave2.ymlapplication-slave3.yml 为 spring boot 的 4 个 profile 配置,他们之间最重要的差异在于以下两个字段:

  • server.port
  • eureka.client.defaultZone

application.yml 文件中则指定了 application-slave0.yml 为默认 profile。通过 eureka.client.service-url.defaultZone 字段不难看出:

  • 配置文件 slave0 为一组,在运行 eureka-server 单节点时使用(该文件中还有一些特定于测试环境的配置项)
  • 配置文件 slave1/slave2/slave3 为一组,在运行 eureka-server 高可用时使用,为了避免端口冲突,为每一个实例单独定义了 server.port 字段,通过 --spring.profiles.active启动参数为 eureka-server 的实例指定激活的配置文件

确定部署方案

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

  • 每个 eureka-server 需要被赋予一个唯一的 id,通过字段 eureka.instance.instance-id 指定。OCP 中,该字段的配置为 {spring.application.name}: {spring.cloud.client.ip-address}:{spring.application.instance_id: {server.port}} Kubernetes 为每一个 Pod 分配一个 IP 地址,此要求可以满足
  • eureka-server 的每一个实例需要知道集群中其他实例的地址和端口号,通过字段 eureka.client.serviceUrl.defaultZone 指定
  • eureka-server 的多个实例之间,不能存在端口冲突

我们在 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

本教程将 eureka-server 及其他 OCP 组件部署到 ocp 名称空间,并假设您已经创建好了该名称空间,参考 创建名称空间

代码语言:txt
复制
- 等待 eureka-server 完成部署
- 根据您服务器到 hub.docker.com 的网速不同,等候的时间约 1-5 分钟

查看部署结果

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

下一篇: Kubernetes 中 PV 和 PVC 的状态变化→

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 理解eureka-server
  • 确定部署方案
  • 部署eureka-server
  • 查看部署结果
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档