Brian Jackson - Fotolia
When deciding whether to adopt Kubernetes, consider your installation options, whether you want to run workloads in a public cloud or build a private cloud, and how you intend to get developers on board. Once you've thought through all of this, consider what Kubernetes management platform will work best for your organization.
Kubernetes is an application that runs containers in the cloud and uses Linux to manage container resources. It automates the deployment, scaling, maintenance and operation of those containers.
Kubernetes requires a container runtime, an OS on which to run, a cloud provider -- if you decide to run it on a public cloud -- and networking tools that enable nodes to communicate with one another. When you download Kubernetes, you download a multitude of components, including an API server made up of a collection of APIs and kubelet. The controller, scheduler and client come as default applications that you can replace.
DIY Kubernetes pros and cons
If you know how to build Kubernetes, you might not need to purchase a commercial distribution, such as Red Hat OpenShift, VMware Heptio or Rancher. Downloading so-called vanilla Kubernetes comes with a variety of benefits. You get the freedom to customize it to your specifications and immediate updates. It also saves on cost, because open source Kubernetes is free to download.
However, using Kubernetes without a commercial management system in place means you must deal with any bugs or problems by yourself. Commercial distributions often trail the latest release by a few months, which means you have less troubleshooting to do if you choose to use one, as opposed to building Kubernetes on your own.
Additionally, Kubernetes often breaks compatibility with features marked "alpha" or "beta" without warning when it updates. Most components have their own release cycles, and not all versions of such components are compatible with all versions of Kubernetes. So, be prepared to refactor often.
If you hope to learn the ins and outs of Kubernetes, building the system from scratch provides an in-depth understanding of how the system fits together and how best to support a production Kubernetes cluster.
Review your installation options
To install Kubernetes, you can use Minikube, kubeadm, kubespray or kops.
Minikube works best for installing Kubernetes as a developer sandbox. It won't work for a production environment, because it can only install one single-node Kubernetes cluster on a local host, but it supports multiple OSes.
The Kubernetes cluster lifecycle team produces kubeadm, which makes it a reliable installation option. It enables you to easily deploy multinode Kubernetes clusters in a straightforward way. Kubeadm runs on a variety of core technologies, including Go, bare metal and bare VM.
If you prefer Ansible, you can use kubespray -- formerly known as kargo -- for installation. Kubespray can deploy Kubernetes on several cloud services -- such as AWS or Azure -- and on bare metal. Kubespray also supports a variety of Linux distributions, as well as continuous integration.
Kops features high availability for clusters and includes AWS resources, such as Virtual Private Cloud networking and Elastic Block Store. Kops only functions on public clouds such as AWS and Google Compute Engine, though, so it doesn't work on bare metal.
Cloud-specific vs. cloud-agnostic
You can either tailor Kubernetes for a specific cloud environment or use a cloud-agnostic version.
All major cloud providers offer their own native Kubernetes service. If you're attached to a specific cloud provider, such as Google Cloud, for example, then it makes sense to use that provider's version of Kubernetes -- Google Kubernetes Engine, in this case -- rather than running it on a separate platform. This simplifies and streamlines Kubernetes usage.
However, many organizations run multi-cloud environments and aren't tied to one cloud provider. In this case, a cloud-agnostic approach enables you to use the same version of Kubernetes across an entire environment. You can achieve cloud-agnosticism by crafting Kubernetes from scratch or by using a third-party, open source management system, such as Containership or Platform9.
The DevOps perspective
Many different departments in an organization weigh in during Kubernetes adoption considerations, including infrastructure operations teams, application teams, architecture teams and business leaders.
To make adoption worthwhile, Kubernetes should make it faster and easier for developers to deploy their applications.
Developer tool integration is a critical factor when it comes to getting developers motivated to use Kubernetes. DevOps tools -- as part of your cloud migration strategy -- should be familiar, easy to use and easy to integrate into a current workflow.
Evaluate Kubernetes management platforms
Kubernetes is just one piece of the puzzle. A commercial Kubernetes management platform should include integrated marketplaces, modern development patterns, self-service applications or applications as a service, automated operations and updates, default security, immutable infrastructure and Linux OS.
It should also provide consistent, automated deployment to the cloud. Consider production readiness and management ease when making this decision.
Evaluate individual features of different platforms. Certain tools might work better on different distributions, and if you're attached to a specific tool, make sure the platform you've chosen works well with that tool.