为了账号安全,请及时绑定邮箱和手机立即绑定

在 Kubernetes 上使用 Spring Boot Admin 监控副本

在 Kubernetes 上使用 Spring Boot Admin 监控副本

犯罪嫌疑人X 2023-03-09 15:11:38
我在 Kubernetes 上设置了一个 Spring Boot Admin Client 并扩展到 3 个副本,但是当我尝试检查实例时,Admin Server 只显示一个
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

为了让 SBA(Spring Boot Admin)了解您的服务的三个实例是不同的,您需要确保每个实例都使用其“内部 IP 地址”在 SBA 中注册。


这样做将使 SBA 独立查询每个实例的健康状况,并导致 spring 为每个 pod 创建唯一的 instance-id。


请注意,使用 k8s 服务名称进行注册将导致 SBA 的健康查询在服务的 pod 之间进行负载平衡。


为此,请添加application.yml以下内容:


spring:

  boot.admin.client:

    url: http://<k8s-service-name-and-port>

    instance:

      name: <service-name>

      service-base-url: http://${K8S_POD_IP}:8080

      management-base-url: http://${K8S_POD_IP}:8081

    auto-deregistration: true

拥有:

  • K8S_POD_IP是一个环境变量,其中包含必须可从 SBA 访问的 pod 的 IP 地址——这是 SBA 将使用的地址来查询您的服务实例的健康状况

  • spring.boot.admin.client.url是当您单击服务实例时 SBA 的 UI 将使用的 URL——此 URL 应指向 k8s 的服务

  • spring.boot.admin.client.management-base-url- SBA 使用它来监控每个服务的健康状况,每个实例都应该是唯一的,并且应该可以从 SBA 访问

  • 如果您没有设置auto-deregistrationtrue每当您推出更新或缩减服务时,您将收到不健康实例的通知 - 使用此设置,实例将在关闭时从 SBA 取消注册。


查看完整回答
反对 回复 2023-03-09
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

你需要在 yml 文件中设置参数:

eureka.instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}


查看完整回答
反对 回复 2023-03-09
  • 2 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信