在 Kubernetes 上使用 Spring Boot Admin 监控副本
Monitoring replicas with Spring Boot Admin on Kubernetes
我在 Kubernetes 上设置了一个 Spring 引导管理客户端并扩展到 3 个副本,但是当我尝试检查实例时管理服务器只显示一个
您需要在 yml 文件中设置参数:
eureka.instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}
为了让 SBA(Spring 引导管理员)了解您的服务的三个实例是不同的,您需要确保每个服务都使用其 "internal IP address" 在 SBA 中注册。
这样做会让 SBA 独立查询每个实例的运行状况,并会导致 spring 为每个 pod 创建唯一的实例 ID。
请注意,使用 k8s 服务名称进行注册将导致 SBA 的健康查询在服务的 pods.
之间实现负载平衡
为此,请将以下内容添加到您的 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。
我在 Kubernetes 上设置了一个 Spring 引导管理客户端并扩展到 3 个副本,但是当我尝试检查实例时管理服务器只显示一个
您需要在 yml 文件中设置参数:
eureka.instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}
为了让 SBA(Spring 引导管理员)了解您的服务的三个实例是不同的,您需要确保每个服务都使用其 "internal IP address" 在 SBA 中注册。
这样做会让 SBA 独立查询每个实例的运行状况,并会导致 spring 为每个 pod 创建唯一的实例 ID。
请注意,使用 k8s 服务名称进行注册将导致 SBA 的健康查询在服务的 pods.
之间实现负载平衡为此,请将以下内容添加到您的 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。