Managed Kubernetes Vs Vanilla Kubernetes - Which one should you pick?
Hello there! At TYNYBAY, while we were working on Kubernetes for the last couple of years, there were quite a few scenarios where we had to choose between vanilla Kubernetes and managed Kubernetes. Here, I'm trying to sum up our experience with both and which one would be a suitable choice for you?
Before jumping into understanding how managed services will help you accelerate your development and technology efforts, let me first try and simplify the definition of vanilla Kubernetes (Kubernetes is often referred to as K8s).
What is Vanilla K8s?
An adjective(informal) meaning of vanilla is "having no special or extra features; ordinary or standard" in our case, vanilla K8s is the basic version of Kubernetes released by CNCF that needs to be configured for any practical use of K8s.
Does Vanilla K8s exist in reality?
After playing around with the native/vanilla K8s version and using it in a few small-scale projects, I feel there is nothing like vanilla K8s that exists in its basic form that can be used for shipping any project to production. It needs a extensive configuration and setup before being used for any production environment. '
For example, any k8s setup would need a set of services to be configured like the etcd, Kube-scheduler, control-manager, sublet, Kube-proxy, and logging/monitoring, without which the vanilla k8s do not practically have any real-world use case. Any production environment would demand the setup of application logs, metrics, storage, network, and traffic routing.
In which scenarios should we go with Vanilla K8s?
If you are building products for the Cloud Native ecosystem and need to customize/configure K8s and build distributions on top of the plain/vanilla K8s. You would also need access to the core of the project codebase of K8s to customize/modify it to suit your customers' needs.
For example, cloud companies like DigitalOcean, AWS, GCP, Azure, Redhat offer Managed K8s Services to help customers accelerate their journey with K8s. They build an easy-to-use visual interface on top of vanilla K8s, which enables anyone with basic knowledge of setting up servers on the cloud, to quickly configure and ship their apps to production using K8s.
So, if you or your company is into building products for the Cloud Native ecosystem and are tightly coupled with K8s, it would make sense for you to invest time in understanding and getting deeper with vanilla K8s.
What are the challenges in working with Vanilla K8s?
Working with vanilla K8s comes with its own challenges:
- Your product/platform is locked in with the custom build version.
- You'll need to update the product/platform every time new updates are rolled in the vanilla K8s.
- Your team will be entirely responsible for all challenges arising from the new updates rolled out. Since vanilla K8s is open-sourced and maintained by CNCF and its community, there won't be any enterprise-grade support.
- Your team would be responsible for container and cluster security.
What is managed K8s, and why should it be your default choice?
A managed K8s or K8s distribution is a forked version of K8s with a pre-configured setup having partial or complete integration with the platform's existing cloud services. The managed service offerings generally support and take care of all the core components of K8s setup like Control Plane, Networking & Security, Cluster Updates, and logging.
As discussed earlier, if you are building any product for the Cloud Native ecosystem, you'd need to work with vanilla K8s. Practically, for any other use case, if you are building B2B SaaS products, consumer tech, e-commerce, blockchain, web 3.0, automation platforms, or any other products outside the Cloud Native ecosystem, the default choice can be Managed Kubernetes.
Advantages of using Managed K8s?
- You don't have to invest too much in the learning curve of K8s, and going with managed K8s would be very costly as you'd need to have K8s experts in-house. In 2022, hiring K8s experts would be the most expensive thing.
- Managed K8s will give you the peace of mind that you'd need to focus on your core product and leave the infrastructure to the platforms offering these solutions. This would help you focus on differentiating your core offering from your competitors.
- Most of the managed K8s distributions receive software conformance (certified k8s) from CNCF that ensures consistency, timely updates, and confirmability.
- Reduces security risks and improves the reliability of the applications.
- Integrates easily with other cloud services offered by the vendors like AWS, GCP & Azure.
The evolution of K8s in the pandemic has reached levels where 50-60% of applications being shipped in the next decade would have K8s as a default choice either directly or indirectly (most cloud platforms use K8s behind the scenes for scaling their services).
Choosing between Managed K8s vs. vanilla K8s is an easier choice, and as discussed, unless you are building a product that is dependent or is deeply integrated with the K8s ecosystem, you can choose managed K8s as a default choice.
In my next article, I'd be covering more on what are the managed K8s services that are available and how do they differentiate, and a checklist that could help you pick a managed K8s service with ease.