We went through the journey of deploying Apache Druid clusters on Kubernetes(K8s) and created a druid-operator (https://github.com/druid-io/druid-operator). This talk introduces the druid kubernetes operator, how to use it to deploy druid clusters and how it works under the hood. We will share how we use this operator to deploy Druid clusters at Splunk.
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. Druid is a complex stateful distributed system and a Druid cluster consists of multiple web services such as Broker, Historical, Coordinator, Overlord, MiddleManager etc each deployed with multiple replicas. Deploying a single web service on K8s requires creating few K8s resources via YAML files and it multiplies due to multiple services inside of a Druid cluster. Now doing it for multiple Druid clusters (dev, staging, production environments) makes it even more tedious and error prone.
K8s enables creation of application (such as Druid) specific extension, called “Operator”, that combines kubernetes and application specific knowledge into a reusable K8s extension that makes deploying complex applications simple.
13. Druid on K8S
Router, Broker, Historical, Coordinator, Overlord, MiddleManager
Lots of K8S Resources...
◆ 6 StatefulSets
◆ 6 Services
◆ 6 + 1 ConfigMaps
◆ and more....
14. Druid on K8S: Operator Approach
Can we write another application that assumes domain
knowledge of both, Druid and K8S, which can be given a "Druid
Cluster Spec" and that application in turn talks to K8S and
creates/submits all the necessary YAML resource required to
manifest the "Druid Cluster".
We can deploy that application on K8S itself.
15. Druid on K8S: Operator Approach
◆ General and Easy to Reuse/Share
◆ Community Adoption and Hardening
◆ Manage "Lifecycle" not only "Deployment" of cluster
◆ Coded in a general purpose programming language
33. Known Issues: Further Manual Intervention
for example you updated something , which resulted in updation
of StatefulSet, Service i.e. a resource/field that can not be
updated, then operator would be stuck.
36. Time for questions
36
Thank you!
Apache Druid is an independent project of The Apache Software Foundation. More information can be found at https://druid.apache.org.
Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
37. Dates: November 10, 2020
druidsummit.org
37
Register Now for
the Next Druid
Virtual Summit