Find file Copy path
100eec6 Aug 18, 2017
2 contributors

Users who have contributed to this file

@islinwb @ahmetb
35 lines (21 sloc) 2.12 KB

Cassandra on Kubernetes Custom Seed Provider:

Within any deployment of Cassandra a Seed Provider is used for node discovery and communication. When a Cassandra node first starts it must discover which nodes, or seeds, for the information about the Cassandra nodes in the ring / rack / datacenter.

This Java project provides a custom Seed Provider which communicates with the Kubernetes API to discover the required information. This provider is bundled with the Docker provided in this example.

Configuring the Seed Provider

The following environment variables may be used to override the default configurations:

KUBERNETES_PORT_443_TCP_ADDR kubernetes.default.svc.cluster.local The hostname of the API server
KUBERNETES_PORT_443_TCP_PORT 443 API port number
CASSANDRA_SERVICE cassandra Default service name for lookup
POD_NAMESPACE default Default pod service namespace
K8S_ACCOUNT_TOKEN /var/run/secrets/ Default path to service token


If no endpoints are discovered from the API the seeds configured in the cassandra.yaml file are used.

Provider limitations

This Cassandra Provider implements SeedProvider. and utilizes SimpleSnitch. This limits a Cassandra Ring to a single Cassandra Datacenter and ignores Rack setup. Datastax provides more documentation on the use of SNITCHES. Further development is planned to expand this capability.

This in affect makes every node a seed provider, which is not a recommended best practice. This increases maintenance and reduces gossip performance.