The emergence of Kubernetes as an industry standard for container orchestration platforms is recognized as one of the key technology trends. Kubernetes ensures that containers are orchestrated and managed consistently across environments and has accelerated the development ecosystem.
Kubernetes will soon be pervasive similar to Linux with key trends as:
- Kubernetes as hybrid cloud engine – the backbone for a hybrid-cloud architecture as it is a common PaaS platform supported by each cloud service provider
- Platform-as-a-service for Microservices & Cloud-native Architecture – a consistent abstraction layer for containerized microservices across all environments
- Everything Kubernetes – Platform-as-a-service for Machine Learning Models, Database Engines, eCommerce Systems, Content Management Systems, and the list is endless with most of the technologies getting aligned to Kubernetes ecosystem
With Kubernetes as the demand of the hour, this article is an effort to summarize various solution options for choosing the right Kubernetes management and deployment strategy. The below diagram depicts different solution choices available in the current landscape, which is evolving with new market innovations:
Managed Kubernetes Service
Before we get into details of Managed (or even fully-managed), be clear on what part of Kubernetes components will be managed:
- Control plane – the primary interface for interfacing the underlying Kubernetes system using Kubernetes API
- Data plane – consists of worker nodes configured with runtime engine for containers including persistence volume
There are two broader categories to divide vendor offerings in this area:
- Cloud-provider Managed Kubernetes – Using the cloud-service provider-managed service for Kubernetes. Primarily used when you want to keep your enterprise cloud strategy simple (aligned with cloud provider), not concerned with cloud vendor lock-in, and do not want an overhead of managing Kubernetes.
- Vendor-managed Kubernetes – Using a specialized vendor to manage Kubernetes for you with the flexibility to choose the cloud provider as needed. Primarily used when you do not want any cloud-provider vendor lock-in but still do not want an overhead of managing Kubernetes. Also, provides the flexibility to use a hybrid model (on-premises + Cloud) or installation on bare-metal servers.
The below image demonstrates the division of responsibilities when using Managed Kubernetes Service and though different vendors offer different boundaries, it is primarily based on the shared responsibility principle:
Cloud Provider-managed Kubernetes
These are all key Kubernetes service offered by prevalent Cloud-service providers:
- Google Kubernetes Engine (GKE)
- Azure Kubernetes Service (AKS)
- Amazon Elastic Kubernetes Service (EKS)
- IBM Cloud Kubernetes Service (IKS)
- Oracle Container Engine for Kubernetes (OKE)
- Alibaba Cloud Container Service for Kubernetes (ACK)
These are key vendors offering fully-managed Kubernetes service with also offering for Kubernetes management platform as product:
While serverless is a misnomer in the context of Kubernetes (you still need to make selection & manage elements of Kubernetes ecosystem), Serverless reduces the entire complexity of Kubernetes Control Plane management. As different vendors provide a different spectrum of services, it will still be based on a shared responsibility model (such as providing/uploading container images, security, logging, etc.).
Serverless offerings can be broadly classified into two areas:
- Serverless Container Management Service – essentially run containers without worrying about orchestration and management with minimal awareness about Kubernetes
- Serverless Kubernetes – Kubernetes awareness required with minimal dependency on managing infrastructure and you pay for the workload and without the overhead of capacity modeling (using autoscaling)
Serverless Container Management Service
- Azure Container Instances
- AWS ECS on Fargate
- Google Cloud Run, Google Cloud Run for Anthos
- Alibaba Elastic Container Instance (ECI)
Self-managed Kubernetes is for matured organizations with experience Kubernetes team and their current needs are not being met by out-of-the-box solutions. It definitely provides more flexibility, fine-grained control, customized solution with access to many more advanced features with the overhead of managing the complexity.
There are broadly two options for self-managed Kubernetes:
- Custom Kubernetes – Using the opensource Kubernetes and use available ecosystem of tools to configure Kubernetes control & data plane components
- Kubernetes Management Platforms – using out-of-the-box Kubernetes management platform, with the flexibility to customize. For self-managed, Kubernetes Management Platform is the most preferred path because of its capabilities for multi-cloud or hybrid-cloud Kubernetes support, multi-vendor management, avoidance of vendor lock-in, and single pane of glass for management.
Key Kubernetes Management Platforms are:
- SUSE Rancher
- Red Hat OpenShift
- VMWare Tanzu
- Docker Enterprise (now Mirantis)
- Canonical Kubernetes (Ubuntu)
To conclude, these solution options for Kubernetes management provide great choices and there are no good or bad choices as it is often contextual and dependent on various factors. As the market is evolving with many new solution offerings, it is an exciting field to watch for.
- Gartner – How Public Cloud Kubernetes Services Compare?
- Gartner – Prepare to Deploy and Operate Multiple Kubernetes Clusters at Scale
- Aqua – Which Kubernetes Management Platform is Right for You?
- Pulumi – Kubernetes Ecosystem