Kubernetes : Managed versus DIY. Which one to choose?
Kumar Sambhav, AI Engineer, NUS Information Technology
Containerization has brought a lot of ease to dev-ops, scientific computing, AI research and data analytics. Though containerization has its benefits, it becomes really tedious to manage containers for high scale application wherein hundreds if not thousands of containers need to be orchestrated. Kubernetes has emerged as the de-facto choice for container orchestration and management. Kubernetes simplifies a lot of things but has some management overheads of its own. The question which then arises is “Which form of Kubernetes deployment would be suitable for an organization?” To answer this question the following four considerations, have to be made:
- Costs:
There are many critical elements that have to be taken into consideration when an organization is provisioning resources for prediction ready, HA clusters Kubernetes. These include procurement, installation, management, monitoring, upgrading, security, load balancing, and software environment management just to name a few. Hardware isn’t cheap, so is the labour that goes into the installation management and upgrades to be done on the hardware.
- Time
To create a production ready, highly available cluster when all the resources have been provisioned might take up to six weeks. When most of the project teams that need to go to production quickly, they will not appreciate having such delays, as this time could have been used for doing other important things. The trouble does not end with just the first phase, is installation configuration of a cluster. Significant amount of time gets wasted when there is some issue with the cluster which cannot be quickly resolved. Lack of in-house expertise may also lead to further user frustration.
- Expertise:
Once all the resources are in place the monitoring, troubleshooting, and maintaining would require some resources from the experts in the domain of Kubernetes to make sure that the cluster is as per the requirement at all times. Kubernetes is relatively a new technology even for dev-ops resources. Thus, hiding, training and retention of skilled Kubernetes talents becomes an uphill task (a challenge). Even with a few Kubernetes experts in place, getting the issue resolved when the orchestration is of enterprise (large) scale it becomes a tedious task at times. Hence, having a few experts or even a team of experts might not be the most cost-effective solution.
- Lifecycle Management:
Kubernetes is a rapidly evolving technology and hence one can expect bug fixes, patches, upgrades, or security fixes coming in from time to time (seldom) and/or? quite frequently. It is highly recommended to install any bug fixes and security fixes immediately. Keeping the cluster safe and functional should be the prime objective of any production dev-ops team. Even though the expectations are high, but there may not be an in-house Kubernetes team to do these bug fixes.
“Managed” Kubernetes:
Managed Kubernetes is a paradigm or a way of doing things in which a third-party provider takes up the partial or complete responsibility of the setup and operation of the production Kubernetes cluster. Based on the plans “managed”, can refer to anything from dedicated support to hosting preconfigured environments or even in some cases, complete end to end Kubernetes infrastructure and pipelines
Kubernetes already have a set of features which make the clusters scalable, secure, load balanced and self-healing (just to name a few). These features though, require significant manual configuration. Managed solutions can take care of these configurations and maintenance activities so that the end user can focus on the application development rather than the cluster setup.
What to look for in Managed Kubernetes Platforms?
- Production readiness including preconfigured environments help us to go live as quickly as possible. Providers which have preconfigured environments proves to be the most favoured choice when going for managed Kubernetes.
- Independence from cloud platforms and the features that make Environments possible are also important considerations to make.
- Integration for authentication and access control mechanisms that help to bring both the on-prem authentication and any other centralized authentication system which the organization has plans for in near future, is an important security-based consideration to make.
Some of the managed cloud services are Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), and Azure Kubernetes Service (AKS).