hamburger icon close icon

The Kubernetes Dilemma: NetApp Kubernetes Service or DIY in the Cloud?

May 28, 2019

Topics: 7 minute read

Kubernetes is without a doubt the leading container orchestration platform available on the market today. As with any open-source solution, there are several types of Kubernetes available. Although the marketplace offers managed solutions like Amazon Elastic Kubernetes Service (Amazon EKS), Azure Kubernetes Service (AKS), and Google Kubernetes Engine (GKE), you can still opt to build your own Kubernetes clusters in your cloud platform.

But building your own Kubernetes clusters has its pitfalls—and NetApp’s managed Kubernetes service is the top-of-the-line system to bridge the gap between doing all the heavy lifting yourself and letting your cloud service provider do all the work when deploying your Kubernetes in the cloud.

The DIY Approach to Kubernetes Deployment in the Cloud

You can deploy Kubernetes in the cloud using native cloud compute, storage, and network components. For example, in Amazon Web Services (AWS), you can use Amazon Elastic Compute Cloud (Amazon EC2) for deploying cluster master and compute nodes and Amazon Elastic Block Store (Amazon EBS) for persistent storage. You can use container network interface (CNI) plug-ins to create an overlay of the native AWS network layer to allow pods to communicate with each other. Azure Kubernetes Service (AKS) is the managed Kubernetes service from Azure. At the core of this service is Azure/AKS-engine, which is available in an open-source license model for customers who want to deploy a self-managed Kubernetes cluster in Azure by using IaaS resources.

There are myriad pros and cons to a do-it-yourself (DIY) your Kubernetes deployment—at the heart of the matter are flexibility and management. It's not simply about using a little bit of elbow grease at the outset; building a working Kubernetes solution takes long-term planning, with an eye for potential time and cost constraints relative to the added flexibility the deployment will give you.

The Pros of DIY Kubernetes Deployment

Control over the management layer. DIY builds give you full control over the cluster master. Fully managed Kubernetes services in the cloud don’t allow you to configure the cluster master, because that component is handled by the managed service. You have to choose from the available versions supported by the service. When you deploy a Kubernetes cluster on your own in the cloud, a DIY build gives your full access to the cluster master and all the other related management components.

Flexibility of configuration. Deploying your own Kubernetes cluster allows you to configure the cluster and the nodes the way you want, instead of wrestling with the configuration options supported by a managed service. For example, AKS and Amazon EKS support only a subset of the admission controllers available in Kubernetes, and users of those services can’t modify them.

Granular management. In the DIY deployment model, you have more control over the deployment and management of your cluster. For example, you can deploy multiple node pools or choose to have different instance types for different nodes. These options aren’t available with many managed Kubernetes services.

The Cons of DIY Kubernetes Deployment

Deployment time and effort. Planning, designing, and deploying your own Kubernetes cluster in the cloud takes significantly more time than opting for a ready-to-use, fully managed service with a predefined configuration. Managed Kubernetes services in the cloud take care of the control plane of the cluster, including its configuration, high availability, and scalability. It would take enterprises weeks to deploy a DIY cluster compared with the couple of hours required for end-to-end configuration of a Kubernetes managed service like Amazon EKS or AKS.

Ongoing maintenance and management. In a DIY approach, organizations with less expertise in Kubernetes have a steep learning curve in the ongoing management of the cluster. Certain configurations such as those for backup, self-healing, dynamic scaling, and cluster upgrade are required to keep your Kubernetes environment running. There are several possible pitfalls to trying to do all of this without support from a cloud service provider.

Security and monitoring. Managed Kubernetes services offer out-of-the-box integration with cloud-native security and monitoring solutions. For example, Amazon EKS can be integrated with AWS CloudTrail to track cluster and user activity, API calls, and more. For security and identity management, AWS and Azure offer integration with AWS IAM and Azure Active Directory for their respective managed services. While deploying a DIY Kubernetes cluster in the cloud, you must configure these integrations manually—a complex process involving many steps.

What Is NetApp Kubernetes Service?

NetApp® Kubernetes Service helps you deploy Kubernetes as a service on the cloud platforms of your choice. It offers a platform-agnostic approach to deployment while enabling you to host your workloads in highly scalable, secure, and manageable Kubernetes clusters.

