public class KubernetesLeaderElector extends Object
KubernetesLeaderElector
in kubernetes. LeaderElector.run()
is a
blocking call. It should be run in the IO executor, not the main thread. The lifecycle is bound
to single leader election. Once the leadership is revoked, as well as the KubernetesLeaderElector.LeaderCallbackHandler.notLeader()
is called, the LeaderElector.run()
will finish. To
start another round of election, we need to trigger again.
LeaderElector.run()
is responsible for creating the leader ConfigMap and continuously
update the annotation. The annotation key is LEADER_ANNOTATION_KEY
and the value is in
the following json format. metadata: annotations: control-plane.alpha.kubernetes.io/leader:
'{"holderIdentity":"623e39fb-70c3-44f1-811f-561ec4a28d75","leaseDuration":15.000000000,"acquireTime":"2020-10-20T04:06:31.431000Z","renewTime":"2020-10-22T08:51:36.843000Z","leaderTransitions":37981}'
Modifier and Type | Class and Description |
---|---|
static class |
KubernetesLeaderElector.LeaderCallbackHandler
Callback handler for leader election.
|
Modifier and Type | Field and Description |
---|---|
static String |
LEADER_ANNOTATION_KEY |
Constructor and Description |
---|
KubernetesLeaderElector(io.fabric8.kubernetes.client.NamespacedKubernetesClient kubernetesClient,
KubernetesLeaderElectionConfiguration leaderConfig,
KubernetesLeaderElector.LeaderCallbackHandler leaderCallbackHandler) |
KubernetesLeaderElector(io.fabric8.kubernetes.client.NamespacedKubernetesClient kubernetesClient,
KubernetesLeaderElectionConfiguration leaderConfig,
KubernetesLeaderElector.LeaderCallbackHandler leaderCallbackHandler,
ExecutorService executorService) |
Modifier and Type | Method and Description |
---|---|
static boolean |
hasLeadership(KubernetesConfigMap configMap,
String lockIdentity) |
void |
run() |
void |
stop() |
@VisibleForTesting public static final String LEADER_ANNOTATION_KEY
public KubernetesLeaderElector(io.fabric8.kubernetes.client.NamespacedKubernetesClient kubernetesClient, KubernetesLeaderElectionConfiguration leaderConfig, KubernetesLeaderElector.LeaderCallbackHandler leaderCallbackHandler)
@VisibleForTesting public KubernetesLeaderElector(io.fabric8.kubernetes.client.NamespacedKubernetesClient kubernetesClient, KubernetesLeaderElectionConfiguration leaderConfig, KubernetesLeaderElector.LeaderCallbackHandler leaderCallbackHandler, ExecutorService executorService)
public void run()
public void stop()
public static boolean hasLeadership(KubernetesConfigMap configMap, String lockIdentity)
Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.