此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring Cloud Kubernetes 5.0.1spring-doc.cadn.net.cn

领导选举

Spring Cloud Kubernetes 的领导者选举机制使用 Kubernetes ConfigMap 实现了 Spring Integration 的领导者选举 API。spring-doc.cadn.net.cn

多个应用实例竞争领导权,但领导权仅授予其中一个。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

当获得领导权时,领导者应用将收到一个 OnGrantedEvent 应用事件,其中领导权为 Contextspring-doc.cadn.net.cn

应用会定期尝试获取领导权,领导权授予首个请求者。spring-doc.cadn.net.cn

领导者将保持其领导地位,直至其从集群中被移除或主动放弃领导权。spring-doc.cadn.net.cn

当领导权被移除时,前一领导者将收到 OnRevokedEvent 应用事件。spring-doc.cadn.net.cn

移除后,集群中的任何实例均可成为新的领导者,包括原领导者。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

要将其包含在您的项目中,请添加以下依赖项。<br/>Fabric8 领导者实现spring-doc.cadn.net.cn

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-kubernetes-fabric8-leader</artifactId>
</dependency>

要指定用于领导者选举的配置映射(configmap)名称,请使用以下属性。spring-doc.cadn.net.cn

spring.cloud.kubernetes.leader.config-map-name=leader

领导者选举信息贡献者

Spring Cloud Kubernetes Leader 包含一个 InfoContributor,该组件将领导者选举信息添加到 Spring Boot 的 /actuator/info 端点中。此贡献者提供当前领导者的相关信息,包括领导者 ID、角色以及当前应用实例是否为领导者。spring-doc.cadn.net.cn

Example output:spring-doc.cadn.net.cn

{
  "leaderElection": {
    "leaderId": "my-app-pod-1",
    "role": "my-role",
    "isLeader": true
  }
}

您可以将此 InfoContributor 禁用,方法是在 application.[properties | yaml] 中将 management.info.leader.enabled 设置为 falsespring-doc.cadn.net.cn

management.info.leader.enabled=false