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-deregistration
为true
每当您推出更新或缩减服务时,您将收到不健康实例的通知 - 使用此设置,实例将在关闭时从 SBA 取消注册。
TA贡献1829条经验 获得超7个赞
你需要在 yml 文件中设置参数:
eureka.instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}
添加回答
举报