Class KubernetesNodeDiscovery
- java.lang.Object
-
- io.github.dhruv1110.jcachex.distributed.discovery.KubernetesNodeDiscovery
-
- All Implemented Interfaces:
NodeDiscovery
public class KubernetesNodeDiscovery extends Object implements NodeDiscovery
Kubernetes-based node discovery implementation using the official Kubernetes Java client.This implementation uses the official Kubernetes Java client library to discover cache nodes running in the same cluster. It supports both in-cluster service account authentication and external kubeconfig.
Key Features:
- Official Client: Uses the official Kubernetes Java client library
- Service Account Support: Automatically uses in-cluster service account
- Kubeconfig Support: Can use external kubeconfig for development
- Label Selectors: Filter pods/services by labels
- Namespace Aware: Discover nodes in specific namespaces
- Health Monitoring: Integrates with Kubernetes readiness probes
Usage Examples:
// In-cluster discovery using service account NodeDiscovery k8sDiscovery = NodeDiscovery.kubernetes() .namespace("default") .serviceName("jcachex-cluster") .labelSelector("app=jcachex,version=1.0") .build(); // External discovery using kubeconfig NodeDiscovery k8sDiscovery = NodeDiscovery.kubernetes() .kubeConfigPath("/path/to/kubeconfig") .namespace("jcachex") .serviceName("cache-service") .build();
- Since:
- 1.0.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.github.dhruv1110.jcachex.distributed.discovery.NodeDiscovery
NodeDiscovery.BaseDiscoveryBuilder<T extends NodeDiscovery.BaseDiscoveryBuilder<T>>, NodeDiscovery.DiscoveredNode, NodeDiscovery.DiscoveryStats, NodeDiscovery.DiscoveryType, NodeDiscovery.KubernetesDiscoveryBuilder, NodeDiscovery.NodeDiscoveryListener, NodeDiscovery.NodeHealth
-
-
Constructor Summary
Constructors Constructor Description KubernetesNodeDiscovery(NodeDiscovery.KubernetesDiscoveryBuilder config)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addNodeDiscoveryListener(NodeDiscovery.NodeDiscoveryListener listener)
Adds a listener for node discovery events.CompletableFuture<NodeDiscovery.NodeHealth>
checkNodeHealth(String nodeId)
Checks the health of a specific node.CompletableFuture<Set<NodeDiscovery.DiscoveredNode>>
discoverNodes()
Discovers all available nodes in the cluster.NodeDiscovery.DiscoveryStats
getDiscoveryStats()
Gets discovery statistics.NodeDiscovery.DiscoveryType
getDiscoveryType()
Gets the discovery type.void
removeNodeDiscoveryListener(NodeDiscovery.NodeDiscoveryListener listener)
Removes a listener for node discovery events.CompletableFuture<Void>
start()
Starts the node discovery service.CompletableFuture<Void>
stop()
Stops the node discovery service.
-
-
-
Constructor Detail
-
KubernetesNodeDiscovery
public KubernetesNodeDiscovery(NodeDiscovery.KubernetesDiscoveryBuilder config)
-
-
Method Detail
-
start
public CompletableFuture<Void> start()
Description copied from interface:NodeDiscovery
Starts the node discovery service.- Specified by:
start
in interfaceNodeDiscovery
- Returns:
- CompletableFuture that completes when discovery is started
-
stop
public CompletableFuture<Void> stop()
Description copied from interface:NodeDiscovery
Stops the node discovery service.- Specified by:
stop
in interfaceNodeDiscovery
- Returns:
- CompletableFuture that completes when discovery is stopped
-
discoverNodes
public CompletableFuture<Set<NodeDiscovery.DiscoveredNode>> discoverNodes()
Description copied from interface:NodeDiscovery
Discovers all available nodes in the cluster.- Specified by:
discoverNodes
in interfaceNodeDiscovery
- Returns:
- CompletableFuture containing discovered nodes
-
checkNodeHealth
public CompletableFuture<NodeDiscovery.NodeHealth> checkNodeHealth(String nodeId)
Description copied from interface:NodeDiscovery
Checks the health of a specific node.- Specified by:
checkNodeHealth
in interfaceNodeDiscovery
- Parameters:
nodeId
- the ID of the node to check- Returns:
- CompletableFuture containing the node's health status
-
addNodeDiscoveryListener
public void addNodeDiscoveryListener(NodeDiscovery.NodeDiscoveryListener listener)
Description copied from interface:NodeDiscovery
Adds a listener for node discovery events.- Specified by:
addNodeDiscoveryListener
in interfaceNodeDiscovery
- Parameters:
listener
- the listener to add
-
removeNodeDiscoveryListener
public void removeNodeDiscoveryListener(NodeDiscovery.NodeDiscoveryListener listener)
Description copied from interface:NodeDiscovery
Removes a listener for node discovery events.- Specified by:
removeNodeDiscoveryListener
in interfaceNodeDiscovery
- Parameters:
listener
- the listener to remove
-
getDiscoveryType
public NodeDiscovery.DiscoveryType getDiscoveryType()
Description copied from interface:NodeDiscovery
Gets the discovery type.- Specified by:
getDiscoveryType
in interfaceNodeDiscovery
- Returns:
- the discovery type
-
getDiscoveryStats
public NodeDiscovery.DiscoveryStats getDiscoveryStats()
Description copied from interface:NodeDiscovery
Gets discovery statistics.- Specified by:
getDiscoveryStats
in interfaceNodeDiscovery
- Returns:
- discovery statistics
-
-