This is a fairly high-level question which could end up going quite deep, but below is a quick summary off the top of my head.
You can get a few advantages when running Cassandra in Kubernetes, particularly:
- Easy discovery and network connectivity with other services running on K8s
- Reproducible, repeatable operations and deployments
- A cloud-independent approach to container orchestration, that is supported by all major cloud providers.
- Easy backups, deployments, scaling etc via statefulsets or an operator (see https://github.com/instaclustr/cassandra-operator).
There are also some rough edges with running Cassandra on Kubernetes:
- Failure domain placement with statefulsets is still challenging (v1.12 goes a long way to fixing this - https://kubernetes.io/blog/2018/10/11/topology-aware-volume-provisioning-in-kubernetes/)
- Getting resource constraints correct and working out scheduling in constrained environments can be maddening.
- Only a few, small deployments (that I'm aware of) are running Cassandra in Kubernetes in production. So you will be breaking new ground and encounter problems that haven't been solved before.
- The Cassandra examples in the official Kubernetes documentation is not something you want to take into production.