【问题标题】:Monitoring replicas with Spring Boot Admin on Kubernetes在 Kubernetes 上使用 Spring Boot Admin 监控副本
【发布时间】:2019-07-04 18:54:42
【问题描述】:

我在 Kubernetes 上设置了一个 Spring Boot 管理客户端并扩展到 3 个副本,但是当我尝试检查实例时,管理服务器只显示一个

【问题讨论】:

    标签: java spring-boot spring-boot-admin


    【解决方案1】:

    为了让 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-deregistration 设置为 true,您将收到不健康实例的通知 - 使用此设置,实例将在关闭时从 SBA 中注销。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • Simon,我在我的项目中使用 Eureka,我在同一个端口有 3 个 K8S 副本。
      猜你喜欢
      • 1970-01-01
      • 2020-05-06
      • 2019-10-13
      • 2015-03-07
      • 2021-12-10
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多