NetApp Kubernetes Service allows you to deploy a managed Kubernetes cluster directly from NetApp Cloud Central to whichever cloud service provider you choose.

Cloud agnostic. Managed cloud service providers for Kubernetes are limited to offering services in their respective cloud platforms. But NetApp Kubernetes Service can work across cloud service providers, and you can use the same NetApp Cloud Central interface to manage your Kubernetes cluster lifecycle.

Trident. Although containers are ephemeral, effective storage solutions need to provide persistent storage to stateful applications hosted in those containers. Trident, an open-source project from NetApp, helps to bridge this gap by enabling the provisioning and management of persistent volumes from NetApp Cloud Volumes Service as well as NetApp Cloud Volumes ONTAP®. Trident is available as an out-of-the-box service integrated with AKS; it helps provision NFS volumes for persistent storage with no additional overhead.

Flexibility and scalability. With NetApp Kubernetes Service, in addition to deploying on your cloud of choice, you have the flexibility to choose between modern object-based storage and traditional NFS/SMB storage. You can easily scale the number of nodes in your cluster from the NetApp Kubernetes Service dashboard to cater to peak utilization needs.

Kubernetes-native solution availability. NetApp Kubernetes Service allows easy deployment of software solutions such as Istio, Prometheus, Helm, and Autoscaler, which can enhance the functionality of a Kubernetes cluster. These solutions are accessible directly from the NetApp Kubernetes Service dashboard. From there, you can orchestrate the deployment directly from the GUI without having to delve into complex CLI-based configurations.

A Single, Comprehensive Solution

NetApp Kubernetes Service makes life easier if you’re contemplating Kubernetes deployment but don’t want to take care of the complexity of cluster deployments and management. You’ll get more choice of which clouds to use and services to integrate. Let’s explore some of the advantages offered by NetApp Kubernetes Service over a DIY Kubernetes deployment approach.

Faster time to market. NetApp Kubernetes Service offers a three-click deployment approach to spin up Kubernetes clusters in the cloud. You aren’t bogged down by the complexities of compute, storage, and network configurations, because they’re orchestrated by the solution.

Ease of use. You can use a single dashboard to manage all operational tasks related to the NetApp Kubernetes Service cluster. The dashboard handles clusters that use native cloud services like Amazon EC2 or clusters that are integrated with other managed services such as Amazon EKS.The cloud-native solutions gallery currently contains 17 solutions that can be deployed directly to the cluster from the dashboard.

Multicloud benefits. Unlike cloud services available currently, NetApp Kubernetes Service has multicloud Kubernetes deployment capabilities. In a DIY setup, users need to log in to multiple cloud interfaces, which can be difficult to manage across multiple clusters.

Cluster federation. NetApp Kubernetes Service allows you to federate multiple clusters across geographies to manage them as a single entity, thereby aiding scalability and availability of your workloads across multiple clusters.

Monitoring and management. Alerts to new updates or critical issues are sent directly to you through the NetApp Kubernetes Service dashboard. You have the option to upgrade a cluster with the click of a button.

Persistent storage through Cloud Volumes Service. Cloud Volumes Service for AWS offers a fully managed cloud-based file service that can be accessed over NFS or SMB protocols. NetApp Kubernetes Service uses Trident to make Cloud Volumes Service easily accessible to containers, so that applications can benefit from the service’s superior storage performance. NetApp Kubernetes Service comes with the added bonus of other Cloud Volumes Service features, such as efficient, instant NetApp Snapshot copies, cloning, and high availability deployment.

Microservice integration. NetApp Kubernetes Service enables cross-cluster microservice application deployment by using Istio service mesh, which handles end-to-end traffic management, data encryption, and service monitoring.

DIY Just Got Easier with NetApp Kubernetes Service

With NetApp Kubernetes Service, NetApp combines its trusted cloud data services with the utility of Kubernetes deployment, and packages them together in an easy-to-use, enterprise-class service. Because of its flexibility, multicloud capabilities, high-performance storage through Cloud Volumes Service, and integration with popular open-source solutions out of the box, it offers greater added value than deploying a costly, time-consuming DIY Kubernetes cluster in the cloud.

Try it Out

Sign up for a free 30-day trial today to explore NetApp Kubernetes Service and get the added advantages of using Cloud Volumes Service for AWS with Kubernetes.

Technical Marketing Engineer