Should You Use a Managed Cloud Service for Kubernetes?
Kubernetes was made open source in 2014 and soon after became the number one container orchestration platform, as it’s suitable for deployment, scaling, and management of containerized applications.
Today, several managed cloud-based services are available for Kubernetes. Let’s look at the benefits and drawbacks of using these services.
A managed Kubernetes service provisions and configures the infrastructure without a user having to use their own computing and operating system resources. Most managed cloud-based Kubernetes services use a serverless architecture, so a user does not need to manage any compute nodes.
A managed Kubernetes service on a cloud provider creates the Kubernetes control plane for a user based on parameters they provide. Additional tools, such as the kubectl used to deploy applications, access and manage cluster resources, and view logs, are also pre-installed.
If the user installs Kubernetes, it is a rather complex process. The prerequisites of installing Docker and configuring the network have to be user-initiated. And if a multinode cluster is to be used, configuring and joining each of the nodes to a cluster adds to the complexity.
Integration with other services
A managed cloud service for Kubernetes may be integrated easily with other cloud services from the same provider, including services for storage, networking, monitoring, logging, and load balancing. A user-installed Kubernetes does not have access to these services, especially if installed on a local machine.
A cloud-based managed service for Kubernetes is highly scalable, as compute resources may be provisioned as needed. The scaling itself may be automated. Kubernetes installed on a local machine cannot scale beyond the single node.
All cloud service providers for Kubernetes have regions and availability zones that could make a Kubernetes deployment available to several more users, compared to a deployment at a single data center.
Cloud service providers for Kubernetes are inherently fault-tolerant. Failure of a single node in a cluster does not make the whole cluster unavailable. A Kubernetes deployment on a cloud service is highly available, while a managed cloud service for Kubernetes could have some limitations.
More recent versions of Kubernetes may not be available on a cloud-based Kubernetes service. But a managed Kubernetes service does usually allow for testing a Kubernetes deployment on a newer version before upgrading a production cluster to the new version.
Some resources limits are usually associated with a managed service, such as the number of clusters that may be installed, or the number of nodes per cluster and pods per node.
Some Kubernetes-related features may not be supported on a specific OS. For example, group Managed Service Accounts (gMSAs) for Windows pods and containers may not be supported.
Whether to use a managed cloud-based Kubernetes service or a user-installed Kubernetes service depends on several factors, such as the size of a Kubernetes cluster, the OS used, and whether the most recent Kubernetes version is needed. If the Kubernetes cluster size spans over several nodes, you use an OS other than Windows, and the latest version is not a requirement, a managed cloud-based Kubernetes service offers several advantages.