On October 24th, the Percona Kubernetes Squad held the first Ask-me-Anything (AMA) session to address inquiries regarding the utilization of Kubernetes for database deployment. This blog post will outline the top three questions raised during the session and provide thorough responses from our team of experts.
Q1: When is it appropriate to use Kubernetes for databases, and when is it not recommended?
There are certain scenarios where Kubernetes is well-suited for database deployment and others where it is not the optimal choice.
The good
Ideal use cases for Kubernetes and databases include small databases that require repeatable tasks, such as continuous integration and deployment (CICD) or developer-driven tasks.
Another case is where you are struggling with automating your day-to-day routine, and your custom scripts are maintained by a separate team now. Operators and Kubernetes would come in handy here as they take all this complexity away and remove toil.
The bad
On the other hand, Kubernetes is not designed to handle large databases or mainframes. Although it might still function in such cases, it is not recommended to utilize Kubernetes for these scenarios.
Additionally, a manual approach that resists embracing the core principles of Kubernetes and instead insists on applying traditional methods for database management is not suitable.
The ugly
Lack of Kubernetes expertise but the desire to use it anyway may play a dirty trick. Even Operators hide the complexity of managing Kubernetes primitives and databases, minimal knowledge of the Cloud Native ecosystem is still required to run it successfully.
Joe Brockmeier gave a talk on this topic earlier this year at Open Source Summit North America in Vancouver – “Are Containers Ready for Production Databases?”. This talk covers this topic exactly.
Q2: How does Kubernetes interact with Jenkins automation?
Kubernetes seamlessly integrates with Jenkins, as well as other automation tools that can interact with it. Since Kubernetes operates in a declarative manner and maintains a state, the choice of tools often aligns with its principles. For instance, popular options include Terraform and GitOps tools like ArgoCD, which adhere to the declarative approach.
At Percona, our team has successfully utilized Jenkins alongside Kubernetes, ensuring smooth automated testing of our Operators and other products.
Q3: What performance issues, if any, does Kubernetes introduce?
Kubernetes performance is heavily influenced by the underlying hardware. Running a database on a Kubernetes cluster should deliver similar performance, with less than a 1% difference when compared to running it on standalone hardware.
However, Kubernetes does introduce additional layers, particularly in storage and networking.
To achieve optimal performance, it is recommended to keep the networking layer as simple as possible, avoiding tunneling at all costs.
For storage, Kubernetes provides various tools that leverage local storage volumes, such as NVMe, to achieve performance that is comparable to bare-metal deployments. Tools like OpenEBS (local path or Mayastor) allow you to do that.
Join the Percona Kubernetes Squad
Join the Percona Kubernetes Squad – a group of database professionals at the forefront of innovating database operations on Kubernetes within their organizations and beyond. The Squad is dedicated to providing its members with unwavering support as we all navigate the cloud-native landscape.